A criação de contas de utilizador é uma das tarefas mais frequentes na administração de sistemas Linux. Quer estejas a preparar um servidor de produção, a configurar uma estação de trabalho partilhada ou simplesmente a aprender administração de sistemas, dominar o comando useradd é essencial. Neste guia vais aprender, passo a passo, a criar utilizadores de forma segura, atribuir grupos, definir shells e palavras-passe, e validar a configuração.
Compreender o comando useradd
O useradd é uma utilidade de baixo nível que cria uma nova conta de utilizador no sistema. Ao executá-lo, o Linux atualiza vários ficheiros do sistema (/etc/passwd, /etc/shadow, /etc/group e /etc/gshadow) e, opcionalmente, cria o diretório home do utilizador.
Por ser uma ferramenta de baixo nível, o useradd exige privilégios administrativos (sudo ou root) e não pede confirmações — o que o torna ideal para automação, mas obriga a especificar explicitamente todas as opções.
Sintaxe básica
sudo useradd [opções] <nome_utilizador>
Exemplo mínimo (sem diretório home nem palavra-passe):
sudo useradd joao
Pré-requisitos
- Acesso a uma conta com privilégios
sudoouroot. - Acesso ao terminal (atalho típico: Ctrl+Alt+T).
- Conhecimento do nome de utilizador a criar (máximo 32 caracteres; recomenda-se minúsculas e sem caracteres especiais).
Criar um utilizador passo a passo
1. Abrir o terminal e validar privilégios
sudo -v
2. Criar a conta com diretório home
sudo useradd -m joao
A flag -m garante a criação automática do diretório /home/joao e copia o conteúdo de /etc/skel (ficheiros de configuração base como .bashrc, .profile, etc.).
3. Definir a palavra-passe
sudo passwd joao
Serão pedidas duas confirmações. Usa uma palavra-passe robusta (mínimo 12 caracteres, com maiúsculas, minúsculas, dígitos e símbolos).
4. Validar a criação
id joao grep "^joao:" /etc/passwd
Opções e flags do useradd
| Flag | Função | Exemplo |
|---|---|---|
-m | Cria o diretório home do utilizador | useradd -m joao |
-d <dir> | Define um diretório home personalizado | useradd -d /srv/joao joao |
-s <shell> | Define a shell de login | useradd -s /bin/bash joao |
-c "<texto>" | Comentário (tipicamente o nome completo) | useradd -c "Joao Silva" joao |
-G <grupo1,grupo2> | Grupos secundários | useradd -G sudo,docker joao |
-g <grupo> | Grupo primário (deve já existir) | useradd -g developers joao |
-e <AAAA-MM-DD> | Data de expiração da conta | useradd -e 2026-12-31 joao |
-u <UID> | Atribui UID específico | useradd -u 1500 joao |
-r | Cria conta de sistema (UID baixo, sem home) | useradd -r servico |
-N | Não cria grupo com o mesmo nome do utilizador | useradd -N -g equipa joao |
Exemplos avançados
Conta completa numa única linha
sudo useradd -m -s /bin/bash -c "Joao Silva" -G sudo,developers joao sudo passwd joao
Conta de serviço sem login interativo
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/appservice appservice
Contas de serviço devem ter nologin como shell e nunca devem ter palavra-passe definida — o acesso é feito por chaves SSH ou por sudo -u a partir de uma conta administrativa.
Conta temporária com expiração
sudo useradd -m -e 2026-08-31 -c "Estagiario verao" estagiario
Modificar um utilizador depois de criado
O comando usermod permite alterar propriedades da conta sem ter de a recriar:
# Mudar a shell sudo usermod -s /bin/zsh joao # Adicionar a um grupo sem remover dos atuais sudo usermod -aG docker joao # Mudar o diretorio home (move o conteudo) sudo usermod -d /srv/joao -m joao # Bloquear/desbloquear a conta sudo usermod -L joao sudo usermod -U joao
Atenção: esquecer a flag -a em -aG substitui os grupos existentes pelos novos — um erro comum que pode tirar privilégios indispensáveis ao utilizador (incluindo sudo).
Verificar e gerir utilizadores
# Listar UID, GID e grupos id joao # Listar todos os utilizadores do sistema cut -d: -f1 /etc/passwd # Ver ultimo login last joao lastlog -u joao # Listar processos do utilizador ps -u joao
useradd vs adduser: qual usar?
Em distribuições baseadas em Debian (Debian, Ubuntu, Linux Mint), existe também o comando adduser. Embora o nome seja parecido, são ferramentas distintas:
| Característica | useradd | adduser |
|---|---|---|
| Nível | Baixo (binário) | Alto (script Perl) |
| Interatividade | Não interativo | Interativo (faz perguntas) |
| Diretório home | Opcional (-m) | Cria por defeito |
| Palavra-passe | Passo separado | Pede de imediato |
| Portabilidade | Todas as distribuições | Sobretudo Debian/Ubuntu |
| Ideal para | Scripts e automação | Uso manual rápido |
Recomendação: usa useradd em scripts e configuração reprodutível (Ansible, Puppet, contentores); usa adduser quando estás a configurar um servidor manualmente e queres uma experiência guiada.
Ficheiros do sistema afetados
/etc/passwd— informação básica da conta (UID, GID, shell, home)./etc/shadow— hash da palavra-passe e políticas de expiração./etc/group— lista de grupos e respetivos membros./etc/gshadow— informação sensível dos grupos./etc/skel/— ficheiros copiados para o novo home./etc/login.defs— valores por defeito (UID mínimo, política de palavra-passe, etc.).
Boas práticas de segurança
- Princípio do menor privilégio: não adiciones o utilizador ao grupo
sudoa menos que seja estritamente necessário. - Autenticação por chave SSH: sempre que possível, prefere chaves SSH a palavras-passe; desativa autenticação por palavra-passe em
/etc/ssh/sshd_configem servidores expostos. - Política de expiração: para contas temporárias, define expiração com
-ee revê comchage -l <user>. - Shell adequada: contas de serviço devem usar
/usr/sbin/nologinou/bin/false. - UID consistente entre servidores: em ambientes multi-host com partilhas NFS, mantém UIDs idênticos para evitar problemas de permissões.
- Auditoria: registos relevantes em
/var/log/auth.log(Debian/Ubuntu) ou/var/log/secure(RHEL/CentOS). - MFA: em sistemas críticos, complementa com
libpam-google-authenticatorou equivalente. - Revisão periódica: automatiza a revisão de contas inativas (script +
lastlog) e desativa as que excedam o limite definido pela tua política.
Resolução de problemas comuns
| Erro | Causa | Solução |
|---|---|---|
useradd: user 'joao' already exists | Conta já existe | Verifica com id joao ou escolhe outro nome |
useradd: group 'developers' does not exist | Grupo não existe | Cria com sudo groupadd developers |
| Diretório home não criado | Esqueceste -m | sudo mkhomedir_helper joao ou usermod -m -d /home/joao joao |
| Login falha imediatamente | Shell errada ou nologin | sudo usermod -s /bin/bash joao |
Conclusão
Dominar o useradd — e saber quando usar o adduser — é uma das competências base de qualquer administrador de sistemas Linux. Mais do que decorar as flags, importa compreender que uma conta de utilizador representa um perímetro de segurança: cada conta criada é uma porta para o sistema, e cada permissão atribuída amplia a superfície de ataque. Aplica sempre o princípio do menor privilégio, audita regularmente as contas existentes e prefere automação reprodutível em vez de configuração manual.
Na próxima leitura, mostramos o procedimento inverso: como apagar utilizadores em Linux de forma segura, sem deixar ficheiros órfãos nem brechas de auditoria.
Domina a linha de comandos Linux
Dominar o useradd é só o primeiro passo na administração de sistemas. O Workshop — Linha de Comandos Linux da HJFR leva-te do primeiro prompt à automação com scripts: 13 módulos e 184 capítulos interativos, em português, com demonstrações de terminal e exercícios práticos na nossa plataforma de e-learning.
Deixe um comentário