Alteração de permissões no formato simbólico#
O formato simbólico permite especificar quais permissões devem ser acrescentadas, removidas ou definidas para cada categoria de usuário.
Sua estrutura geral é:
chmod [ugoa][+-=][rwxXst] arquivo
Ou:
Os elementos que podem ser utilizados no modo simbólico do comando chmod estão listados na Tabela 3.
Elemento |
Significado |
|---|---|
|
Proprietário |
|
Grupo |
|
Outros usuários |
|
Todas as categorias |
|
Acrescenta permissões |
|
Remove permissões |
|
Define exatamente as permissões indicadas para a categoria selecionada |
|
Leitura |
|
Escrita |
|
Execução ou travessia de diretório |
|
Execução condicional |
|
Bits setuid ou setgid, conforme a categoria selecionada |
|
Sticky bit |
O operador +: acrescentar permissões#
Considere um arquivo inicialmente com modo 644:
-rw-r--r--
Para acrescentar permissão de execução ao proprietário:
chmod u+x relatorio.txt
O resultado será equivalente a:
-rwxr--r--
O modo passa de 644 para 744.
O operador + acrescenta as permissões indicadas sem remover as demais permissões da categoria selecionada.
Outros exemplos:
chmod g+w arquivo.txt
chmod o+r arquivo.txt
chmod a+x script.sh
Esses comandos, respectivamente, acrescentam escrita para o grupo, leitura para outros e execução para todas as categorias.
O operador -: remover permissões#
Considere um arquivo com modo 755:
-rwxr-xr-x
Para remover a permissão de escrita do proprietário:
chmod u-w script.sh
O modo passa a ser 555, correspondente a:
-r-xr-xr-x
Outros exemplos:
chmod g-w arquivo.txt
chmod o-r arquivo.txt
chmod a-x script.sh
O operador - remove apenas as permissões indicadas nas categorias selecionadas.
O operador =: definir permissões#
O operador = é utilizado quando se deseja definir exatamente as permissões de uma ou mais categorias.
Por exemplo:
chmod u=rw,g=r,o= arquivo.txt
O resultado será:
-rw-r-----
O proprietário terá leitura e escrita, o grupo terá somente leitura e os outros usuários não terão permissões básicas.
Outro exemplo:
chmod g=rx diretorio/
Define leitura e execução para o grupo, removendo a permissão de escrita dessa categoria.
Diferentemente de + e -, o operador = substitui o conjunto de permissões básicas da categoria especificada. Os bits especiais exigem atenção própria e não devem ser confundidos com as permissões rwx.
Modificar várias categorias em um único comando#
As expressões simbólicas podem ser combinadas com vírgulas:
chmod u=rwx,g=rx,o=r arquivo.txt
O resultado equivale ao modo 754.
Também é possível combinar operações incrementais:
chmod u+x,g-w,o-r arquivo.txt
Esse comando acrescenta execução ao proprietário, remove escrita do grupo e remove leitura de outros usuários.
As operações separadas por vírgulas são processadas na ordem especificada.
A permissão especial X#
A letra maiúscula X tem um significado diferente de x: ela acrescenta execução somente se o objeto for um diretório ou se alguma categoria já possuir permissão de execução para aquele arquivo.
Exemplo:
chmod -R a+rX documentos/
Esse comando acrescenta leitura a todos e execução condicional. Para os diretórios, a execução permite a travessia; para arquivos que já possuem execução em alguma categoria, a execução é acrescentada às categorias selecionadas.
Essa forma é útil para tornar uma árvore de diretórios legível e acessível sem transformar indiscriminadamente todos os arquivos regulares em executáveis.
Cuidado: chmod -R altera muitos objetos. Examine previamente o conteúdo do diretório e utilize a recursividade somente quando ela for necessária.
Comparando os dois formatos#
Objetivo |
Formato octal |
Formato simbólico |
|---|---|---|
Definir modo |
|
|
Acrescentar execução ao proprietário |
|
|
Remover escrita do grupo |
Exige definir o modo completo desejado |
|
Dar leitura, escrita e execução ao proprietário |
|
|
Remover todas as permissões básicas de outros |
Definir um modo octal com o terceiro dígito igual a |
|
A principal diferença é que o formato octal normalmente define o conjunto completo de permissões básicas, enquanto o formato simbólico permite expressar alterações relativas ao estado atual.
A documentação do GNU Coreutils detalha essas regras e a interpretação dos modos numéricos e simbólicos.