⬅ Voltar ao Dashboard Módulo 1 — Fundamentos Linux

👥 Gerenciamento de Usuários

Aula 1.4 — Crie, modifique e organize contas de usuário. Configure grupos e use sudo com segurança

🏢 Usuários e Grupos no Linux

O Linux é um sistema multiusuário por natureza. Cada pessoa ou serviço que acessa o sistema possui uma conta com permissões específicas. Pense em uma empresa: cada funcionário tem seu crachá (login), sua mesa (pasta home) e acesso apenas às salas autorizadas (permissões).

👑 Root UID = 0 O superusuário. Pode tudo no sistema. Equivale à chave mestra do prédio. Use com extremo cuidado!
👨‍💻 Usuários Comuns UID ≥ 1000 Pessoas reais. Cada uma tem sua pasta home e permissões limitadas ao que lhe foi concedido.
⚙️ Usuários de Sistema UID 1 – 999 Contas para serviços (apache, mysql…). Não são pessoas — são programas rodando!

Por que grupos existem?

Grupos permitem gerenciar permissões em massa. Em vez de dar acesso a uma pasta para cada usuário individualmente, você cria um grupo equipe-dev, adiciona os membros e define permissões uma única vez. Todo usuário tem um grupo primário (criado com o usuário) e pode pertencer a múltiplos grupos secundários.

bash — verificando identidade
usuario@servidor:~$ whoami usuario usuario@servidor:~$ id uid=1000(usuario) gid=1000(usuario) grupos=1000(usuario),27(sudo),100(users) usuario@servidor:~$ groups usuario sudo users

➕ Criando e Gerenciando Usuários

O Linux oferece dois conjuntos de ferramentas: useradd (baixo nível, ideal para scripts) e adduser (interativo, mais amigável em Debian/Ubuntu). Mesmo resultado — experiências diferentes.

useradd — para scripts

Não é interativo
Precisa de opções explícitas
Disponível em todas as distros
Ideal para automação

adduser — para uso manual

Interativo e amigável
Configura tudo automaticamente
Disponível no Debian/Ubuntu
Ideal para o dia a dia

Principais opções do useradd

-m Cria a pasta home — sem isso, ela não é criada!
-s /bin/bash Define o shell padrão do usuário
-c "Nome" Comentário com o nome real do usuário
-g grupo Define o grupo primário na criação
-G g1,g2 Define grupos secundários na criação
bash — criando usuários
# useradd: criar com opções (recomendado para scripts) root@servidor:~# useradd -m -s /bin/bash -c "João Silva" joao root@servidor:~# passwd joao Nova senha: passwd: senha atualizada com sucesso # adduser: interativo, faz tudo (recomendado no dia a dia) root@servidor:~# adduser maria Adicionando usuário 'maria' ... Criando diretório pessoal '/home/maria' ... Nova senha: A informação está correta? [S/n] S

⚠️ Atenção! useradd joao sem a opção -m NÃO cria a pasta home. O usuário existirá no sistema, mas sem seu diretório pessoal. Sempre use -m ao criar usuários comuns, ou prefira adduser.

📄 Os Arquivos /etc/passwd e /etc/shadow

Todos os usuários ficam registrados em /etc/passwd — legível por todos, pois programas precisam consultar dados de usuários. As senhas ficam em /etc/shadow, acessível apenas pelo root.

Estrutura do /etc/passwd — 7 campos separados por ":"

usuario : x : 1000 : 1000 : Usuário da Silva : /home/usuario : /bin/bash
Login — nome do usuário
x — senha em /etc/shadow
UID — identificador único
GID — grupo primário
Info — nome completo
Home — diretório pessoal
Shell — shell padrão

📂 /etc/passwd

  • Legível por qualquer usuário
  • Contém informações básicas da conta
  • O campo de senha mostra apenas x
  • Consultado por muitos programas do sistema

🔒 /etc/shadow

  • Apenas root pode ler
  • Senha armazenada como hash — irreversível
  • $6$ no hash = SHA-512 (muito seguro)
  • Contém políticas de expiração de senha
