Pular para o conteúdo principal

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