
O permissionamento de arquivos e diretórios no GNU/Linux é baseado em usuários e grupos com permissões ou restrições de leitura, escrita e execução.
Todo arquivo/diretório possui um dono e um grupo. Podemos setar permissões para o dono, para o grupo e para quem não for dono nem fizer parte do grupo. Chamamos este terceiro de “outros”.
Portanto, ao setarmos permissão para arquivos/diretórios, o faremos considerando 3 partes:
- permissão para o dono (owner)
- permissão para o grupo (group)
- permissão para outros (others)
As possíveis permissões são:
- r = leitura
- w = escrita
- x = execução
- – = ausência de permissão
Vejamos a permissão de um diretório fictício chamado “teste07”:
1 2 3 4 5 6 |
drwx rw- ---. 2 root impress 4096 Jun 3 13:27 teste07 | | | | |_ Grupo do diretório | | | |________ Dono do diretório | | |________________ Permissão de Outros | |____________________ Permissão do Grupo |________________________ Permissão do Dono |
Neste caso:
- Dono: chama-se “root” e possui permissão “rwx” (total);
- Grupo: chama-se “impress” e possui permissão rw- (ler e escrever, mas não executar).
- Outros: Possui permissão “—”, ou seja, não pode ler, escrever ou executar.
No exemplo anterior, o dono do diretório poderá ler o conteúdo existente, gravar novos arquivos e executar eventuais scripts. O grupo poderá ler conteúdo existente e gravar novos arquivos, mas não poderá executar scripts. Outros não possui qualquer permissão.
Observação: O amigo leitor pode ter notado que o primeiro conjunto de permissão, no caso a permissão do owner, está “drwx” e não apenas “rwx”. Esse “d” não faz parte da permissão. É um caractere que indica se tratar de um diretório. Se fosse um arquivo seria “-rwx” e se fosse um symlink seria “lrws”. |
Alterando permissões com chmod:
Alteramos permissões de arquivos/diretórios com o comando chmod. A sintaxe do comando leva a permissão que será dada ao dono, ao grupo e a outros, além do arquivo alvo. Exemplo:
1 |
chmod 750 arquivo |
Neste exemplo o “arquivo” receberá permissão 755. Note que são 3 números; um para o dono (7), um para o grupo (5) e um para outros (0). Esses números representam uma permissão. As permissões são:
Permissão | Decimal |
— | 0 |
–x | 1 |
-w- | 2 |
-wx | 3 |
r– | 4 |
r-x | 5 |
rw- | 6 |
rwx | 7 |
Exemplos:
1 |
chmod 444 diretorio |
1 |
chmod 700 diretorio |
1 |
chmod 750 diretorio |
Aplicando permissão recursivamente:
Podemos setar uma permissão recursivamente com o parâmetro “-R” de forma que todo o diretório e subdiretórios e arquivos também recebam esta permissão. Exemplo:
1 |
chmod R 750 diretorio |
Alterando owner/group com chown:
Caso queira mudar o dono ou o grupo de um arquivo/diretório, basta utilizar o comando chown. A sintaxe do comando é esta:
1 |
chown novo-usuario:novo-grupo arquivo |
Exemplo:
1 |
chown wil:impress fotos-praia |
Alterando owner/group recursivamente:
Caso queira alterar o owner e group recursivamente, basta utilizar o parâmetro “-R”.
1 |
chown -R wil:impress fotos-praia |
Conclusão
Como vimos, o permissionamento no GNU/Linux não é um bicho de 7 cabeças. Considerando owner e group, pode-se setar permissões ou restrições de forma que esse arquivo/diretório será acessado somente pelas pessoas corretas para fazer somente aquilo que a permissão lhes permite. Compreender ao menos a teoria do permissionamento do GNU/Linux é fundamental para todos que trabalham com esta plataforma.
Qualquer dúvida que venha surgir no amigo leitor, estou a disposição.
Abraços!