Table of Contents
Introdução aos Comandos de Gerenciamento de Permissões no Linux
No Linux, o controle de acesso a arquivos e diretórios é fundamental para garantir a segurança e o gerenciamento adequado de um sistema multiusuário. Para isso, o sistema oferece comandos poderosos que permitem ajustar as permissões, a propriedade e os atributos dos arquivos e diretórios, garantindo que eles sejam acessados e modificados apenas por usuários autorizados.
Os comandos `chown`, `chmod`, `chattr` e `newgrp` são essenciais para administradores de sistemas que precisam gerenciar permissões com precisão. Com esses comandos, você pode:
- Alterar o dono e o grupo de arquivos e diretórios (`chown`);
- Definir permissões específicas de leitura, escrita e execução, bem como permissões especiais como `setuid`, `setgid` e `sticky bit` (`chmod`);
- Aplicar atributos avançados, como imutabilidade e “somente anexar” (`chattr`);
- Alternar temporariamente para um novo grupo de usuários, afetando permissões em tempo de execução (`newgrp`).
Os exemplos a seguir demonstram como usar esses comandos em diferentes níveis de complexidade, desde operações básicas até casos avançados, permitindo que você tenha controle total sobre a segurança e o acesso ao sistema.
Nível Básico
- Alterar o dono de um arquivo com `chown`:
chown usuario arquivo.txt
- Muda o dono de `arquivo.txt` para o usuário especificado.
- Alterar as permissões de um arquivo para leitura e escrita com `chmod`:
chmod 644 arquivo.txt
- Define permissões de leitura e escrita para o dono, e apenas leitura para outros usuários.
- Adicionar o atributo de somente leitura a um arquivo com `chattr`:
chattr +i arquivo.txt
- Define o arquivo como “imutável” (somente leitura), impedindo alterações ou exclusão.
- Mudar para um novo grupo temporariamente com `newgrp`:
newgrp grupo1
- Troca para o grupo `grupo1`, afetando permissões temporariamente até o término da sessão.
Nível Intermediário
- Alterar o dono e o grupo de um arquivo com `chown`:
chown usuario:grupo arquivo.txt
- Muda o dono do arquivo para `usuario` e o grupo para `grupo`.
- Aplicar permissões recursivamente a todos os arquivos de um diretório com `chmod`:
chmod -R 755 /pasta/
- Define permissões recursivamente em todos os arquivos e subdiretórios dentro de `/pasta/`.
- Remover o atributo imutável de um arquivo com `chattr`:
chattr -i arquivo.txt
- Remove o atributo de imutabilidade, permitindo que o arquivo seja modificado ou excluído.
- Adicionar um usuário a um grupo temporariamente com `newgrp`:
newgrp grupo2
- Adiciona o usuário ao grupo `grupo2` temporariamente na sessão atual.
Nível Avançado
- Transferir a propriedade de todos os arquivos de um diretório recursivamente com `chown`:
chown -R usuario:grupo /pasta/
- Transfere a propriedade de todos os arquivos e diretórios dentro de `/pasta/` para o usuário e grupo especificados.
- Definir permissões especiais com `chmod` (bit `setuid`):
chmod u+s arquivo_binario
- Define o bit `setuid`, permitindo que o arquivo binário seja executado com as permissões do dono do arquivo.
- Definir permissões especiais com `chmod` (bit `setgid`):
chmod g+s /diretorio_compartilhado
- Define o bit `setgid` em um diretório, garantindo que todos os arquivos criados nele herdem o grupo do diretório.
- Adicionar o bit `sticky` para um diretório compartilhado com `chmod`:
chmod +t /diretorio_publico
- Adiciona o bit `sticky`, permitindo que apenas o dono de um arquivo possa excluí-lo dentro de um diretório compartilhado.
- Aplicar o atributo de “anexo” a um arquivo com `chattr`:
chattr +a log.txt
- Define o arquivo como “somente anexar”, permitindo apenas adicionar dados, mas não excluir ou modificar.
- Alterar o grupo temporário e executar um comando específico com `newgrp`:
newgrp grupo3 -c 'touch arquivo.txt'
- Muda temporariamente para o grupo `grupo3` e executa o comando `touch arquivo.txt` no contexto desse grupo.
Nível Especializado
- Alterar dono e grupo de forma recursiva, mas com exceção de certos tipos de arquivos com `chown`:
find /pasta -type f -exec chown usuario:grupo {} +- Altera o dono e o grupo de todos os arquivos em `/pasta`, mas exclui diretórios.
- Adicionar a permissão `sticky bit` para um diretório compartilhado com `chmod`:
chmod 1777 /pasta_publica
- Adiciona o sticky bit, permitindo que apenas o dono dos arquivos dentro de `/pasta_publica` possa excluir seus próprios arquivos.
- Tornar um diretório imutável e prevenir exclusão com `chattr`:
chattr +i /diretorio/
- Marca o diretório como imutável, prevenindo qualquer alteração ou exclusão de seus arquivos.
- Reverter os atributos de imutabilidade e anexação em um arquivo com `chattr`:
chattr -ia arquivo.txt
- Remove tanto o atributo de imutabilidade quanto o de “somente anexar”, permitindo modificar ou excluir o arquivo.
- Mudar para um grupo temporário e iniciar um novo shell com permissões desse grupo usando `newgrp`:
newgrp grupo_admin
- Muda para o grupo `grupo_admin` e inicia um novo shell com as permissões desse grupo.
- Combinação de `setuid`, `setgid` e `sticky bit` em diretórios e arquivos:
chmod 4775 arquivo_binario
- Define o bit `setuid` (4), permitindo que o arquivo seja executado com as permissões do dono, além de `rwxr-xr-x` (755).
chmod 2775 /diretorio_compartilhado
- Define o bit `setgid` (2) em um diretório, garantindo que todos os arquivos criados nele herdem o grupo do diretório, além de permissões `rwxrwxr-x` (775).
chmod 1777 /diretorio_publico
- Define o `sticky bit` (1) no diretório, permitindo que apenas o dono de um arquivo possa excluí-lo, além de permissões `rwxrwxrwx` (777).
