Gerenciamento de Usuarios e Grupos na Pratica - Configurando Ambientes Multiusuario

Gerenciamento de Usuarios e Grupos na Pratica - Configurando Ambientes Multiusuario

Pontos Principais

  • A diferenca entre useradd e adduser, e o padrao seguro para criacao de usuarios em producao
  • Como adicionar usuarios a grupos com usermod -aG e por que omitir -a causa perda de dados
  • Como ler /etc/passwd, /etc/shadow e /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 (-a e obrigatorio)
  • Verificar: id username / groups username
  • Nunca edite /etc/passwd diretamente -- use usermod em vez disso

Pre-requisitos

  • SO: Ubuntu / baseado em Debian (onde adduser tambem esta disponivel)
  • Execute comandos com sudo ou 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

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

Proximas Leituras