💾Alterando permissões e donos de arquivos e diretórios

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 Permissionamento - ls -l, 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

Bits de permissão de um arquivo/diretório

Criando um usuário/grupo para teste

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.

Adicionando um usuário com adduser

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.

Criação de diretório e arquivo para testes

Utilize o comando su - nomedousuario para trocar de usuário. Isso é útil para testar a aplicação das permissões na prática.

Trocando de usuário com su

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

Grupos em que os usuários test-user e user estão inseridos

Mudando permissões de arquivos - chmod

O comando chmod (change file mode bits) permite alterar os bits de permissão de um arquivo. Isso pode ser feito de duas formas:

via strings de permissão

O formato para execução é chmod string_de_permissoes arquivo, em que string_de_permissoes é uma string no formato:

Formato da configuração das permissões via string

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.

Exemplo de remoção da permissão de leitura

via octais

Cada conjunto de 3 bits (RWX, nessa ordem), pode ser representado por um número na base 8 (octal), conforme imagem abaixo.

Formato da configuração das permissões via números octais

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.

Notas gerais

  • 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.

Alterando donos - chown

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).

Mudando dono e grupo de um arquivo

Notas gerais

  • Para mudar o usuário/grupo recursivamente em um diretório, execute sudo chmod nomedousuario:nomedogrupo -R diretorio

Last updated