Gerenciamento de Usuarios e Grupos na Pratica - Configurando Ambientes Multiusuario
Pontos Principais
- A diferenca entre
useraddeadduser, e o padrao seguro para criacao de usuarios em producao - Como adicionar usuarios a grupos com
usermod -aGe por que omitir-acausa perda de dados - Como ler
/etc/passwd,/etc/shadowe/etc/group - Uma configuracao completa de ambiente multiusuario do zero
Referencia Rapida (Padrao de Producao)
- Adicionar usuario:
useradd -m -s /bin/bash username->passwd username - Adicionar ao grupo:
usermod -aG groupname username(-ae obrigatorio) - Verificar:
id username/groups username - Nunca edite
/etc/passwddiretamente -- useusermodem vez disso
Pre-requisitos
- SO: Ubuntu / baseado em Debian (onde
addusertambem esta disponivel) - Execute comandos com
sudoou como root
Qual e a diferenca entre useradd e adduser?
useradd e um binario de baixo nivel disponivel em todas as distribuicoes Linux. adduser e um wrapper interativo de alto nivel (Perl/Python) encontrado em sistemas baseados em Debian. Para scripts, prefira useradd pela portabilidade; para uso manual interativo, adduser e mais rapido.
| useradd | adduser | |
|---|---|---|
| Tipo | Binario | Wrapper script |
| Interativo | Nao | Sim |
| Diretorio home | Requer -m |
Criado por padrao |
| Portabilidade | Todas as distribuicoes | Somente baseadas em Debian |
Como adicionar um usuario?
Crie um usuario com useradd -m -s /bin/bash username, depois defina uma senha com passwd. Este e o procedimento padrao 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
Opcoes principais:
| Opcao | Descricao |
|---|---|
-m |
Criar diretorio home |
-s /bin/bash |
Definir shell padrao |
-d /path |
Especificar caminho do home |
-u 1500 |
Definir UID explicito |
-g groupname |
Definir grupo primario |
-G grp1,grp2 |
Definir grupos suplementares |
Verifique o usuario criado:
id alice
uid=1001(alice) gid=1001(alice) groups=1001(alice)
Usando adduser: sudo adduser alice faz tudo interativamente em um unico comando. Use isto para configuracao manual; use useradd em scripts.
Como criar e gerenciar grupos?
Use groupadd groupname para criar um grupo. Grupos sao 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 nao limpa referencias nas entradas de grupos suplementares em /etc/group. Apos groupdel, verifique se nao ha entradas obsoletas:
grep ':dev:' /etc/group
Como adicionar um usuario a um grupo?
Use usermod -aG groupname username. A flag -a (append) e critica -- 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 destroi a associacao de grupos existente.
# Perigoso: remove alice de todos os outros grupos incluindo sudo sudo usermod -G developers alice
Se voce acidentalmente remover um usuario privilegiado do grupo sudo, precisara de outra sessao root para recuperar.
Alteracoes de grupo nao sao aplicadas a sessoes ativas. Use newgrp ou faca re-login para ativar:
# Ativar novo grupo sem re-login newgrp developers
Como ler /etc/passwd e /etc/shadow?
/etc/passwd armazena informacoes da conta do usuario. /etc/shadow armazena senhas em hash (legivel apenas pelo root). Sistemas modernos separam esses dois arquivos -- historicamente, hashes de senha eram armazenados em /etc/passwd que era legivel 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 alteracoes. Um /etc/passwd malformado impedira todos os logins.
Como modificar ou excluir um usuario?
usermod lida com quase todas as alteracoes de atributos. Use userdel para remover um usuario; adicione -r para tambem remover o diretorio 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 e irreversivel. Verifique o conteudo do diretorio home antes de excluir:
ls -la /home/alice
Como construir um ambiente multiusuario do zero?
Aqui esta 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 diretorio herdam automaticamente o grupo developers, para que todos os membros do grupo possam le-los e escreve-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 privilegios de administrador a um usuario no Ubuntu, adicione-o ao grupo sudo:
sudo usermod -aG sudo alice
Para controle mais granular, use visudo para configurar permissoes de comandos especificos.
Como verificar quem esta logado atualmente?
Use who ou w para ver sessoes ativas. w tambem mostra o que cada usuario esta 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 historico de login com last:
last -n 10