Skip to content

chmod 440

chmod 440 define r--r-----: o dono e os membros do grupo podem ler o arquivo, ninguém grava nem executa, e os demais não têm acesso.

Matriz de permissões

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

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 o conteúdoSó listar nomes; não entra nem abre nada
Grupo (g)Ler o conteúdoSó listar nomes; não entra nem abre nada
Outros (o)Nenhum acessoNenhum acesso

Dados

Representações deste modo
Octal440 (0440)
Simbólicor--r-----
ls -l, arquivo-r--r-----
ls -l, diretóriodr--r-----
Comando simbólico equivalentechmod ug=r,o=
umask padrão que gera esse modoNenhum dos umasks comuns; defina explicitamente com chmod
Como o Git registra um arquivo assim100644 (não executável)
Bits especiaisNenhum

Quando usar

  • /etc/sudoers e os arquivos em /etc/sudoers.d: o visudo grava como 0440 com dono root, e o sudo se recusa a rodar se o sudoers tiver escrita para outros.
  • wp-config.php e arquivos de credenciais parecidos: o guia de segurança do WordPress recomenda 440 ou 400 para outros usuários do servidor não lerem a senha do banco. Use 440 quando o servidor web lê pelo grupo.

Quando não usar

  • Arquivos que a própria aplicação atualiza (instaladores, gerenciadores de plugins): a escrita falha. Afrouxe temporariamente e volte para 440 depois.
  • Quando o grupo inclui contas que não deveriam ver o conteúdo.

Como adicionar um arquivo em sudoers.d com segurança

Edite com visudo para a sintaxe ser verificada antes de o arquivo entrar em uso; um sudoers quebrado pode trancar você fora do sudo. O visudo -c confere modos e sintaxe de todos os arquivos.

sudo visudo -f /etc/sudoers.d/deploy
sudo chmod 440 /etc/sudoers.d/deploy
sudo visudo -c

Comandos

Aplicar em um arquivo ou diretório
sudo chmod 440 /etc/sudoers.d/deploy
sudo chmod ug=r,o= /etc/sudoers.d/deploy   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' /etc/sudoers.d/deploy     # Linux (stat do GNU): 440 -r--r-----
stat -f '%Lp %Sp %N' /etc/sudoers.d/deploy   # macOS e BSD

Aplicando numa árvore inteira

O chmod -R colocaria o mesmo modo em arquivos e diretórios. Defina os diretórios como 550 e os arquivos como 440 separadamente:

find . -type d -exec chmod 550 {} +
find . -type f -exec chmod 440 {} +

Ou numa passada só com o X maiúsculo, que só dá execução a diretórios e a arquivos que já tinham: chmod -R ug=rX,o= ..

Git e o bit de execução

O Git guarda um único dado de permissão por arquivo: 100755 se o bit de execução do dono estiver ligado, 100644 caso contrário. Um arquivo com este modo entra no commit como 100644; os bits de grupo e outros nunca chegam ao repositório. No Windows, ou com core.fileMode false, ligue o bit com git update-index --chmod=+x.

Perguntas frequentes

O que significa chmod 440?
Dono 4 (r--), grupo 4 (r--), outros 0 (---).
Qual permissão o /etc/sudoers deve ter?
0440, dono root, grupo root. É o que o visudo cria e o que o sudo espera.
O wp-config.php deve ser 440 ou 400?
400 se o PHP roda como dono do arquivo (comum com um pool do PHP-FPM por site), 440 se o PHP lê pelo grupo.

Revisado em por Arielton Oberek.