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).
👑RootUID = 0O superusuário. Pode tudo no sistema. Equivale à chave mestra do prédio. Use com extremo cuidado!
👨💻Usuários ComunsUID ≥ 1000Pessoas reais. Cada uma tem sua pasta home e permissões limitadas ao que lhe foi concedido.
⚙️Usuários de SistemaUID 1 – 999Contas 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.
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
-mCria a pasta home — sem isso, ela não é criada!
-s /bin/bashDefine o shell padrão do usuário
-c "Nome"Comentário com o nome real do usuário
-g grupoDefine o grupo primário na criação
-G g1,g2Define 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"joaoroot@servidor:~#passwdjoaoNova senha: passwd: senha atualizada com sucesso# adduser: interativo, faz tudo (recomendado no dia a dia)root@servidor:~#addusermariaAdicionando 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 -mNÃ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
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 gruporoot@servidor:~#groupadddesenvolvedores# Adicionar usuário a um grupo (use SEMPRE -aG, nunca apenas -G!)root@servidor:~#usermod-aGdesenvolvedoresmariaroot@servidor:~#usermod-aGdesenvolvedoresjoao# Verificar membros do gruporoot@servidor:~#getentgroup desenvolvedoresdesenvolvedores:x:1002:maria,joao# Remover grupo (só se não for grupo primário de ninguém)root@servidor:~#groupdeldesenvolvedores
Grupos importantes do sistema
sudoMembros podem usar sudo — acesso administrativo (Debian/Ubuntu)
wheelEquivalente a sudo no CentOS/RHEL/Fedora
admPode ler logs do sistema em /var/log
www-dataServidor web Apache/Nginx — dono dos arquivos do site
dockerPermite usar containers Docker sem sudo
dialoutAcesso a portas seriais e USB
⚠️ Diferença crítica:usermod -G grupo usuariosubstitui 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 normalusuario@servidor:~$sudoapt 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-aGsudojoao# Ver o que meu usuário pode fazer com sudousuario@servidor:~$sudo-lUser 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 userDefine ou altera senha de um usuário (root)
passwd -eExpira a senha — força troca no próximo login
passwd -lBloqueia a conta do usuário
passwd -uDesbloqueia a conta do usuário
bash — senhas e verificação
# Mudar minha própria senhausuario@servidor:~$passwdMudando senha para usuario.Senha atual: •••• Nova senha: ••••••••passwd: senha atualizada com sucesso# Root define senha de qualquer usuário sem pedir a senha atualroot@servidor:~#passwdjoao# Forçar troca no próximo login (boa prática ao criar contas)root@servidor:~#passwd-ejoao# Bloquear / desbloquear contaroot@servidor:~#passwd-ljoao# Bloqueiaroot@servidor:~#passwd-ujoao# Desbloqueia
Monitorando usuários no sistema
id joaoUID, GID e todos os grupos do usuário
whoLista os usuários atualmente logados
wLogados + o que estão fazendo agora
last -5Histórico dos últimos logins e logouts
bash — monitorando usuários
usuario@servidor:~$whousuario tty1 2024-01-15 10:30maria pts/0 2024-01-15 11:45usuario@servidor:~$last-5maria pts/0 Mon Jan 15 11:45 still logged inusuario tty1 Mon Jan 15 10:30 still logged injoao 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-aGsudomaria# Mudar o shell padrãoroot@servidor:~#usermod-s/bin/zshjoao# Bloquear / desbloquear contaroot@servidor:~#usermod-Ljoao# Bloqueiaroot@servidor:~#usermod-Ujoao# Desbloqueia# Remover usuário mantendo a pasta home (para backup)root@servidor:~#userdeljoao# Remover usuário E sua pasta home (definitivo!)root@servidor:~#userdel-rjoao
⚙️ 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.