Lendo permissões com ls -l
O comando ls -l exibe as permissões no formato -rwxr-xr--. Os 10 caracteres se dividem assim:
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68208 mar 14 10:30 /usr/bin/passwd
Posição 1: tipo (- arquivo, d diretório, l link). Posições 2-4: dono (user). Posições 5-7: grupo (group). Posições 8-10: outros (others). Cada trio pode conter r (leitura=4), w (escrita=2), x (execução=1).
chmod: modo octal
No modo octal, cada trio rwx vira um número de 0 a 7:
# rwxr-xr-- = 754
sudo chmod 754 script.sh
# rw-r--r-- = 644 (padrão para arquivos)
chmod 644 config.yaml
# rwxr-xr-x = 755 (padrão para diretórios e scripts)
chmod 755 deploy.sh
chmod: modo simbólico
O modo simbólico usa letras para especificar quem (u, g, o, a) e a operação (+, -, =):
# Adicionar execução para o dono
chmod u+x script.sh
# Remover escrita para grupo e outros
chmod go-w arquivo.txt
# Definir permissão exata para todos
chmod a=r somente-leitura.txt
chown e chgrp
# Mudar dono
sudo chown ana arquivo.txt
# Mudar dono e grupo de uma vez
sudo chown ana:devops arquivo.txt
# Mudar apenas o grupo
sudo chgrp devops arquivo.txt
# Recursivo em diretório
sudo chown -R ana:devops /opt/app/
Permissões especiais: SUID, SGID e Sticky Bit
Além do rwx, existem três bits especiais representados por um dígito extra antes do trio octal:
# SUID (4): executa com permissão do dono do arquivo
sudo chmod 4755 /usr/local/bin/backup
# Aparece como 's' no lugar do 'x' do dono: -rwsr-xr-x
# SGID (2): em arquivos, executa com o grupo do arquivo
# em diretórios, novos arquivos herdam o grupo
sudo chmod 2775 /opt/projeto/
# Aparece como 's' no grupo: drwxrwsr-x
# Sticky bit (1): em diretórios, só o dono pode apagar seus arquivos
sudo chmod 1777 /tmp/compartilhado/
# Aparece como 't' nos outros: drwxrwxrwt
Dica: O
/tmp usa sticky bit por padrão. Sem ele, qualquer usuário poderia apagar arquivos de outros no mesmo diretório. Sempre aplique sticky bit em diretórios compartilhados.umask: permissão padrão
O umask define quais permissões são removidas ao criar novos arquivos e diretórios. O padrão é 0022.
umask
0022
Com umask 0022: arquivos são criados com 644 (666 - 022), diretórios com 755 (777 - 022).
# Definir umask mais restritivo
umask 0077
# Agora arquivos serão 600 e diretórios 700
touch teste.txt && ls -l teste.txt
-rw------- 1 joao joao 0 mar 27 10:00 teste.txt
Dica: Para tornar o umask permanente, adicione-o ao
~/.bashrc ou ~/.profile. Para o sistema inteiro, edite /etc/login.defs (variável UMASK).