Learn Bash Help

Permissões de Arquivos

CONTROLE DE ACESSO ================= STATUS: CRÍTICO NÍVEL: AVANÇADO SEGURANÇA: MÁXIMA

Permissões Básicas

Estrutura de Permissões

# Formato: [tipo][user][group][others] ls -l arquivo.txt # -rw-r--r-- 1 user group 0 Jan 1 12:00 arquivo.txt # ^ ^^^ ^^^ ^^^ # | | | | # | | | +-> outros (r--) # | | +-> grupo (r--) # | +-> usuário (rw-) # +-> tipo (-)

Modificando Permissões

# Modo Octal chmod 644 arquivo.txt # rw-r--r-- chmod 755 script.sh # rwxr-xr-x chmod 600 id_rsa # rw------- # Modo Simbólico chmod u+x script.sh # Adiciona execução para usuário chmod g-w arquivo.txt # Remove escrita do grupo chmod o= arquivo.txt # Remove todas permissões de outros

Permissões Especiais

SUID, SGID e Sticky Bit

# SUID - Executa como proprietário chmod 4755 programa # -rwsr-xr-x chmod u+s programa # Modo simbólico # SGID - Executa como grupo chmod 2755 diretorio # -rwxr-sr-x chmod g+s diretorio # Modo simbólico # Sticky Bit - Proteção de deleção chmod 1777 /tmp # -rwxrwxrwt chmod +t diretorio # Modo simbólico

ACLs Avançadas

Gerenciamento de ACLs

# Listando ACLs getfacl arquivo.txt # Configurando ACLs setfacl -m u:usuario:rw arquivo.txt # Permissão para usuário setfacl -m g:grupo:rx arquivo.txt # Permissão para grupo setfacl -x u:usuario arquivo.txt # Remove ACL específica setfacl -b arquivo.txt # Remove todas ACLs

ACLs Padrão

# ACLs para novos arquivos setfacl -d -m u:usuario:rx diretorio/ setfacl -d -m g:grupo:rwx diretorio/

Atributos Estendidos

Gerenciamento de Atributos

# Listando atributos lsattr arquivo.txt # Configurando atributos chattr +i arquivo.txt # Imutável chattr +a log.txt # Append-only chattr +s arquivo.txt # Deleção segura

Propriedade e Grupos

Mudança de Proprietário

# Mudando proprietário chown usuario:grupo arquivo.txt chown -R usuario:grupo diretorio/ # Mudando apenas grupo chgrp grupo arquivo.txt chgrp -R grupo diretorio/

Scripts de Segurança

Auditoria de Permissões

#!/bin/bash # audit_permissions.sh check_permissions() { find "$1" -type f -perm /4000 -print | while read file; do echo "SUID encontrado: $file" ls -l "$file" done } check_world_writable() { find "$1" -type f -perm -002 -print | while read file; do echo "Arquivo gravável globalmente: $file" ls -l "$file" done } # Uso check_permissions /usr/bin check_world_writable /home

Correção Automática

#!/bin/bash # fix_permissions.sh fix_permissions() { # Arquivos sensíveis chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub # Diretórios de configuração chmod 700 ~/.ssh chmod 750 ~/scripts # Scripts executáveis find ~/scripts -type f -name "*.sh" -exec chmod u+x {} \; }

Exercícios Avançados

🎯 Missão 1: Hardening de Permissões

# Implemente um sistema que: # 1. Identifique permissões inseguras # 2. Corrija automaticamente # 3. Gere relatório de mudanças # 4. Mantenha log de auditoria

🎯 Missão 2: ACLs Complexas

# Crie uma estrutura que: # 1. Use ACLs para controle fino # 2. Implemente herança de permissões # 3. Gerencie múltiplos grupos # 4. Mantenha backup das ACLs

Troubleshooting

Problemas Comuns

  • Permissão negada: Verifique com ls -la e getfacl

  • SUID não funciona: Verifique sistema de arquivos (noexec)

  • ACLs não aplicam: Verifique suporte do sistema de arquivos

Diagnóstico

# Verificação de problemas namei -l /path/to/file # Mostra permissões do caminho strace -e trace=access comando # Debug de acesso ausearch -f /path/to/file # Busca em logs de auditoria

Próximos Passos

  1. SELinux e AppArmor

  2. Criptografia de Arquivos

  3. Auditoria de Sistema

14 abril 2025