O comando chmod (change mode) no Linux é uma ferramenta essencial para controlar as permissões de acesso a arquivos e diretórios. Ele permite que o administrador do sistema ou o proprietário de um arquivo determine quem pode ler, escrever ou executar um determinado recurso. Compreender e utilizar o chmod corretamente é fundamental para a segurança e a organização eficaz de um sistema Linux.
Modos de Atribuição de Permissões
O chmod pode ser utilizado de duas maneiras principais para modificar permissões: o modo simbólico e o modo numérico (ou octal).
1. Modo Simbólico
O modo simbólico oferece uma forma intuitiva de adicionar, remover ou definir permissões para diferentes categorias de usuários. A sintaxe geral é:
chmod [quem] [operador] [permissão] [nome_do_arquivo_ou_diretorio]
Componentes do Modo Simbólico:
- Quem (
who): Define para qual grupo de usuários a mudança se aplica:u: Usuário proprietário (user).g: Grupo proprietário (group).o: Outros usuários (others).a: Todos os usuários (all), equivalente augo.
- Operador (
operator): Indica a ação a ser realizada:+: Adiciona a permissão especificada.-: Remove a permissão especificada.=: Define as permissões exatamente como especificado, removendo quaisquer outras.
- Permissão (
permission): As permissões a serem alteradas:r: Permissão de leitura (read).w: Permissão de escrita (write).x: Permissão de execução (execute).s: Set-user-ID (SUID) ou Set-group-ID (SGID).t: Sticky bit (especialmente útil para diretórios).
Nota sobre o Sticky Bit (t): Quando aplicado a um diretório, o sticky bit (t) permite que apenas o proprietário do arquivo ou o proprietário do diretório possa excluir ou renomear arquivos dentro desse diretório, mesmo que outros usuários tenham permissões de escrita no diretório. Isso é comumente visto em diretórios públicos como /tmp.
Exemplos de Uso no Modo Simbólico:
Considere um arquivo chamado documento.txt.
# Remover permissão de execução para todos os usuários
chmod a-x documento.txt # Exemplo de saída: rw- rw- rw-
# Retirar permissão de escrita para o grupo e outros
chmod go-w documento.txt # Exemplo de saída: rw- r-- r--
# Conceder permissão de escrita ao grupo
chmod g+w documento.txt # Exemplo de saída: rw- rw- r--
# Adicionar permissão de execução ao proprietário
chmod u+x documento.txt # Exemplo de saída: rwx rw- r--
# Conceder permissão de execução ao grupo e a outros usuários
chmod go+x documento.txt # Exemplo de saída: rwx rwx r-x
2. Modo Numérico (Octal)
O modo numérico utiliza uma representação octal para definir as permissões. Cada tipo de permissão (leitura, escrita, execução) corresponde a um valor numérico, e a soma desses valores para cada categoria de usuário (proprietário, grupo, outros) forma um número de três dígitos.
Valores de Permissão:
r(leitura) = 4w(escrita) = 2x(execução) = 1- Nenhuma permissão = 0
Para detemrinar o número octal, você soma os valores das permissões desejadas para cada categoria:
- Proprietário: Soma das permissões do proprietário.
- Grupo: Soma das permissões do grupo.
- Outros: Soma das permissões dos outros usuários.
Assim, um número octal típico seria XYZ, onde:
Xrepresenta as permissões do proprietário.Yrepresenta as permissões do grupo.Zrepresenta as permissões de outros usuários.
Por exemplo:
7(4+2+1) = rwx (leitura, escrita, execução)6(4+2+0) = rw- (leitura, escrita)5(4+0+1) = r-x (leitura, execução)4(4+0+0) = r-- (leitura)
Exemplos de Uso no Modo Numérico:
Vamos definir as permissões para um arquivo chamado relatorio.pdf.
Suponha que queremos que o proprietário tenha permissões completas (leitura, escrita, execução), o grupo tenha apenas leitura, e outros usuários também apenas leitura.
- Proprietário: rwx = 4 + 2 + 1 = 7
- Grupo: r-- = 4 + 0 + 0 = 4
- Outros: r-- = 4 + 0 + 0 = 4
O modo numérico correspondente é 744.
chmod 744 relatorio.pdf
ls -l relatorio.pdf
# Saída esperada: -rwxr--r-- 1 usuario grupo 0 Data Hora relatorio.pdf
Outro exemplo: Proprietário com leitura/escrita/execução, grupo e outros com leitura/escrita.
- Proprietário: rwx = 7
- Grupo: rw- = 6
- Outros: rw- = 6
O modo numérico é 766.
chmod 766 relatorio.pdf
ls -l relatorio.pdf
# Saída esperada: -rwxrw-rw- 1 usuario grupo 0 Data Hora relatorio.pdf
Definição de Permissões Recursivamente (-R)
É possível aplicar alterações de permissão a um diretório e todos os seus conteúdos (subdiretórios e arquivos) de forma recursiva usando a opção -R.
# Atribuir permissão de leitura e escrita para proprietário e grupo, e apenas leitura para outros, em todos os arquivos e diretórios dentro de /projeto
chmod -R 664 /projeto/
O uso da opção -R deve ser feito com cautela, pois pode afetar um grande número de arquivso e diretórios, potencialmente alterando permissões cruciais do sistema se não for utilizada corretamente.