Modo Numérico
Dígitos de Permissão Octal
4Leitura (r)
2Escrita (w)
1Execução (x)
0Sem permissão
Formato de Três Dígitos
chmod 755 file # rwxr-xr-x chmod 644 file # rw-r--r-- chmod 700 file # rwx------ chmod 600 file # rw-------
Cálculo de Dígito
7 (4+2+1)rwx — leitura, escrita, execução
6 (4+2)rw- — leitura, escrita
5 (4+1)r-x — leitura, execução
4r-- — somente leitura
3 (2+1)-wx — escrita, execução
2-w- — somente escrita
1--x — somente execução
0--- — sem permissões
Modo Simbólico
Sintaxe: [ugoa][+-=][rwxXst]
uUsuário (dono)
gGrupo
oOutros
aTodos (u + g + o)
+Adicionar permissão
-Remover permissão
=Definir permissão exata
Exemplos Simbólicos
chmod u+x file # owner: add execute chmod g-w file # group: remove write chmod o=r file # others: set read only chmod a+r file # all: add read chmod u+x,g-w,o= file # combined operations
Permissões Comuns
Predefinições de Permissão de Arquivo
644 rw-r--r--Arquivo padrão — dono rw, outros leitura
755 rwxr-xr-xScript / binário — dono rwx, outros rx
600 rw-------Arquivo privado — somente dono
400 r--------Somente leitura privado (chaves SSH)
666 rw-rw-rw-Arquivo gravável por todos (evitar)
777 rwxrwxrwxAcesso total para todos (evitar)
Referência Rápida
chmod 644 *.html # web files: owner rw, world r chmod 755 *.sh # scripts: owner rwx, world rx chmod 600 ~/.ssh/id_* # SSH keys: owner only chmod 400 secret.pem # certificate: read-only
Permissões de Diretório
O que as Permissões Significam em Diretórios
r (4)Listar conteúdo do diretório (ls)
w (2)Criar / deletar arquivos no diretório
x (1)Acessar (entrar com cd) o diretório
rx (5)Listar + acessar (típico para leitura)
rwx (7)Controle total
Permissões Comuns de Diretório
chmod 755 dir/ # standard: owner rwx, others rx chmod 700 dir/ # private: owner only chmod 750 dir/ # group access: owner rwx, group rx chmod 1777 /tmp # sticky bit: only owner can delete
Bits Especiais
Setuid, Setgid, Sticky
Setuid (4xxx)Executar como dono do arquivo (ex.: passwd)
Setgid (2xxx)Executar como grupo do arquivo / herdar grupo do dir
Sticky (1xxx)Só dono pode deletar arquivos (ex.: /tmp)
Definir Bits Especiais
chmod 4755 program # setuid: -rwsr-xr-x chmod 2755 dir/ # setgid: drwxr-sr-x chmod 1755 dir/ # sticky: drwxr-xr-t chmod u+s program # symbolic setuid chmod g+s dir/ # symbolic setgid chmod +t dir/ # symbolic sticky bit
Recursivo
Alterações Recursivas de Permissão
chmod -R 755 dir/ # set all to 755 recursively chmod -R u+rwX dir/ # owner rw, +x on dirs only chmod -R go-w dir/ # remove group/other write
Arquivos vs Diretórios com find
# set directories to 755, files to 644 find /path -type d -exec chmod 755 {} + find /path -type f -exec chmod 644 {} +
X maiúsculo — Execução Condicional
x (minúsculo)Adicionar execução a todos arquivos e dirs
X (maiúsculo)Adicionar execução apenas a dirs e arquivos já executáveis
umask
Como o umask Funciona
umaskExibir umask atual
umask 022Arquivos: 644, Dirs: 755
umask 077Arquivos: 600, Dirs: 700
umask 002Arquivos: 664, Dirs: 775
Cálculo de umask
# default permission minus umask = effective # Files: 666 - 022 = 644 (rw-r--r--) # Dirs: 777 - 022 = 755 (rwxr-xr-x) umask # display current umask umask 022 # typical default umask -S # show in symbolic notation
Padrões Comuns
Casos de Uso do Dia a Dia
Web rootchmod -R 755 /var/www/html
Arquivo de configchmod 600 app.conf
Diretório SSHchmod 700 ~/.ssh
SSH authorized_keyschmod 600 ~/.ssh/authorized_keys
Diretório compartilhadochmod 2775 /shared (setgid)
Arquivos de logchmod 640 /var/log/app.log
Scripts cronchmod 755 /etc/cron.daily/myjob
Diretório temporáriochmod 1777 /tmp (sticky)
Visualizar Permissões
ls -l file.txt # show permissions ls -ld dir/ # show directory permissions stat -c '%A %a %n' * # symbolic + numeric + name getfacl file.txt # show ACLs (if in use)