chmod 1777
chmod 1777 define rwxrwxrwt: todos listam, entram e criam arquivos no diretório, e o sticky bit (o t) faz com que um arquivo só possa ser apagado ou renomeado pelo dono dele, pelo dono do diretório ou pelo root.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Sim | Sim | 7 |
| Grupo (g) | Sim | Sim | Sim | 7 |
| Outros (o) | Sim | Sim | Sim | 7 |
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, alterar e executar | Listar, entrar e criar itens; apagar ou renomear só os próprios |
| Outros (o) | Ler, alterar e executar | Listar, entrar e criar itens; apagar ou renomear só os próprios |
Bits especiais deste modo
- sticky (1000): num diretório, só o dono do arquivo, o dono do diretório ou o root podem apagar ou renomear aquele arquivo. O Linux o ignora em arquivos comuns.
Dados
| Octal | 1777 |
|---|---|
| Simbólico | rwxrwxrwt |
| ls -l, arquivo | -rwxrwxrwt |
| ls -l, diretório | drwxrwxrwt |
| Comando simbólico equivalente | chmod a=rwx,+t |
| 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 | sticky |
Quando usar
- Diretórios temporários graváveis por todos: /tmp, /var/tmp e /dev/shm são drwxrwxrwt no Linux. Sem o t, qualquer usuário apagaria os arquivos temporários de outro ou trocaria por arquivos seus.
- Pastas de entrega em máquinas com vários usuários, onde as pessoas deixam arquivos umas para as outras mas não podem remover os dos outros.
Quando não usar
- Em arquivos comuns: o Linux ignora o sticky bit em arquivos. Ele só tem efeito em diretórios.
- Como substituto de controle de acesso: todos continuam lendo qualquer arquivo cujo próprio modo permita. Programas que gravam em área temporária comum devem criar arquivos com mktemp (modo 600).
- Em pastas de equipe onde as pessoas editam os arquivos umas das outras: use um grupo e 2775.
Comandos
sudo chmod 1777 /srv/scratch
sudo chmod a=rwx,+t /srv/scratch # mesmo resultadostat -c '%a %A %n' /srv/scratch # Linux (stat do GNU): 1777 drwxrwxrwt
stat -f '%Mp%Lp %Sp %N' /srv/scratch # macOS e BSDAplicando numa árvore inteira
Aplique 1777 só no diretório compartilhado, nunca de forma recursiva. Os arquivos lá dentro mantêm o modo que quem criou definiu; aplicar 1777 neles deixaria cada um gravável e executável por todos.
Perguntas frequentes
- O que significa o t em rwxrwxrwt?
- É o sticky bit (octal 1000), mostrado na posição de execução dos outros. O t minúsculo indica que a execução também está ligada; o T maiúsculo, que o sticky bit está ligado sem execução para os outros.
- Qual permissão o /tmp deve ter?
- 1777, dono root. Se o /tmp foi alterado por engano, restaure com sudo chmod 1777 /tmp.
- Como ligar só o sticky bit?
- chmod +t pasta liga sem mexer nos outros bits; chmod -t pasta desliga. Na forma numérica, o 1 inicial de 1777 é o sticky bit.
Revisado em por Arielton Oberek.