bash — consultando usuários
usuario@servidor:~$ cat /etc/passwd | grep "joao" joao:x:1001:1001:João Silva:/home/joao:/bin/bash usuario@servidor:~$ cat /etc/shadow cat: /etc/shadow: Permissão negada root@servidor:~# cat /etc/shadow | grep "joao" joao:$6$xyz...hash...abc:19500:0:99999:7:::

👫 Gerenciando Grupos

Grupos são a forma mais eficiente de organizar permissões em servidores com múltiplos usuários. Em vez de configurar permissões individualmente, você cria um grupo com o nível de acesso desejado e adiciona os usuários relevantes.

bash — gerenciamento de grupos
# Criar um novo grupo root@servidor:~# groupadd desenvolvedores # Adicionar usuário a um grupo (use SEMPRE -aG, nunca apenas -G!) root@servidor:~# usermod -aG desenvolvedores maria root@servidor:~# usermod -aG desenvolvedores joao # Verificar membros do grupo root@servidor:~# getent group desenvolvedores desenvolvedores:x:1002:maria,joao # Remover grupo (só se não for grupo primário de ninguém) root@servidor:~# groupdel desenvolvedores

Grupos importantes do sistema

sudo Membros podem usar sudo — acesso administrativo (Debian/Ubuntu)
wheel Equivalente a sudo no CentOS/RHEL/Fedora
adm Pode ler logs do sistema em /var/log
www-data Servidor web Apache/Nginx — dono dos arquivos do site
docker Permite usar containers Docker sem sudo
dialout Acesso a portas seriais e USB

⚠️ Diferença crítica: usermod -G grupo usuario substitui todos os grupos secundários existentes! Use sempre usermod -aG grupo usuario (com o -a de append) para apenas adicionar sem remover os grupos atuais.

🦸 sudo e o Arquivo /etc/sudoers

sudo significa Super User DO. Permite que um usuário comum execute comandos com privilégios de root, sem precisar logar como root. É mais seguro porque registra tudo em log e exige autenticação do próprio usuário.

sudo comando

Executa um comando como root e volta imediatamente. Usa sua senha. Registra no log do sistema.

su — (troca de usuário)

Abre um shell completo como root até digitar exit. Usa a senha do root. Sem registro granular.

bash — sudo em ação
# sudo executa um comando como root e volta para usuário normal usuario@servidor:~$ sudo apt update [sudo] senha para usuario: Atingido:1 http://archive.ubuntu.com/ubuntu focal InRelease # Adicionar usuário ao grupo sudo (libera uso do sudo) root@servidor:~# usermod -aG sudo joao # Ver o que meu usuário pode fazer com sudo usuario@servidor:~$ sudo -l User usuario may run the following commands on servidor: (ALL : ALL) ALL # /etc/sudoers — SEMPRE edite com visudo! root@servidor:~# visudo

💡 Regra de ouro: Sempre edite o /etc/sudoers com visudo, nunca diretamente com um editor de texto. O visudo valida a sintaxe antes de salvar — um erro no sudoers pode bloquear completamente o acesso administrativo ao sistema.

🔑 Senhas e Verificação de Usuários

Gerenciar senhas e verificar o estado dos usuários são tarefas rotineiras. O passwd cuida de senhas, enquanto id, who, w e last informam quem está no sistema.

Flags do passwd

passwd user Define ou altera senha de um usuário (root)
passwd -e Expira a senha — força troca no próximo login
passwd -l Bloqueia a conta do usuário
passwd -u Desbloqueia a conta do usuário
bash — senhas e verificação
# Mudar minha própria senha usuario@servidor:~$ passwd Mudando senha para usuario. Senha atual: •••• Nova senha: •••••••• passwd: senha atualizada com sucesso # Root define senha de qualquer usuário sem pedir a senha atual root@servidor:~# passwd joao # Forçar troca no próximo login (boa prática ao criar contas) root@servidor:~# passwd -e joao # Bloquear / desbloquear conta root@servidor:~# passwd -l joao # Bloqueia root@servidor:~# passwd -u joao # Desbloqueia

Monitorando usuários no sistema

