Permissões chmod: todos os modos comuns explicados
O chmod define quem pode ler, gravar e executar um arquivo com três dígitos octais, um para o dono, um para o grupo e um para os demais, em que leitura vale 4, escrita 2 e execução 1: 755 significa rwxr-xr-x e 644 significa rw-r--r--.
Diretórios e programas
| Modo | Simbólico | Uso típico |
|---|---|---|
| chmod 777 | rwxrwxrwx | Todos podem tudo; quase sempre um erro |
| chmod 775 | rwxrwxr-x | Diretórios que uma equipe edita junto |
| chmod 770 | rwxrwx--- | Diretório de equipe fechado para os demais |
| chmod 755 | rwxr-xr-x | Padrão para diretórios, scripts e programas |
| chmod 750 | rwxr-x--- | Grupo lê, outros ficam de fora |
| chmod 744 | rwxr--r-- | Só o dono executa, outros leem |
| chmod 711 | rwx--x--x | Outros atravessam, mas não listam |
| chmod 700 | rwx------ | Só o dono: ~/.ssh, scripts privados |
Arquivos comuns
| Modo | Simbólico | Uso típico |
|---|---|---|
| chmod 666 | rw-rw-rw- | Arquivo gravável por todos; dispositivos como /dev/null |
| chmod 664 | rw-rw-r-- | Arquivo que o grupo edita e todos leem |
| chmod 660 | rw-rw---- | Dados do grupo, fechados para os demais |
| chmod 644 | rw-r--r-- | Padrão para arquivos comuns e conteúdo web |
| chmod 640 | rw-r----- | Configs e logs que um grupo de serviço lê |
| chmod 600 | rw------- | Só o dono: chaves SSH, credenciais |
Somente leitura e bloqueados
| Modo | Simbólico | Uso típico |
|---|---|---|
| chmod 555 | r-xr-xr-x | Diretório ou programa somente leitura |
| chmod 544 | r-xr--r-- | Script travado que só o dono roda |
| chmod 500 | r-x------ | Privado e protegido contra escrita |
| chmod 444 | r--r--r-- | Somente leitura para todos |
| chmod 440 | r--r----- | /etc/sudoers, wp-config.php protegido |
| chmod 400 | r-------- | Só o dono lê: chaves .pem, segredos |
| chmod 000 | --------- | Só o root; quarentena, /etc/shadow |
Bits especiais: setuid, setgid, sticky
| Modo | Simbólico | Uso típico |
|---|---|---|
| chmod 1777 | rwxrwxrwt | Área temporária comum: /tmp, /var/tmp |
| chmod 2775 | rwxrwsr-x | Pasta de equipe onde arquivos novos mantêm o grupo |
| chmod 2755 | rwxr-sr-x | Programa setgid ou pasta que herda o grupo |
| chmod 4755 | rwsr-xr-x | Programa setuid que roda como o dono |
Comandos simbólicos
| Comando | O que faz |
|---|---|
| chmod +x | Tornar um script executável |
| chmod u+x | Execução só para o dono |
| chmod a+r | Legível para todos |
| chmod go-w | Tirar escrita de grupo e outros |
| chmod -R | Mudar uma árvore inteira com segurança |
Como ler um modo octal
Cada dígito é a soma de leitura (4), escrita (2) e execução (1) para uma classe de usuários, na ordem dono, grupo, outros. 7 é 4+2+1 (rwx), 5 é 4+1 (r-x), 6 é 4+2 (rw-), 4 é só leitura e 0 é nada. O manual do GNU coreutils e a página chmod(1) definem esse mesmo formato.
Um quarto dígito na frente guarda os bits especiais. Ele é opcional: chmod 755 e chmod 0755 definem o mesmo modo em arquivos.
| Dígito | Bits | Significado |
|---|---|---|
0 | --- | Nenhuma permissão |
1 | --x | Só execução |
2 | -w- | Só escrita |
3 | -wx | Escrita e execução |
4 | r-- | Só leitura |
5 | r-x | Leitura e execução |
6 | rw- | Leitura e escrita |
7 | rwx | Leitura, escrita e execução |
Bits especiais e como o ls mostra
Os bits especiais ocupam a posição de execução de uma classe no ls -l. O s ou t minúsculo indica que a execução também está ligada; o S ou T maiúsculo indica que não está, o que num programa costuma ser erro.
| Bit | Valor | Exemplo | ls -l | Efeito |
|---|---|---|---|---|
| setuid | 4000 | chmod 4755 | rwsr-xr-x | O programa roda como o dono do arquivo |
| setuid sem execução | 4000 | chmod 4644 | rwSr--r-- | Ligado, mas inútil: nada para rodar |
| setgid | 2000 | chmod 2750 | rwxr-s--- | Diretório: itens novos herdam o grupo |
| sticky | 1000 | chmod 1777 | rwxrwxrwt | Só o dono apaga os próprios arquivos (/tmp) |
Execução em arquivos e em diretórios
Num arquivo, execução deixa o kernel rodá-lo. Um script também precisa de leitura, porque o interpretador tem de abri-lo. Num diretório, execução é a permissão de busca: ela é necessária em todo diretório do caminho até um arquivo, e a leitura só permite listar os nomes.
Por isso uma árvore precisa de dois modos (em geral 755 para diretórios e 644 para arquivos) e por isso chmod -R com um único número dá errado.
Conferindo o modo de um arquivo
O ls -l mostra a forma simbólica. Para o número octal, o stat do GNU usa -c e o do BSD ou macOS usa -f; no macOS o %Lp imprime só os nove bits de permissão, então acrescente %Mp para o dígito dos bits especiais.
ls -l file
stat -c '%a %A %n' file # Linux (GNU)
stat -f '%Mp%Lp %Sp %N' file # macOS / BSDPerguntas frequentes
- O que significa chmod?
- Change mode, mudar o modo. O modo de um arquivo é o conjunto dos seus bits de permissão, e chmod é tanto o comando quanto a chamada de sistema que o altera.
- Quais são os valores de chmod mais comuns?
- 755 para diretórios e programas, 644 para arquivos comuns, 700 e 600 para diretórios e arquivos privados como ~/.ssh e chaves SSH, e 1777 para diretórios temporários compartilhados como o /tmp.
- Qual a diferença entre chmod e chown?
- O chmod muda o que dono, grupo e outros podem fazer. O chown muda quem são o dono e o grupo. Só o root pode passar um arquivo para outro dono com chown; o dono pode dar chmod nos próprios arquivos.
- O chmod respeita o umask?
- Modos numéricos ignoram o umask. Modos simbólicos sem classe de usuário, como +x ou -w, pulam os bits ligados no umask; com u, g, o ou a, não.
- Quem pode rodar chmod num arquivo?
- O dono do arquivo e o root. Membros do grupo não mudam o modo, mesmo com permissão de escrita no arquivo.
Revisado em por Arielton Oberek.