Como criar um utilizador em Linux com o comando useradd

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 sudo ou root.
  • 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

FlagFunçãoExemplo
-mCria o diretório home do utilizadoruseradd -m joao
-d <dir>Define um diretório home personalizadouseradd -d /srv/joao joao
-s <shell>Define a shell de loginuseradd -s /bin/bash joao
-c "<texto>"Comentário (tipicamente o nome completo)useradd -c "Joao Silva" joao
-G <grupo1,grupo2>Grupos secundáriosuseradd -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 contauseradd -e 2026-12-31 joao
-u <UID>Atribui UID específicouseradd -u 1500 joao
-rCria conta de sistema (UID baixo, sem home)useradd -r servico
-NNão cria grupo com o mesmo nome do utilizadoruseradd -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ísticauseraddadduser
NívelBaixo (binário)Alto (script Perl)
InteratividadeNão interativoInterativo (faz perguntas)
Diretório homeOpcional (-m)Cria por defeito
Palavra-passePasso separadoPede de imediato
PortabilidadeTodas as distribuiçõesSobretudo Debian/Ubuntu
Ideal paraScripts e automaçãoUso 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/shadowhash 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

  1. Princípio do menor privilégio: não adiciones o utilizador ao grupo sudo a menos que seja estritamente necessário.
  2. 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_config em servidores expostos.
  3. Política de expiração: para contas temporárias, define expiração com -e e revê com chage -l <user>.
  4. Shell adequada: contas de serviço devem usar /usr/sbin/nologin ou /bin/false.
  5. UID consistente entre servidores: em ambientes multi-host com partilhas NFS, mantém UIDs idênticos para evitar problemas de permissões.
  6. Auditoria: registos relevantes em /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL/CentOS).
  7. MFA: em sistemas críticos, complementa com libpam-google-authenticator ou equivalente.
  8. 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

ErroCausaSolução
useradd: user 'joao' already existsConta já existeVerifica com id joao ou escolhe outro nome
useradd: group 'developers' does not existGrupo não existeCria com sudo groupadd developers
Diretório home não criadoEsqueceste -msudo mkhomedir_helper joao ou usermod -m -d /home/joao joao
Login falha imediatamenteShell errada ou nologinsudo 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.

Comentários

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *