O que são os modos octal e simbólico do chmod?

chmod define as permissões de um arquivo no Linux, macOS e em outros sistemas Unix, e aceita essas permissões em duas notações. Um modo octal, como 755, tem um dígito para o proprietário, o grupo e todos os demais, sendo 4 para leitura, 2 para escrita e 1 para execução. Um modo simbólico, como u=rwx,g=rx,o=rx, nomeia as classes (u proprietário, g grupo, o outros, a todos) e as permissões (r, w, x).

Os modos simbólicos também podem alterar permissões em vez de defini-las todas: u+x adiciona a permissão de execução ao proprietário, go-w remove a permissão de escrita do grupo e dos outros, e g=u copia as permissões do proprietário para o grupo. Um modo octal sempre define todas as permissões, portanto o resultado octal de uma alteração depende do modo que o arquivo tinha antes.

Descrição da ferramenta

Esta ferramenta converte modos do chmod entre as notações octal e simbólica. Escolha a notação de origem e a de destino ou deixe a origem em detecção automática: insira 755 para obter u=rwx,g=rx,o=rx, ou insira um modo simbólico para obter o valor octal. Para alterações como u+x ou a+X, insira o modo atual do arquivo e veja o modo que o chmod deixaria nele. Você também pode colar uma string de permissões de ls -l, como -rwxr-xr-x, ou um comando chmod completo.

Exemplos

Octal Simbólico ls -l Uso típico
644 u=rw,go=r -rw-r--r-- Arquivos comuns
755 u=rwx,go=rx -rwxr-xr-x Scripts, programas e diretórios
600 u=rw,go= -rw------- Arquivos privados, como chaves SSH
2775 u=rwx,g=rwxs,o=rx drwxrwsr-x Diretórios compartilhados que mantêm o grupo
1777 a=rwx,+t drwxrwxrwt /tmp e outras pastas temporárias compartilhadas
4755 u=rwxs,go=rx -rwsr-xr-x Programas como passwd

Recursos

  • Converte octal em simbólico e simbólico em octal, com um botão de troca para alternar a direção
  • Detecta a notação do modo inserido ou converte a partir da notação escolhida
  • Aplica alterações relativas como u+x, go-w, a=r,u+w, g=u e a+X a um modo atual
  • Lida com setuid, setgid e sticky bit (s, t e modos octais de 4 dígitos)
  • Escreve o modo simbólico por extenso (u=rwx,g=rx,o=rx) ou de forma compacta (u=rwx,go=rx)
  • Lê e escreve strings de permissões de ls -l, incluindo s, S, t e T
  • Aceita comandos colados, como sudo chmod -R 755 dir
  • Indica o caractere exato quando um modo é inválido

Como funciona

Um modo octal é lido como até quatro dígitos: o primeiro, opcional, contém setuid (4), setgid (2) e sticky (1), enquanto os outros três contêm as permissões do proprietário, do grupo e dos outros. Um modo simbólico é lido cláusula por cláusula, seguindo a gramática POSIX, e aplicado ao modo atual da mesma forma que o chmod do GNU no Linux:

  • + adiciona permissões, - remove-as e = define-as e limpa o restante para as classes nomeadas.
  • X adiciona a permissão de execução apenas a diretórios e a arquivos que já tenham execução para alguém.
  • s define setuid com u e setgid com g. t define o sticky bit com o, a ou sem classe.
  • Sem uma classe, como em +x, a alteração aplica-se a todos, exceto aos bits bloqueados pela umask.
  • Em diretórios, setuid e setgid permanecem como estão, a menos que o modo os nomeie, como em g-s.

A saída simbólica define cada bit explicitamente, portanto, em um arquivo, produz o mesmo resultado independentemente do modo que o arquivo tinha antes. O sticky bit é escrito como uma cláusula +t separada porque tanto o chmod do GNU quanto o BSD aceitam-no nesse formato.

Dicas

  • Use a+X com chmod -R para tornar os diretórios pesquisáveis sem tornar todos os arquivos executáveis.
  • chmod 755 em um diretório não remove setgid com o chmod do GNU. Use chmod 00755 ou g-s para removê-lo.
  • O Ansible e muitos arquivos de configuração esperam um zero inicial, como em 0755. Ative "Sempre mostrar 4 dígitos octais" para obtê-lo.
  • Um . ou + após uma string de ls -l indica um contexto SELinux ou uma ACL. Use getfacl para ver as entradas da ACL, que não são exibidas pelo modo.