Uma boa maneira para entender as permissões no Linux é ter contato com elas utilizando o comando ls -lh
.
Ao usar o comando, o output será algo como:
-rw-r--r-- 1 usuario grupo 12K mai 20 00:00 file.txt
E ele pode ser entendido da seguinte forma:
Primeira coluna:
T UUU GGG OOO
| ||| ||| |||
| ||| ||| +++- Permissões para OUTROS usuários
| ||| +++----- Permissões para o GRUPO
| +++--------- Permissões para o USUÁRIO dono
+------------- Tipo
Cada PERMISSÃO pode assumir o valor de:
r read
w write
x execution
- none
Já quanto o TIPO, os valores mais comuns são:
d diretório
- arquivo "qualquer"
A segunda coluna é entendida como a quantidade de links ao arquivo/diretório
As outras colunas são bem representativas, não vou detalhar para evitar criar um artigo muito longo
Caso queira ver outros tipos que podem ser listados confira a Wiki do Arch Linux.
Logo, detalhando a primeira coluna de file.txt
:
- rw- r-- r--
| ||| ||| |||
| ||| ||| +++- Outros usuários têm permissão de leitura
| ||| +++----- Usuários no grupo têm permissão de leitura
| +++--------- O dono tem permissão de leitura e escrita
+------------- É um arquivo comum
Permissões podem ser alteradas utilizando o comando change mode, chmod
.
Exemplo:
$ chmod <usuario><operador><permissao> <arquivo>
Os valores aceitos em cada um dos itens acima podem ser:
<usuario> u user | g group | o others | a all
<operador> + add | - remove | = define |
<permissao> r read | w write | x execute |
Exemplos:
# Considerando que exista um arquivo file com as permissões:
# -rw-r--r--
chmod u+x file # -rwxr--r--
chmod g+x file # -rwxr-xr--
chmod a-x file # -rw-r--r--
É possível também usar a base octal para alterar permissões.
Permissão Octal Binário
- 0 000
--x 1 001
-w- 2 010
-wx 3 011
r– 4 100
r-x 5 101
rw- 6 110
rwx 7 111
Acho desnecessário decorar a permissão e a sua correspondência em base octal, é muito mais fácil associar a permissão pela contagem de bits.
Exemplos:
# Considerando que exista um arquivo file com as permissões:
# -rw-r--r--
chmod 100 file # ---x------
chmod 010 file # ------x---
chmod 644 file # -rw-r--r--
chmod 755 file # -rwxr-xr-x