===== 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).