Como funcionam as permissões do chmod: 755, 644 e sticky bit
Em sistemas do tipo Unix, o chmod altera as permissões de acesso de arquivos e diretórios. As permissões de leitura, escrita e execução são definidas separadamente para o dono, o grupo e os demais usuários. As permissões de diretório têm significado próprio: elas afetam a listagem de nomes, a criação ou remoção de entradas e o acesso a um caminho conhecido.
Modos numéricos e simbólicos
Um comando simbólico como chmod u+x script.sh dá ao dono permissão para executar o arquivo. No modo numérico, leitura vale 4, escrita vale 2 e execução vale 1. Assim, 755 significa rwxr-xr-x: o dono pode ler, escrever e executar, enquanto o grupo e os demais podem ler e executar. O modo 644 costuma ser adequado para um arquivo público comum, mas isso depende da aplicação. Não trate um número conhecido como uma configuração de segurança universal.
Por que as permissões de diretório importam
Em um diretório, a leitura permite listar os nomes, a escrita permite alterar as entradas do diretório e a execução permite percorrer um caminho conhecido. Remover um arquivo normalmente depende das permissões do diretório pai, e não da permissão de escrita do próprio arquivo. Por isso, um arquivo com 444 ainda pode ser removido por alguém com acesso suficiente ao diretório. O manual do GNU Coreutils explica essa diferença. Se o acesso falhar mesmo quando o arquivo final parece legível, verifique cada diretório pai e a identidade com a qual o serviço é executado.
Um exemplo de hospedagem de sites
Imagine um diretório de arquivos HTML que o servidor web precisa ler, mas que só o dono pode atualizar. Um ponto de partida pode ser 755 para diretórios e 644 para arquivos comuns. Ainda assim, é preciso considerar a conta do serviço, os grupos e as regras da hospedagem; arquivos de configuração privados podem exigir um acesso mais restrito. Aplicar 777 a tudo para silenciar um erro concede aos usuários locais amplos direitos de modificação e pode criar um problema de segurança. Verifique o dono e as permissões atuais com stat e ls -l antes de alterá-los.
Setuid, setgid e o sticky bit
Um quarto dígito octal inicial especifica os bits especiais: 4 para setuid, 2 para setgid e 1 para sticky. Por exemplo, 4755 ativa o setuid em um executável; 455, não. O setuid deve ser usado com cuidado, porque falhas no programa podem ser executadas com os privilégios do dono. Em diretórios, o setgid pode fazer com que novas entradas herdem o grupo do diretório. Um sticky bit em um diretório compartilhado, como /tmp, restringe quem pode remover ou renomear arquivos de outro usuário. Antes de um chmod -R, revise a árvore exata: arquivos comuns, executáveis e diretórios raramente precisam todos dos mesmos modos.