Gerenciamento de Usuários e Grupos na Prática - Configurando Ambientes Multiusuário
Pontos Principais
- A diferença entre
useraddeadduser, e o padrão seguro para criação de usuários em produção - Como adicionar usuários a grupos com
usermod -aGe por que omitir-acausa perda de dados - Como ler
/etc/passwd,/etc/shadowe/etc/group - Uma configuração completa de ambiente multiusuário do zero
Referência Rápida (Padrão de Produção)
- Adicionar usuário:
useradd -m -s /bin/bash username->passwd username - Adicionar ao grupo:
usermod -aG groupname username(-aé obrigatório) - Verificar:
id username/groups username - Nunca edite
/etc/passwddiretamente -- useusermodem vez disso
Pré-requisitos
- SO: Ubuntu / baseado em Debian (onde
addusertambém está disponível) - Execute comandos com
sudoou como root
Qual é a diferença entre useradd e adduser?
useradd é um binário de baixo nível disponível em todas as distribuições Linux. adduser é um wrapper interativo de alto nível (Perl/Python) encontrado em sistemas baseados em Debian. Para scripts, prefira useradd pela portabilidade; para uso manual interativo, adduser é mais rápido.
| useradd | adduser | |
|---|---|---|
| Tipo | Binário | Wrapper script |
| Interativo | Não | Sim |
| Diretório home | Requer -m |
Criado por padrão |
| Portabilidade | Todas as distribuições | Somente baseadas em Debian |
Como adicionar um usuário?
Crie um usuário com useradd -m -s /bin/bash username, depois defina uma senha com passwd. Este é o procedimento padrão na maioria dos sistemas.
# Criar usuario com diretorio home sudo useradd -m -s /bin/bash alice # Definir senha sudo passwd alice
New password: Retype new password: passwd: password updated successfully
Opções principais:
| Opção | Descrição |
|---|---|
-m |
Criar diretório home |
-s /bin/bash |
Definir shell padrão |
-d /path |
Especificar caminho do home |
-u 1500 |
Definir UID explícito |
-g groupname |
Definir grupo primário |
-G grp1,grp2 |
Definir grupos suplementares |
Verifique o usuário criado:
id alice
uid=1001(alice) gid=1001(alice) groups=1001(alice)
Usando adduser: sudo adduser alice faz tudo interativamente em um único comando. Use isto para configuração manual; use useradd em scripts.
Como criar e gerenciar grupos?
Use groupadd groupname para criar um grupo. Grupos são armazenados em /etc/group e formam a base do controle de acesso compartilhado a arquivos no Linux.
# Criar um grupo sudo groupadd developers # Verificar getent group developers
developers:x:1002:
Modificando e excluindo grupos:
# Renomear um grupo sudo groupmod -n dev developers # Excluir um grupo sudo groupdel dev
Excluir um grupo não limpa referências nas entradas de grupos suplementares em /etc/group. Após groupdel, verifique se não há entradas obsoletas:
grep ':dev:' /etc/group
Como adicionar um usuário a um grupo?
Use usermod -aG groupname username. A flag -a (append) é crítica -- omiti-la substitui todos os grupos suplementares existentes pelo novo.
# Adicionar ao grupo (-a e obrigatorio) sudo usermod -aG developers alice # Adicionar a multiplos grupos de uma vez sudo usermod -aG developers,sudo alice # Verificar groups alice
alice : alice developers sudo
Omitir -a destrói a associação de grupos existente.
# Perigoso: remove alice de todos os outros grupos incluindo sudo sudo usermod -G developers alice
Se você acidentalmente remover um usuário privilegiado do grupo sudo, precisará de outra sessão root para recuperar.
Alterações de grupo não são aplicadas a sessões ativas. Use newgrp ou faça re-login para ativar:
# Ativar novo grupo sem re-login newgrp developers
Como ler /etc/passwd e /etc/shadow?
/etc/passwd armazena informações da conta do usuário. /etc/shadow armazena senhas em hash (legível apenas pelo root). Sistemas modernos separam esses dois arquivos -- historicamente, hashes de senha eram armazenados em /etc/passwd que era legível por todos.
/etc/passwd -- 7 campos separados por dois-pontos:
alice:x:1001:1001:Alice Smith:/home/alice:/bin/bash
^ ^ ^ ^ ^ ^ ^
| | | | | | Shell padrao
| | | | | Diretorio home
| | | | GECOS (nome completo, etc.)
| | | GID (grupo primario)
| | UID
| Senha ('x' = armazenada em /etc/shadow)
Nome de usuario
/etc/shadow -- 9 campos separados por dois-pontos:
sudo grep alice /etc/shadow
alice:$6$salt$hashedpassword...:19500:0:99999:7:::
^ ^ ^ ^ ^
| | | | Dias de aviso
| | | Idade maxima da senha
| | Idade minima da senha
| Ultima alteracao (dias desde epoch)
Hash ($6$ = SHA-512)
Nunca edite /etc/passwd diretamente. Use usermod ou chsh para fazer alterações. Um /etc/passwd malformado impedirá todos os logins.
Como modificar ou excluir um usuário?
usermod lida com quase todas as alterações de atributos. Use userdel para remover um usuário; adicione -r para também remover o diretório home.
# Alterar shell de login sudo usermod -s /bin/zsh alice # Mover diretorio home (move os arquivos tambem) sudo usermod -d /home/alice2 -m alice # Bloquear conta (desabilitar login) sudo usermod -L alice # Desbloquear conta sudo usermod -U alice # Excluir usuario (manter diretorio home) sudo userdel alice # Excluir usuario e diretorio home sudo userdel -r alice
userdel -r é irreversível. Verifique o conteúdo do diretório home antes de excluir:
ls -la /home/alice
Como construir um ambiente multiusuário do zero?
Aqui está um passo a passo completo para configurar um servidor de desenvolvimento compartilhado.
# 1. Criar um grupo compartilhado sudo groupadd developers # 2. Criar usuarios com o grupo pre-atribuido sudo useradd -m -s /bin/bash -G developers alice sudo useradd -m -s /bin/bash -G developers bob # 3. Definir senhas sudo passwd alice sudo passwd bob # 4. Criar um diretorio compartilhado sudo mkdir /srv/project sudo chown root:developers /srv/project sudo chmod 2775 /srv/project # setgid: novos arquivos herdam o grupo automaticamente
O 2 em chmod 2775 define o bit setgid. Arquivos criados dentro deste diretório herdam automaticamente o grupo developers, para que todos os membros do grupo possam lê-los e escrevê-los.
# Verificar o diretorio ls -ld /srv/project
drwxrwsr-x 2 root developers 4096 Jun 2 00:00 /srv/project
^
's' = bit setgid ativo
# Confirmar todos os membros getent group developers
developers:x:1002:alice,bob
Concedendo acesso sudo
Para dar privilégios de administrador a um usuário no Ubuntu, adicione-o ao grupo sudo:
sudo usermod -aG sudo alice
Para controle mais granular, use visudo para configurar permissões de comandos específicos.
Como verificar quem está logado atualmente?
Use who ou w para ver sessões ativas. w também mostra o que cada usuário está executando no momento.
who
alice pts/0 2026-06-02 09:00 (192.168.1.10) bob pts/1 2026-06-02 09:05 (192.168.1.11)
w
09:10:00 up 2 days, 3:00, 2 users, load average: 0.10, 0.08, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT alice pts/0 192.168.1.10 09:00 2:00 0.05s 0.01s bash bob pts/1 192.168.1.11 09:05 0.00s 0.10s 0.02s top
Veja o histórico de login com last:
last -n 10