id joao UID, GID e todos os grupos do usuário
who Lista os usuários atualmente logados
w Logados + o que estão fazendo agora
last -5 Histórico dos últimos logins e logouts
bash — monitorando usuários
usuario@servidor:~$ who usuario tty1 2024-01-15 10:30 maria pts/0 2024-01-15 11:45 usuario@servidor:~$ last -5 maria pts/0 Mon Jan 15 11:45 still logged in usuario tty1 Mon Jan 15 10:30 still logged in joao pts/1 Sun Jan 14 09:00 - 17:30 (08:30)

✏️ Modificando e Removendo Usuários

Com o tempo, contas precisam ser ajustadas: mudar de grupo, alterar o shell, bloquear temporariamente ou remover definitivamente. O usermod e userdel cobrem todas essas necessidades.

bash — usermod e userdel
# Adicionar a grupo secundário (sempre use -aG!) root@servidor:~# usermod -aG sudo maria # Mudar o shell padrão root@servidor:~# usermod -s /bin/zsh joao # Bloquear / desbloquear conta root@servidor:~# usermod -L joao # Bloqueia root@servidor:~# usermod -U joao # Desbloqueia # Remover usuário mantendo a pasta home (para backup) root@servidor:~# userdel joao # Remover usuário E sua pasta home (definitivo!) root@servidor:~# userdel -r joao

⚙️ Opções do usermod

  • -aG grupo — adiciona ao grupo
  • -s shell — muda o shell
  • -d /novo -m — muda e move o home
  • -l novo_nome — renomeia o login
  • -L / -U — bloqueia / desbloqueia
  • -e 2025-12-31 — define expiração

🗑️ Opções do userdel

  • sem flags — remove conta, mantém /home
  • -r — remove conta e a pasta home
  • -f — força remoção mesmo logado
  • deluser --remove-home — versão interativa Debian

🎯 Exercício — Arraste e Conecte

Arraste cada descrição para o comando correto de gerenciamento de usuários.

Descrição
Cria um novo usuário e sua pasta home no sistema com um único comando
Define ou altera a senha de acesso de um usuário no sistema
Adiciona um usuário existente ao grupo sudo, concedendo privilégios administrativos
Remove um usuário do sistema junto com sua pasta home e arquivos pessoais
Exibe o UID, o GID primário e todos os grupos secundários de um usuário
Exibe o conteúdo do arquivo que registra todos os usuários cadastrados no sistema
Comando
useradd -m joao
passwd joao
usermod -aG sudo joao
userdel -r joao
id joao
cat /etc/passwd

🛠️ Atividade Prática — Administração de Usuários

⏱️ ~30 min 💻 Ubuntu Server / Terminal 📸 Tirar screenshot da saída
1
Criar o usuário aluno
Crie um novo usuário com pasta home: sudo useradd -m -s /bin/bash -c "Aluno de SO2" aluno. Confirme com grep "aluno" /etc/passwd e verifique se o home foi criado: ls -la /home/aluno.
2
Definir a senha do usuário
Defina uma senha: sudo passwd aluno. Em seguida, force a troca no primeiro login (boa prática): sudo passwd -e aluno.
3
Criar o grupo turma e adicionar o usuário
Crie o grupo: sudo groupadd turma. Adicione o usuário: sudo usermod -aG turma aluno. Confirme: getent group turma.
4
Adicionar ao grupo sudo e testar privilégios
Adicione ao sudo: sudo usermod -aG sudo aluno. Troque para o usuário: su - aluno. Teste: sudo ls /root. Se executar, o sudo está funcionando. Volte com exit.
5
Verificar com id e groups
Verifique todos os grupos: id aluno. Deve mostrar UID, GID e grupos: aluno, turma e sudo. Confirme com groups aluno, who e w.
6
Limpar: remover o usuário de teste
Remova o usuário e a pasta home: sudo userdel -r aluno. Confirme a remoção com id aluno (deve dar erro) e ls /home/. Tire screenshot mostrando o resultado.
📌 Para refletir: O gerenciamento de usuários é a base da segurança em Linux. Cada conta deve ter exatamente os privilégios necessários para sua função — nem mais, nem menos. Este princípio se chama mínimo privilégio e é fundamental em qualquer ambiente de produção.