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:

\[\begin{split}\text{chmod} \begin{Bmatrix} \text{u} \\ \text{g} \\ \text{o} \\ \text{a} \end{Bmatrix} \begin{Bmatrix} + \\ - \\ = \end{Bmatrix} \begin{Bmatrix} \text{r} \\ \text{w} \\ \text{x} \\ \text{X} \\ \text{s} \\ \text{t} \end{Bmatrix} \text{arquivo}\end{split}\]

Os elementos que podem ser utilizados no modo simbólico do comando chmod estão listados na Tabela 3.

Tabela 3 Associação entre elemento e função dos#

Elemento

Significado

u

Proprietário

g

Grupo

o

Outros usuários

a

Todas as categorias

+

Acrescenta permissões

-

Remove permissões

=

Define exatamente as permissões indicadas para a categoria selecionada

r

Leitura

w

Escrita

x

Execução ou travessia de diretório

X

Execução condicional

s

Bits setuid ou setgid, conforme a categoria selecionada

t

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 644

chmod 644 arquivo

chmod u=rw,go=r arquivo

Acrescentar execução ao proprietário

chmod 744 arquivo, se o modo anterior era 644

chmod u+x arquivo

Remover escrita do grupo

Exige definir o modo completo desejado

chmod g-w arquivo

Dar leitura, escrita e execução ao proprietário

chmod 700 arquivo, se as demais categorias devem perder permissões

chmod u=rwx arquivo

Remover todas as permissões básicas de outros

Definir um modo octal com o terceiro dígito igual a 0

chmod o= arquivo

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.