Como organizar usuários, grupos e permissões no Linux de forma segura

Organizar usuários, grupos e permissões no Linux é a base da segurança do sistema. O objetivo principal deve ser sempre o Princípio do Menor Privilégio (PoLP): um usuário ou processo deve ter apenas o acesso mínimo necessário para realizar sua função.

Aqui está um guia estruturado para organizar seu ambiente de forma segura e escalável.


1. Estratégia de Grupos (A Chave da Organização)

O erro mais comum é atribuir permissões diretamente a usuários individuais. A forma correta e escalável é gerenciar permissões via Grupos.

  • Grupos Funcionais: Crie grupos baseados em funções ou departamentos (ex: devs, admins, auditores, webmasters).
  • Fluxo de Trabalho:
    1. Crie o grupo.
    2. Dê permissão ao grupo no diretório/arquivo.
    3. Adicione os usuários ao grupo.
  • Vantagem: Quando um funcionário sai ou muda de área, você apenas remove o usuário do grupo, sem precisar caçar arquivos no sistema para alterar permissões.

Comandos Úteis:

# Criar grupo
groupadd developers

# Adicionar usuário ao grupo (o -aG mantém os outros grupos do usuário)
usermod -aG developers joao

# Verificar grupos de um usuário
id joao

2. Hierarquia de Permissões (UGO e Octal)

Entenda a estrutura de propriedade para aplicar as regras corretas. O Linux divide permissões em três níveis:

  1. User (u): O dono do arquivo.
  2. Group (g): O grupo associado ao arquivo.
  3. Others (o): Todo o resto do mundo (o mais perigoso).

A Regra de Ouro da Segurança

Evite chmod 777 a todo custo. Isso dá controle total a qualquer um. Para diretórios compartilhados, use configurações mais restritas.

Permissões Recomendadas:

  • Arquivos de configuração sensíveis: 600 (rw——-) ou 640 (rw-r—–). Apenas o dono lê/escreve; grupo lê (se necessário).
  • Scripts/Binários: 750 (rwxr-x—). Dono faz tudo, grupo executa, outros não têm acesso.
  • Diretórios Web: Geralmente 755 para diretórios e 644 para arquivos.

3. Permissões Especiais (SetUID, SetGID, Sticky Bit)

Para cenários avançados onde o padrão rwx não basta.

A. SetGID (g+s) – Para Colaboração

Quando vários usuários precisam editar arquivos no mesmo diretório, o problema comum é: O usuário A cria um arquivo, e o usuário B não consegue editar porque o arquivo pertence ao grupo do usuário A.

Solução: Use o SetGID no diretório pai. Isso força todos os arquivos criados lá dentro a herdarem o grupo do diretório, não do usuário criador.

# 1. Mudar o grupo do diretório
chown :developers /var/www/projeto

# 2. Aplicar permissão de escrita para o grupo
chmod 770 /var/www/projeto

# 3. Ativar o SetGID (o '2' na frente ou g+s)
chmod 2770 /var/www/projeto
# ou
chmod g+s /var/www/projeto

B. Sticky Bit (+t) – Para Diretórios Públicos

Útil para pastas como /tmp ou pastas de upload compartilhadas. Permite que todos criem arquivos, mas somente o dono (ou root) pode deletar seu próprio arquivo. Impede que o Usuário B apague o trabalho do Usuário A.

chmod +t /home/share/publico

4. Controle Granular com ACLs (Access Control Lists)

Às vezes, o modelo Dono/Grupo/Outros é muito rígido. Se você precisa que o Usuário A leia, o Usuário B escreva e o Usuário C não tenha acesso (e todos estão em grupos diferentes), use ACLs.

Exemplo:

# Dar permissão de leitura especificamente para o usuário 'ana' num arquivo
setfacl -m u:ana:r arquivo_confidencial.txt

# Verificar as ACLs
getfacl arquivo_confidencial.txt

# Remover todas as ACLs
setfacl -b arquivo_confidencial.txt

5. Gestão de Root e Sudoers

Nunca logue diretamente como root. Use o sudo para rastreabilidade (logs) e segurança.

  • Edição Segura: Sempre use visudo para editar o /etc/sudoers. Ele verifica a sintaxe antes de salvar, evitando que você quebre o sistema.
  • Sudo por Grupo: Em vez de adicionar usuários individuais ao sudoers, descomente a linha do grupo wheel (RHEL/CentOS/Alma) ou sudo (Debian/Ubuntu) e adicione os administradores a esse grupo.
# Permitir que membros do grupo 'sysadmin' usem sudo sem senha (usar com cautela)
%sysadmin ALL=(ALL) NOPASSWD: ALL

6. Auditoria de Segurança

Periodicamente, você deve verificar se existem arquivos com permissões perigosas.

Encontrar arquivos com permissão 777 (perigo mundial):

find /var/www -type f -perm 0777

Encontrar arquivos com SUID (podem ser executados com privilégios do dono, risco de escalada de privilégio):

find / -perm /4000 -type f 2>/dev/null

Resumo das Melhores Práticas

AçãoComando/ConceitoPor quê?
Trocar Donochown user:group arquivoDefine quem é responsável.
Trocar Permissãochmod 750Define quem pode ler/escrever.
Colaboraçãochmod g+s pastaGarante herança de grupo.
Segurançaumask 027Define permissão padrão restritiva para novos arquivos.
ExceçõessetfaclPara regras que fogem do padrão.

Clique aqui e consulte nossos planos de Gerenciamento de Servidor