Os 7 fundamentos do least privilege no Linux: guia definitivo de segurança de permissões

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Domine o princípio do menor privilégio no Linux e proteja seu sistema com controle total sobre usuários, grupos e permissões.

O princípio do menor privilégio — ou Least Privilege — é uma das pedras angulares da segurança da informação. No contexto de sistemas Linux, ele significa que usuários, processos e programas devem ter apenas os privilégios estritamente necessários para executar suas funções. A aplicação consistente do least privilege Linux ajuda a mitigar vulnerabilidades, reduzir a superfície de ataque e conter possíveis danos causados por falhas ou ataques bem-sucedidos.

Este artigo oferece um guia completo, técnico e didático sobre como aplicar o least privilege no Linux, desde o gerenciamento básico de usuários até o uso avançado de ferramentas como ACLs, capabilities, PAM, SELinux e AppArmor. Vamos explorar cada conceito de forma analítica e profunda, sempre com foco na prática e na segurança real dos sistemas.

O que é o princípio do menor privilégio e por que ele é crucial para a segurança Linux?

Definição e benefícios

O princípio do menor privilégio estabelece que nenhum usuário ou processo deve ter mais permissões do que o necessário. Isso se aplica a arquivos, comandos, rede, execução de binários e acesso a dispositivos.

Benefícios principais:

  • Redução da superfície de ataque: limita a exposição de recursos críticos.
  • Confinamento de falhas: se um processo for comprometido, o impacto será restrito.
  • Prevenção contra escalonamento de privilégios: usuários comuns não podem se tornar root sem autorização.
  • Conformidade com normas de segurança: como NIST SP 800-53 e ISO/IEC 27001.

Consequências de não aplicar o Least Privilege

  • Execução inadvertida de comandos críticos.
  • Processos maliciosos ganham acesso a arquivos sensíveis.
  • Auditoria mais difícil: muitos privilégios diluem a responsabilidade.
  • Maior risco de rootkits e escalation exploits.

Fundamentos das permissões Linux: usuários, grupos e outros

UID, GID e o modelo tradicional de permissões (rwx)

No Linux, tudo é arquivo. Cada arquivo/diretório possui:

  • Um usuário dono (UID).
  • Um grupo associado (GID).
  • Permissões para usuário, grupo e outros, representadas por letras r (leitura), w (escrita), x (execução).

Exemplo com ls -l:

-rwxr-x--- 1 maria desenvolvedores 10320 jul 10 08:00 script.sh

Explicação:

  • maria pode ler, escrever e executar.
  • O grupo desenvolvedores pode ler e executar.
  • “Outros” não têm nenhum acesso.

Comandos básicos de gerenciamento de usuários e grupos Linux

Criar usuário:

sudo useradd -m joao

Cria o usuário joao com diretório home.

Modificar grupo primário:

sudo usermod -g engenheiros joao

Criar grupo:

sudo groupadd suporte

Adicionar usuário a grupo secundário:

sudo gpasswd -a joao suporte

Remover usuário de grupo:

sudo gpasswd -d joao suporte

Excluir usuário:

sudo userdel -r joao

Manipulação de permissões Linux segurança (chmod, chown, chgrp)

Alterar permissões com chmod:

chmod 750 script.sh

Significa:

  • 7 (usuário): rwx
  • 5 (grupo): r-x
  • 0 (outros): —

Alterar dono do arquivo com chown:

sudo chown joao:engenheiros script.sh

Alterar apenas grupo com chgrp:

sudo chgrp suporte relatório.pdf

SUID, SGID e Sticky Bit: conceitos e riscos

  • SUID (chmod u+s): executa com permissões do dono (ex: /usr/bin/passwd).
  • SGID (chmod g+s): herda o grupo do diretório.
  • Sticky Bit (chmod +t): impede que usuários removam arquivos de outros em pastas públicas (ex: /tmp).

Atenção: o uso indevido de SUID/SGID pode abrir brechas de escalonamento de privilégios.

Gerenciamento avançado de permissões para least privilege Linux

ACLs (Access Control Lists)

Permitem permissões além do modelo rwx.

Definir ACL:

setfacl -m u:joao:rw relatório.txt

Ver ACLs:

getfacl relatório.txt

Exemplo de saída:

# file: relatório.txt
# owner: maria
# group: engenharia
user::rw-
user:joao:rw-
group::r--
mask::rw-
other::---

Sudoers: acesso privilegiado seguro

Editar com segurança:

sudo visudo

Exemplo de regra mínima:

