Skip to content

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

Quais bits de permissão cada classe tem
QuemLeitura (4)Escrita (2)Execução (1)Dígito
Dono (u)SimSimSim7
Grupo (g)SimSimSim7
Outros (o)SimSimSim7

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.

O que cada classe pode fazer com um arquivo e com um diretório
QuemNum arquivoNum diretório
Dono (u)Ler, alterar e executarListar, entrar, criar, apagar e renomear itens
Grupo (g)Ler, alterar e executarListar, entrar e criar itens; apagar ou renomear só os próprios
Outros (o)Ler, alterar e executarListar, 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

Representações deste modo
Octal1777
Simbólicorwxrwxrwt
ls -l, arquivo-rwxrwxrwt
ls -l, diretóriodrwxrwxrwt
Comando simbólico equivalentechmod a=rwx,+t
umask padrão que gera esse modoNenhum dos umasks comuns; defina explicitamente com chmod
Como o Git registra um arquivo assim100755 (executável)
Bits especiaissticky

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

Aplicar em um arquivo ou diretório
sudo chmod 1777 /srv/scratch
sudo chmod a=rwx,+t /srv/scratch   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' /srv/scratch     # Linux (stat do GNU): 1777 drwxrwxrwt
stat -f '%Mp%Lp %Sp %N' /srv/scratch   # macOS e BSD

Aplicando 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.