Capítulo 5.3 - Permissões Avançadas
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender as permissões especiais (SUID, SGID, Sticky Bit)
- Utilizar ACL (Access Control Lists)
- Gerenciar permissões de forma avançada
- Entender umask e permissões padrão
Permissões Especiais
SUID (Set User ID)
Comportamento:
- Arquivo executado com as permissões do proprietário
- Não do usuário que executa
# Definir SUID
chmod u+s arquivo
chmod 4755 arquivo # 4 = SUID
# Visualizar (s no lugar de x)
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
# ^
# SUID
# Exemplo: /usr/bin/passwd
# Permite que usuários modifiquem /etc/shadow
# (normalmente acessível apenas ao root)
Segurança:
- Usar com cautela
- Pode ser explorado se mal configurado
SGID (Set Group ID)
Comportamento:
- Arquivo executado com as permissões do grupo
- Em diretório: novos arquivos herdam o grupo
# Definir SGID
chmod g+s arquivo
chmod 2755 arquivo # 2 = SGID
# Em diretório
chmod g+s diretorio/
# Novos arquivos criados com o grupo do diretório
# Visualizar (s no lugar de x)
ls -ld diretorio/
# drwxrwsr-x ... diretorio/
# ^
# SGID
Uso:
- Diretórios compartilhados
- Colaboração em equipe
Sticky Bit
Comportamento:
- Em diretório: impede a exclusão por outros usuários
- Apenas o proprietário pode excluir seus arquivos
# Definir Sticky Bit
chmod +t diretorio/
chmod 1777 diretorio/ # 1 = Sticky Bit
# Visualizar (t no lugar de x)
ls -ld /tmp
# drwxrwxrwt ... /tmp
# ^
# Sticky Bit
# Exemplo: /tmp
# Todos podem criar arquivos
# Mas só podem excluir seus próprios arquivos
Uso:
- Diretórios compartilhados (/tmp)
- Prevenção de exclusão acidental
ACL (Access Control Lists)
Introdução
As ACL permitem permissões mais detalhadas do que o sistema padrão (owner/group/other).
# Instalar ferramentas ACL
sudo apt install acl # Ubuntu/Debian
sudo yum install acl # Red Hat/CentOS
Visualizar as ACL
# Ver ACL de um arquivo
getfacl arquivo.txt
# Ver ACL de um diretório
getfacl diretorio/
# Exemplo de saída:
# # file: arquivo.txt
# # owner: user1
# # group: users
# user::rw-
# group::r--
# other::r--
Definir ACL
# Permitir que user2 leia/escreva
setfacl -m u:user2:rw arquivo.txt
# Permitir para um grupo
setfacl -m g:developers:rwx diretorio/
# Permitir para outros
setfacl -m o::r arquivo.txt
# ACL padrão (herdada)
setfacl -d -m u:user2:rw diretorio/
# Novos arquivos herdarão esta ACL
Remover ACL
# Remover ACL de usuário
setfacl -x u:user2 arquivo.txt
# Remover todas as ACL
setfacl -b arquivo.txt
Máscara ACL
A máscara limita as permissões efetivas:
# Definir máscara
setfacl -m m::r arquivo.txt
# Mesmo que a ACL dê rwx, a máscara limita a r
umask - Permissões Padrão
O que é umask?
O umask determina as permissões padrão de novos arquivos e diretórios.
# Ver umask atual
umask
# Formato octal (geralmente 0022 ou 0002)
Cálculo das Permissões
Arquivos:
- Permissões base: 666 (rw-rw-rw-)
- Permissões finais: 666 - umask
Diretórios:
- Permissões base: 777 (rwxrwxrwx)
- Permissões finais: 777 - umask
Exemplos
# umask 022
# Arquivos: 666 - 022 = 644 (rw-r--r--)
# Diretórios: 777 - 022 = 755 (rwxr-xr-x)
# umask 002
# Arquivos: 666 - 002 = 664 (rw-rw-r--)
# Diretórios: 777 - 002 = 775 (rwxrwxr-x)
# umask 077
# Arquivos: 666 - 077 = 600 (rw-------)
# Diretórios: 777 - 077 = 700 (rwx------)
Definir umask
# Temporário (sessão)
umask 002
# Permanente (em ~/.bashrc ou /etc/profile)
umask 002
Exemplos Práticos
Cenário 1: Diretório Compartilhado
# Criar diretório compartilhado
sudo mkdir /srv/shared
sudo chgrp developers /srv/shared
sudo chmod 2775 /srv/shared # SGID
# Novos arquivos herdarão o grupo
Cenário 2: Permissões Detalhadas
# Arquivo com permissões específicas
setfacl -m u:user1:rw arquivo.txt
setfacl -m u:user2:r arquivo.txt
setfacl -m g:developers:rwx arquivo.txt
Cenário 3: Diretório Colaborativo
# Diretório onde todos podem criar mas não excluir
sudo mkdir /srv/collab
sudo chmod 1777 /srv/collab # Sticky Bit + todos os direitos
Resumo
Neste capítulo, você aprendeu:
SUID: Execução com permissões do proprietário
SGID: Execução com permissões do grupo, herança de grupo
Sticky Bit: Impede exclusão por outros
ACL: Permissões detalhadas, mais flexíveis que o padrão
umask: Permissões padrão de novos arquivos
Prática: Combinar para necessidades específicas
Próximos Passos
Capítulo 5.4: Boas Práticas
Módulo 6: Shell Scripting
Capítulo criado em: Dezembro 2024