joao ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart apache2

João pode reiniciar o Apache sem senha, mas não tem acesso irrestrito.

Agrupar comandos:

Cmnd_Alias WEB_CMDS = /usr/bin/systemctl restart apache2, /usr/bin/systemctl status apache2

Depois:

joao ALL=(ALL) NOPASSWD: WEB_CMDS

Capabilities: granularidade sem SUID

Permissões específicas atribuídas a binários.

Ver capabilities:

getcap /usr/bin/ping

Saída esperada:

/usr/bin/ping = cap_net_raw+ep

Atribuir capacidade:

sudo setcap cap_net_bind_service=+ep /usr/bin/python3

chroot: prisão de processo

Cria um ambiente isolado com acesso apenas a arquivos selecionados.

Exemplo:

sudo chroot /opt/jail /bin/bash

Ideal para FTP, serviços legados ou ambientes de teste.

Ferramentas e frameworks para reforçar a segurança de permissões Linux

PAM (Pluggable Authentication Modules)

Controla autenticação, sessões e permissões em /etc/pam.d.

Exemplo de restrição por horário (pam_time):

login;*;joao;!Al1700-0800

Impede login fora do horário comercial.

SELinux e AppArmor

Ambos implementam controle de acesso obrigatório (MAC).

CaracterísticaSELinuxAppArmor
PolíticaBaseada em contexto de labelsBaseada em caminhos de arquivos
ComplexidadeAltaModerada
FlexibilidadeMáximaBoa
AdoçãoRed Hat, FedoraUbuntu, Debian

Ambos complementam o least privilege Linux ao controlar o que processos podem fazer, mesmo como root.

Ferramentas de auditoria de permissões

  • Lynis: auditoria local de segurança.
  • OpenSCAP: validação de conformidade de segurança.

Estratégias para implementar o least privilege no gerenciamento de usuários e grupos Linux

  1. Mapeie funções e responsabilidades:
    • Crie grupos por função (ex: dev, ops, auditoria).
  2. Segregue funções críticas:
    • Administração de sistema ≠ administração de banco de dados.
  3. Faça revisões periódicas:
    • Use scripts ou auditd para listar usuários com sudo/root.
  4. Automatize concessão/revogação:
    • Integre com LDAP ou scripts de provisionamento.
  5. Monitore atividades privilegiadas:
    • Registre sudo, su, login, e acesse via /var/log/auth.log.

Casos de uso e exemplos práticos

Servidores web (Nginx/Apache)

  • Crie usuário exclusivo (www-data).
  • Restrinja acesso ao /var/www apenas para este usuário.
  • Use setfacl para liberar temporariamente a edição por um dev.

Bancos de dados (PostgreSQL/MySQL)

  • Nunca rode como root.
  • Crie roles com privilégios mínimos (SELECT, INSERT, NO DROP).
  • Integre auditoria com PAM ou AppArmor.

Contêineres (Docker/Podman)

  • Nunca use root dentro do contêiner.
  • Use USER no Dockerfile.
  • Combine com seccomp, AppArmor e cap_drop.

Usuários de desenvolvimento

  • Acesso limitado a recursos produtivos.
  • Uso de sudo apenas para manutenção básica (sem shell root).

Glossário analítico

Root: usuário administrativo com acesso irrestrito. Equivalente ao “diretor geral” do sistema.

UID/GID: identificadores de usuários e grupos no sistema.

SUID/SGID: bits especiais que executam arquivos com os privilégios do dono/grupo.

ACL: lista de permissões adicionais por usuário/grupo para arquivos.

Capabilities: sistema moderno para atribuir poderes específicos sem SUID.

PAM: framework de autenticação modular.

SELinux/AppArmor: sistemas de controle de acesso obrigatórios (MAC) que restringem comportamentos, mesmo de processos root.

Least privilege: garantir que cada elemento do sistema (usuário ou programa) tenha apenas o mínimo de acesso necessário.

Conclusão

A aplicação do least privilege Linux é uma prática essencial para qualquer administrador de sistemas, desenvolvedor ou equipe de segurança. Compreender e aplicar corretamente os conceitos de permissões Linux segurança e o gerenciamento de usuários e grupos Linux é o primeiro passo para construir sistemas seguros, auditáveis e resilientes.

Ao combinar ferramentas básicas (chmod, chown, sudo) com técnicas avançadas (ACLs, capabilities, SELinux), é possível implementar políticas rigorosas de privilégio mínimo sem comprometer a funcionalidade.

Compartilhe este artigo