Gestão de usuários: base da segurança em servidores Linux
Controlar quem tem acesso ao quê é uma das responsabilidades mais críticas na administração de servidores. No Linux, isso é feito por meio de usuários, grupos e permissões — um sistema simples mas extremamente poderoso quando bem configurado.
Criando usuários
# Criar usuário com diretório home
useradd -m joao
# Criar com shell, home e comentário
useradd -m -s /bin/bash -c "João Silva" joao
# Definir senha imediatamente
passwd joao
# Criar usuário de sistema (sem login, sem home) — para serviços
useradd --system --no-create-home nginx-user
Modificando usuários existentes
# Mudar shell padrão
usermod -s /bin/zsh joao
# Mudar nome de usuário
usermod -l novo-nome joao
# Bloquear conta
usermod -L joao
# Desbloquear conta
usermod -U joao
# Definir data de expiração
usermod -e 2025-12-31 joao
Removendo usuários
userdel joao # remove usuário (mantém home)
userdel -r joao # remove usuário E o diretório home
Gerenciando grupos
# Criar grupo
groupadd devs
groupadd --system servicos # grupo de sistema
# Adicionar usuário a grupo
usermod -aG devs joao # -a = append (não remove grupos existentes)
usermod -aG sudo joao # adicionar ao grupo sudo
# Ver grupos do usuário
groups joao
id joao
# Remover usuário de grupo
gpasswd -d joao devs
# Listar todos os grupos
cat /etc/group
Configurando sudo
O sudo permite que usuários executem comandos como root de forma controlada e auditável:
# Adicionar usuário ao grupo sudo (Ubuntu/Debian)
usermod -aG sudo joao
# Adicionar ao grupo wheel (CentOS/RHEL)
usermod -aG wheel joao
# Editar permissões granulares (SEMPRE use visudo, nunca edite direto)
sudo visudo
# Exemplos de regras no sudoers:
# joao ALL=(ALL:ALL) ALL # sudo completo
# joao ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx # sem senha para este comando
# %devs ALL=(ALL) /usr/bin/docker # grupo devs pode usar docker
Informações sobre usuários
whoami # usuário atual
who # usuários logados no sistema
w # usuários logados com atividade
last # histórico de logins
lastlog # último login de cada usuário
id # UID, GID e grupos do usuário atual
cat /etc/passwd # lista de usuários do sistema
cat /etc/shadow # hashes de senhas (somente root)
Boas práticas de segurança
- Nunca use root diretamente — crie usuários com sudo específico
- Princípio do menor privilégio — cada usuário/serviço só tem acesso ao que precisa
- Desabilite login root via SSH — edite
/etc/ssh/sshd_config e defina PermitRootLogin no
- Use chaves SSH em vez de senhas para acesso remoto
- Audite logins suspeitos com
last e journalctl -u ssh
# Configuração segura do SSH (/etc/ssh/sshd_config)
PermitRootLogin no
PasswordAuthentication no # apenas chaves SSH
MaxAuthTries 3
AllowUsers joao deploy # apenas esses usuários podem fazer SSH
sudo systemctl restart sshd