Alterando permissões e donos de arquivos e diretórios
Last updated
Last updated
Nesse tópico serão explicados comandos para alterar permissões de arquivos e diretórios em um sistema GNU/Linux.
Conforme explicado na seção , há três tipos principais de privilégios para cada um dos três tipos de objetos (usuário - dono, grupo e outros usuários): Leitura (R), Escrita (W) e Execução (X). Abaixo está uma imagem geral da leitura dos bits de permissão via ls -l
.
Volte na seção caso seja necessário para revisar - esse conhecimento será necessário para entender o tópico corrente
Vamos criar um usuário para praticar os comandos abaixo. No Ubuntu, isso pode ser feito através do utilitário adduser
, passando o nome do usuário que queremos criar. Essa ação necessita de privilégios root.
Também podemos criar um diretório/arquivos para teste, conforme imagem abaixo. Não se preocupe em entender o chmod, pois ele será detalhado nas seções mais abaixo. Agora é apenas importante entender que esses comandos irão criar um diretório acessível por quaisquer usuários e grupos.
Utilize o comando su - nomedousuario
para trocar de usuário. Isso é útil para testar a aplicação das permissões na prática.
Note que o o usuário test-user não pertence ao grupo user. Logo, arquivos criados para o grupo principal do usuário user não terão
O comando chmod
(change file mode bits) permite alterar os bits de permissão de um arquivo. Isso pode ser feito de duas formas:
O formato para execução é chmod string_de_permissoes arquivo
, em que string_de_permissoes é uma string no formato:
Abaixo está um exemplo da remoção da permissão de leitura para outros usuários do arquivo arquivo-acessivel, que a princípio tem essa permissão. Como o usuário test-user não é o usuário user nem pertence ao grupo user, sua permissão será a do terceiro octeto (others).
Logo, ao executarmos chmod o-r arquivo-acessivel
via usuário user, efetivamente o usuário test-user não terá mais acesso de leitura.
Cada conjunto de 3 bits (RWX, nessa ordem), pode ser representado por um número na base 8 (octal), conforme imagem abaixo.
Cada octeto pode receber um valor de 0 a 7, e seu significado depende da soma dos números associados a cada permissão: 4 - leitura; 2 - escrita; 1 - execução. Por exemplo, um octeto que tenha o valor 3 terá as permissões 2 + 1 = escrita e execução.
No exemplo abaixo, as permissões padrão do arquivo-acessivel não permitiam escrita de outros usuários (664). Na linha echo modified >> arquivo-acessivel
, estamos tentando escrever a palavra modified para o arquivo (ver tópico principal Redirecionando inputs e outputs), enquanto estamos logados com o usuário test-user. Isso não é possível, pois o usuário test-user não é o dono do arquivo nem está no grupo dos usuários que têm permissão de alterar o arquivo.
Logo após mudar a permissão do arquivo para 666, demos permissão RW para todos os usuários, e portanto, o usuário test-user conseguirá escrever.
Para realizar a ação de mudar recursivamente as permissões dos arquivos, utilize chmod string_ou_octais -R diretorio/
Há permissões especiais avançadas, como o SUID, GUID e Sticky Bit, cada um com suas características, aplicações e possíveis problemas de segurança, mas elas serão tratadas em tópicos futuros.
O utilitário chown
permite alterar o usuário e o grupo do arquivo. Essa ação, entretanto, necessita de privilégios root.
A sintaxe principal é chown nomedousuario:nomedogrupo arquivo
. Na imagem abaixo há um exemplo quebrando esse comando em dois: :nomedogrupo
e nomedousuario:
.
Note que ao alterarmos o usuário/grupo para test-user, o usuário user não terá mais acesso de escrita devido às permissões para outros usuários (4 - Leitura).
Para mudar o usuário/grupo recursivamente em um diretório, execute sudo chmod nomedousuario:nomedogrupo -R diretorio