Gerenciamento de Usuários e Grupos na Prática - Configurando Ambientes Multiusuário

Gerenciamento de Usuários e Grupos na Prática - Configurando Ambientes Multiusuário

Pontos Principais

  • A diferença entre useradd e adduser, e o padrão seguro para criação de usuários em produção
  • Como adicionar usuários a grupos com usermod -aG e por que omitir -a causa perda de dados
  • Como ler /etc/passwd, /etc/shadow e /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/passwd diretamente -- use usermod em vez disso

Pré-requisitos

  • SO: Ubuntu / baseado em Debian (onde adduser também está disponível)
  • Execute comandos com sudo ou 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

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

Próximas Leituras