1. O Que E chmod
O comando chmod (change mode) e um dos utilitarios mais fundamentais em sistemas Unix e Linux. Ele controla as permissoes de acesso a arquivos e diretorios, definindo quem pode ler, escrever e executar cada item do sistema de arquivos.
Criado junto com o proprio Unix na decada de 1970, o modelo de permissoes de tres niveis — dono, grupo e outros — continua sendo o padrao em praticamente todos os sistemas operacionais derivados de Unix, incluindo Linux, macOS e BSD.
2. Notacao Octal Explicada
A notacao octal e a forma mais compacta de representar permissoes. Cada digito octal representa as permissoes de um conjunto (dono, grupo, outros) como a soma de tres bits:
- Leitura (r) = 4: permite ver o conteudo do arquivo ou listar o diretorio.
- Escrita (w) = 2: permite modificar o arquivo ou criar/remover itens no diretorio.
- Execucao (x) = 1: permite executar o arquivo ou acessar o diretorio.
Somando os valores das permissoes ativas, obtem-se o digito octal do conjunto. Por exemplo: rw- = 4+2 = 6; r-x = 4+1 = 5; rwx = 4+2+1 = 7. Assim, 755 significa dono=rwx, grupo=r-x, outros=r-x.
"A elegancia do chmod esta na simplicidade: tres bits por conjunto, tres conjuntos por arquivo — e qualquer permissao e representada por um numero de tres digitos."
3. Notacao Simbolica
A notacao simbolica usa letras para representar as permissoes de forma mais legivel. O formato e uma string de 9 caracteres dividida em tres grupos de tres: rwxrwxrwx para dono, grupo e outros respectivamente. Um traco (-) indica que a permissao esta desativada.
Voce tambem pode usar a notacao simbolica diretamente no terminal com chmod u+x arquivo (adiciona execucao para o dono) ou chmod go-w arquivo (remove escrita de grupo e outros). Nossa calculadora exibe ambas as formas simultaneamente.
4. Bits Especiais: SUID, SGID e Sticky
Alem dos tres bits padrao, existem tres bits especiais que modificam o comportamento de execucao:
- SUID (4000): o processo executa com os privilegios do dono do arquivo, nao do usuario que executou. Essencial para comandos como
sudoepasswd. - SGID (2000): em arquivos, executa com o GID do arquivo; em diretorios, novos arquivos herdam o grupo do diretorio pai — util para diretorios compartilhados entre equipes.
- Sticky bit (1000): em diretorios, apenas o dono de cada arquivo pode remove-lo, mesmo que outros tenham permissao de escrita no diretorio. O
/tmpusa1777por esse motivo.
5. Boas Praticas de Seguranca
Permissoes incorretas sao uma das causas mais comuns de vulnerabilidades em servidores. Algumas regras fundamentais:
- Nunca use
777em producao — qualquer usuario do sistema pode modificar o arquivo. - Arquivos de configuracao com senhas devem usar
600(apenas o dono pode ler/escrever). - Chaves SSH privadas (
~/.ssh/id_rsa) exigem600ou o SSH se recusa a usa-las. - Scripts executaveis publicos devem usar
755, nao777. - Use o principio do menor privilegio: conceda apenas as permissoes estritamente necessarias.
6. Perguntas Frequentes
Qual a diferenca entre chmod 644 e 755 para um diretorio?
Para diretorios, a permissao de execucao (x) controla o acesso — sem ela, nao e possivel nem entrar no diretorio com cd. Use 755 para diretorios acessiveis publicamente e 700 para diretorios privados.
Como aplicar chmod recursivamente?
Use a flag -R: chmod -R 755 /caminho/do/diretorio. Cuidado ao aplicar o mesmo valor para arquivos e diretorios — o ideal e usar scripts que diferenciem os dois tipos com find.
Por que meu servidor web retorna 403 Forbidden?
Geralmente porque o arquivo ou algum diretorio pai nao tem permissao de leitura para o usuario do servidor web (tipicamente www-data ou apache). Verifique toda a arvore de diretorios com namei -l /caminho/do/arquivo.
chmod funciona no macOS?
Sim. O macOS e baseado em BSD Unix e suporta o mesmo modelo de permissoes. O comando e identico ao Linux. A unica diferenca relevante e que o macOS tambem usa ACLs estendidas que vao alem do modelo basico de chmod.