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