====== Comandos de Permissões e Propriedades de Arquivos no Linux ====== ===== Nível Básico ===== === 1. Visualização de Permissões === * **ls -l** - Lista arquivos com detalhes, incluindo permissões. - Exemplo de uso: ls -l /home/usuario/arquivo.txt - Descrição: Mostra informações detalhadas sobre ''arquivo.txt'', incluindo permissões de leitura, escrita e execução, proprietário, grupo e tamanho. === 2. Alteração Simples de Permissões com `chmod` === * **chmod** - Altera permissões de arquivos e diretórios. - Exemplo de uso: chmod 755 /home/usuario/arquivo.txt - Descrição: Define permissões de leitura, escrita e execução para o dono, e permissões de leitura e execução para outros usuários em ''arquivo.txt''. * **chmod u+x** - Adiciona permissão de execução para o dono. - Exemplo de uso: chmod u+x /home/usuario/script.sh - Descrição: Concede permissão de execução ao dono do arquivo ''script.sh'', permitindo que ele seja executado como um programa. === 3. Alteração de Propriedades de Grupo com `chgrp` === * **chgrp** - Altera o grupo associado a um arquivo ou diretório. - Exemplo de uso: chgrp desenvolvedores /home/usuario/projeto - Descrição: Define o grupo ''desenvolvedores'' como o grupo proprietário do diretório ''projeto'', permitindo que seus membros tenham acesso de acordo com as permissões do grupo. ===== Nível Intermediário ===== === 1. Alteração Recursiva de Permissões === * **chmod -R** - Aplica permissões recursivamente em diretórios e seus arquivos. - Exemplo de uso: chmod -R 755 /home/usuario/projeto/ - Descrição: Define permissões de leitura, escrita e execução para o dono, e de leitura e execução para outros usuários, em todos os arquivos e subdiretórios dentro de ''/projeto''. === 2. Alteração de Propriedade com `chown` === * **chown** - Altera o proprietário de um arquivo ou diretório. - Exemplo de uso: chown usuario /home/usuario/arquivo.txt - Descrição: Define ''usuario'' como o proprietário do arquivo ''arquivo.txt''. * **chown usuario:grupo** - Altera o proprietário e o grupo de um arquivo. - Exemplo de uso: chown usuario:desenvolvedores /home/usuario/arquivo.txt - Descrição: Define o usuário ''usuario'' como proprietário e o grupo ''desenvolvedores'' como o grupo associado ao arquivo ''arquivo.txt''. === 3. Permissões Adicionais com `chmod` === * **chmod g+w** - Adiciona permissão de escrita para o grupo. - Exemplo de uso: chmod g+w /home/usuario/arquivo.txt - Descrição: Permite que o grupo associado ao arquivo ''arquivo.txt'' tenha permissão de escrita. * **chmod o-r** - Remove permissão de leitura para outros usuários. - Exemplo de uso: chmod o-r /home/usuario/arquivo_secreto.txt - Descrição: Remove a permissão de leitura para todos os usuários que não sejam o dono ou membros do grupo. === 4. Visualização Detalhada de Propriedades === * **stat** - Exibe detalhes completos de um arquivo, incluindo permissões e propriedades. - Exemplo de uso: stat /home/usuario/arquivo.txt - Descrição: Exibe informações detalhadas sobre ''arquivo.txt'', incluindo permissões, timestamps de criação e modificação, e o identificador de usuário e grupo. ===== Nível Avançado ===== === 1. Permissões Especiais com `chmod` === * **chmod u+s** - Define o bit SUID (Set User ID). - Exemplo de uso: chmod u+s /usr/bin/programa - Descrição: Permite que o programa seja executado com os privilégios do dono do arquivo, em vez do usuário que o executa. Normalmente usado para programas que precisam de permissões elevadas. * **chmod g+s** - Define o bit SGID (Set Group ID). - Exemplo de uso: chmod g+s /home/usuario/projeto/ - Descrição: Define que todos os arquivos criados dentro do diretório ''/projeto'' herdarão o grupo do diretório pai, mantendo consistência de grupo entre arquivos e usuários. * **chmod o+t** - Define o bit Sticky em diretórios. - Exemplo de uso: chmod o+t /home/usuario/publico - Descrição: O bit Sticky garante que somente o dono de um arquivo dentro do diretório ''publico'' possa excluir ou renomear seus próprios arquivos, mesmo que outros usuários tenham permissão de escrita. === 2. Controle Detalhado com ACLs (Access Control Lists) === * **setfacl** - Define permissões adicionais para usuários ou grupos específicos. - Exemplo de uso: setfacl -m u:usuario2:rwx /home/usuario/arquivo.txt - Descrição: Concede permissões completas (leitura, escrita, execução) ao usuário ''usuario2'' sobre o arquivo ''arquivo.txt'', sem alterar as permissões do dono ou grupo. * **getfacl** - Exibe as permissões ACL de um arquivo ou diretório. - Exemplo de uso: getfacl /home/usuario/arquivo.txt - Descrição: Mostra todas as permissões configuradas, incluindo permissões padrão e as configuradas via ACL, para o arquivo ''arquivo.txt''. === 3. Aplicação Recursiva de ACLs === * **setfacl -R** - Aplica ACLs recursivamente em diretórios. - Exemplo de uso: setfacl -R -m u:usuario2:rwx /home/usuario/projeto/ - Descrição: Concede permissões completas ao usuário ''usuario2'' para todos os arquivos e subdiretórios dentro do diretório ''/projeto''. * **setfacl -d** - Define permissões ACL padrão para novos arquivos em um diretório. - Exemplo de uso: setfacl -d -m u:usuario2:rwx /home/usuario/projeto/ - Descrição: Configura ACLs para que todos os novos arquivos criados dentro de ''/projeto'' herdem as permissões concedidas ao usuário ''usuario2''. === 4. Remoção de ACLs === * **setfacl -x** - Remove uma entrada ACL específica. - Exemplo de uso: setfacl -x u:usuario2 /home/usuario/arquivo.txt - Descrição: Remove todas as permissões ACL concedidas ao usuário ''usuario2'' sobre o arquivo ''arquivo.txt''. * **setfacl -b** - Remove todas as ACLs de um arquivo ou diretório. - Exemplo de uso: setfacl -b /home/usuario/projeto/ - Descrição: Remove todas as permissões ACL de ''/projeto'', retornando às permissões padrão definidas por ''chmod''. === 5. Controle de Atributos com `chattr` e `lsattr` === * **chattr** - Define atributos especiais para arquivos e diretórios. - Exemplo de uso: chattr +i /home/usuario/arquivo.txt - Descrição: Define o atributo ''imutable'' (imutável) no arquivo ''arquivo.txt'', impedindo que ele seja modificado ou excluído, mesmo por usuários root. * **lsattr** - Lista os atributos especiais de arquivos e diretórios. - Exemplo de uso: lsattr /home/usuario/arquivo.txt - Descrição: Exibe os atributos definidos para ''arquivo.txt'', permitindo visualizar se o arquivo está imutável, apenas anexável ou com outros atributos especiais. === Atributos Comuns Gerenciados pelo `chattr` === * **+i** - Define o atributo imutável. - Exemplo de uso: chattr +i /home/usuario/arquivo.txt - Descrição: Um arquivo com o atributo ''+i'' não pode ser modificado, renomeado ou excluído até que o atributo seja removido com chattr -i. * **+a** - Define o atributo "append only" (somente anexar). - Exemplo de uso: chattr +a /home/usuario/log.txt - Descrição: Um arquivo com o atributo ''+a'' só pode ser modificado para adicionar dados no final (anexar). Não é possível editar ou remover o conteúdo existente. * **+d** - Impede que o arquivo seja incluído em backups com o comando `dump`. - Exemplo de uso: chattr +d /home/usuario/arquivo_temporario - Descrição: O arquivo marcado com ''+d'' será ignorado por ferramentas de backup como `dump`, útil para arquivos temporários ou caches. * **+u** - Define que o conteúdo de um arquivo deve ser preservado em caso de exclusão. - Exemplo de uso: chattr +u /home/usuario/arquivo_critico.txt - Descrição: Um arquivo com o atributo ''+u'' tem seu conteúdo salvo quando excluído, permitindo a recuperação futura. ===== Nível Especializado ===== === 1. Herança Avançada de Permissões com ACLs === * **setfacl -d -R** - Define permissões ACL padrão recursivamente para novos arquivos e diretórios. - Exemplo de uso: setfacl -d -R -m u:usuario2:rwx /home/usuario/projeto/ - Descrição: Configura ACLs padrão recursivas para que todos os arquivos e diretórios criados dentro de ''/projeto'' herdem permissões completas para o usuário ''usuario2''. * **setfacl -k** - Remove as permissões ACL padrão de um diretório. - Exemplo de uso: setfacl -k /home/usuario/projeto/ - Descrição: Remove as permissões ACL padrão de ''/projeto'', permitindo que novos arquivos criados não herdem permissões adicionais. === 2. Auditoria de Acessos com `auditd` === * **auditctl** - Configura regras de auditoria para monitorar acessos a arquivos. - Exemplo de uso: auditctl -w /home/usuario/arquivo.txt -p rwxa -k monitor_arquivo - Descrição: Monitora todas as tentativas de leitura, escrita, execução e alteração do arquivo ''arquivo.txt''. Os eventos de acesso são registrados com a chave de auditoria ''monitor_arquivo''. * **ausearch** - Pesquisa eventos de auditoria relacionados a arquivos. - Exemplo de uso: ausearch -f /home/usuario/arquivo.txt - Descrição: Pesquisa os logs de auditoria para exibir todas as tentativas de acesso ao arquivo ''arquivo.txt'', incluindo informações sobre o usuário e a ação realizada. === 3. Controle de Acesso com SELinux === * **chcon** - Altera o contexto de segurança de um arquivo. - Exemplo de uso: chcon -t httpd_sys_content_t /var/www/html/index.html - Descrição: Altera o contexto de segurança do arquivo ''index.html'' para que ele possa ser acessado pelo servidor web Apache em um sistema com SELinux habilitado. * **restorecon** - Restaura os contextos de segurança padrão. - Exemplo de uso: restorecon -v /var/www/html/ - Descrição: Restaura os contextos de segurança padrão para todos os arquivos no diretório ''/var/www/html'', conforme definido pelas políticas SELinux. === 4. Manipulação de Capabilities com `setcap` === * **setcap** - Atribui capacidades específicas a binários sem necessidade de SUID. - Exemplo de uso: setcap cap_net_bind_service=+ep /usr/bin/apache2 - Descrição: Atribui ao binário ''apache2'' a capacidade de vincular-se a portas de número inferior a 1024 (normalmente reservado a root) sem a necessidade de usar o bit SUID. * **getcap** - Exibe as capacidades de um arquivo. - Exemplo de uso: getcap /usr/bin/apache2 - Descrição: Lista as capacidades que foram atribuídas ao binário ''apache2'', permitindo a verificação das permissões especiais. === 5. Gerenciamento de Políticas de Controle de Acesso com AppArmor === * **aa-status** - Verifica o status das políticas do AppArmor. - Exemplo de uso: aa-status - Descrição: Exibe o status atual das políticas de controle de acesso do AppArmor, incluindo quais perfis estão carregados e em execução. * **aa-complain** - Coloca um perfil do AppArmor no modo de "Complain" (relatório de violação). - Exemplo de uso: aa-complain /etc/apparmor.d/usr.sbin.mysqld - Descrição: Altera o perfil do AppArmor para o modo "Complain", no qual as violações de segurança são registradas nos logs, mas não são aplicadas. === 6. Auditar Permissões com `getfacl` e `auditd` === * **getfacl** + **auditctl** - Combina auditoria de ACLs com monitoramento de acessos. - Exemplo de uso: getfacl /home/usuario/arquivo.txt | auditctl -w /home/usuario/arquivo.txt -p rwxa -k acl_audit - Descrição: Usa ''getfacl'' para visualizar as permissões ACL e ''auditctl'' para auditar o acesso ao arquivo, rastreando tentativas de acesso de acordo com a ACL e criando logs detalhados com a chave ''acl_audit''.