chmod 2755
chmod 2755 define rwxr-sr-x: o dono tem acesso total, grupo e outros leem e executam, e o bit setgid faz um programa rodar com o grupo do arquivo ou faz os itens novos de um diretório herdarem o grupo dele.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Sim | Sim | 7 |
| Grupo (g) | Sim | Não | Sim | 5 |
| Outros (o) | Sim | Não | Sim | 5 |
Execução muda de sentido conforme o tipo. Num arquivo, deixa o kernel rodá-lo como programa. Num diretório, é a permissão de busca: entrar (cd) e alcançar os arquivos de dentro pelo nome. Leitura num diretório só lista os nomes.
| Quem | Num arquivo | Num diretório |
|---|---|---|
| Dono (u) | Ler, alterar e executar | Listar, entrar, criar, apagar e renomear itens |
| Grupo (g) | Ler e executar | Listar, entrar e abrir itens |
| Outros (o) | Ler e executar | Listar, entrar e abrir itens |
Bits especiais deste modo
- setgid (2000): o programa roda com o grupo do arquivo; num diretório, arquivos e subpastas novos herdam o grupo do diretório.
Dados
| Octal | 2755 |
|---|---|
| Simbólico | rwxr-sr-x |
| ls -l, arquivo | -rwxr-sr-x |
| ls -l, diretório | drwxr-sr-x |
| Comando simbólico equivalente | chmod u=rwx,g=rxs,o=rx |
| umask padrão que gera esse modo | Nenhum dos umasks comuns; defina explicitamente com chmod |
| Como o Git registra um arquivo assim | 100755 (executável) |
| Bits especiais | setgid |
Quando usar
- Diretórios onde um dono publica arquivos que precisam ter um grupo específico (por exemplo uma pasta de relatórios lida por um grupo de análise) enquanto os membros do grupo só leem.
- Programas que precisam dos privilégios de um grupo e nada mais. O Debian instala o crontab como 2755 root:crontab para ele gravar no diretório de spool; o Fedora usa um crontab setuid root (4755). Um programa setgid concede bem menos que um setuid root.
Quando não usar
- Scripts: o Linux ignora setuid e setgid em scripts interpretados (execve(2)), então o bit não faz nada além de confundir auditorias.
- Programas que não foram escritos para rodar com privilégio elevado: qualquer falha que deixe o usuário gravar arquivos ou rodar comandos faz isso com os direitos do grupo.
- Pastas compartilhadas onde o grupo precisa gravar: use 2775.
Comandos
sudo chmod 2755 /srv/reports
sudo chmod u=rwx,g=rxs,o=rx /srv/reports # mesmo resultadostat -c '%a %A %n' /srv/reports # Linux (stat do GNU): 2755 drwxr-sr-x
stat -f '%Mp%Lp %Sp %N' /srv/reports # macOS e BSDAplicando numa árvore inteira
O chmod -R colocaria o mesmo modo em arquivos e diretórios. Defina os diretórios como 2755 e os arquivos como 644 separadamente:
sudo find /srv/reports -type d -exec chmod 2755 {} +
sudo find /srv/reports -type f -exec chmod 644 {} +Perguntas frequentes
- O que significa rwxr-sr-x?
- Dono rwx, grupo r-x com o bit setgid (o s substitui o x), outros r-x. Em octal isso é 2755.
- Qual a diferença entre s e S?
- O s minúsculo indica setgid com execução para o grupo. O S maiúsculo indica setgid sem execução para o grupo, o que num programa costuma ser erro.
- Por que meu bit setgid sumiu?
- O Linux zera setuid e setgid quando um processo sem privilégio grava no arquivo, e o chown também zera. O chmod ainda descarta o setgid num arquivo de um grupo do qual você não participa.
Revisado em por Arielton Oberek.