Recentemente, um colega me pediu para usar chmod
letras em vez de números. Além da óbvia vantagem de legibilidade, existe algum motivo específico para usar letras em vez de números?
Responder1
A chmod
notação simbólica é mais refinada em comparação com a notação octal, permitindo a modificação de bits de modo específicos, deixando outros bits de modo intactos.
A notação simbólica consiste em três componentes:
chmod [references][operator][modes] file
O references
consiste em uma combinação das letras ugoa
, que especificam qual usuário o acesso ao arquivo file
será modificado: o usuário que o possui ( u
), outros usuários do grupo do arquivo ( g
), outros usuários que não estão no grupo do arquivo ( o
), ou todos os usuários ( a
). Se o references
componente for omitido, o padrão será todos os usuários, mas apenas as permissões permitidas pelo umask
serão modificadas.
Isso +
operator
faz com que os bits de modo de arquivo especificados sejam adicionados aos bits de modo de arquivo existentes de cada arquivo; -
faz com que sejam removidos; e =
faz com que eles sejam adicionados e bits não especificados sejam removidos, exceto setuid
bits setgid
definidos para diretórios, a menos que especificado explicitamente.
O mode
consiste em uma combinação das letras rwxXst
, que correspondem a ler ( r
), escrever ( w
), executar (ou procurar diretórios) ( x
), executar/pesquisar apenas se o arquivo for um diretório ou já tiver permissão de execução para algum usuário ( X
), setuid
ou setgid
(dependendo das referências especificadas) ( s
) e sinalizador de exclusão restrita ou sticky bit ( t
). Alternativamente, mode
pode consistir em uma das letras ugo
, caso em que mode
corresponde às permissões atualmente concedidas ao proprietário ( u
), membros do grupo do arquivo ( g
) ou permissões de usuários em nenhuma das categorias anteriores ( o
).
Exemplos
Supondo que a permissão definida para file
seja0764/-rwxrw-r--
Remova a permissão de outros usuários que não estão no grupo do arquivo:
Octal:
chmod 760 file
Observe como as permissões existentes deixadas inalteradas devem ser repetidas ao usar a notação octal.
Simbólico:
chmod o-rwx file
Com notação simbólica, as permissões de arquivo existentes não importam.
Definir setuid
:
Octal:
chmod 4764 file
Simbólico:
chmod u+s file
Definir setgid
:
- Octal:
chmod 2764 file
- Simbólico
chmod g+s file
Responder2
Usar as letras permite ativar e desativar bits individuais sem alterar os outros bits.
Suponha que eu tenha o seguinte diretório:
drwxrwsr-x 6 f261-01a g261-01a 4096 Sep 12 17:51 /home/teams/261/f261-01a
Se eu quiser desativar a permissão de leitura para outros e quiser usar números, posso fazer isso rapidamente chmod 751
. Exceto que acabei de desativar o bit setgid no diretório. Ops.
Se, no entanto, eu usar chmod o-r
, apenas desativo o bit de leitura desejado e o bit setgid no diretório permanece definido.
Também é útil se você deseja ativar setuid, setgid ou sticky bits em um arquivo ou diretório. Especialmente se você fizer isso tão raramente, terá dificuldade em lembrar qual bit é qual no 4º octeto.
Então, depende do que você está fazendo. Ainda prefiro usar números quando estou apenas definindo permissões e não me importo com o que há para começar. Mas se você estiver alternando bits individuais, a notação de letras será muito mais fácil.