===== Exemplos de Comandos para Gerenciamento de Usuários e Grupos no Linux =====
==== Nível Básico ====
* **Adicionar um novo usuário com `useradd`:**
- sudo useradd novo_usuario
- Cria um novo usuário chamado `novo_usuario` no sistema.
* **Adicionar um novo usuário e criar o diretório home com `useradd`:**
- sudo useradd -m novo_usuario
- Cria um novo usuário e também cria automaticamente o diretório home (`/home/novo_usuario`).
* **Alterar o shell padrão de um usuário com `usermod`:**
- sudo usermod -s /bin/bash usuario
- Altera o shell padrão do usuário `usuario` para `/bin/bash`.
* **Alterar o diretório home de um usuário com `usermod`:**
- sudo usermod -d /novo_caminho_home usuario
- Modifica o diretório home do usuário `usuario` para `/novo_caminho_home`.
* **Adicionar um novo grupo com `groupadd`:**
- sudo groupadd novo_grupo
- Cria o grupo `novo_grupo` no sistema.
* **Verificar informações de ID de um usuário com `id`:**
- id usuario
- Exibe o UID, GID e os grupos aos quais o usuário `usuario` pertence.
* **Alterar a senha de um usuário com `passwd`:**
- sudo passwd usuario
- Define ou altera a senha do usuário `usuario`.
* **Trocar para o usuário root com `su`:**
- su -
- Faz login como root (superusuário).
* **Executar um comando como superusuário com `sudo`:**
- sudo comando
- Executa o comando com privilégios administrativos (root).
==== Nível Intermediário ====
* **Adicionar um novo usuário com um shell específico com `useradd`:**
- sudo useradd -m -s /bin/zsh novo_usuario
- Cria um novo usuário `novo_usuario` com o shell `/bin/zsh` como padrão.
* **Definir a data de expiração de uma conta com `useradd`:**
- sudo useradd -e 2024-12-31 usuario_temporario
- Cria um usuário temporário cuja conta expira em `31 de dezembro de 2024`.
* **Adicionar um usuário a um grupo secundário com `usermod`:**
- sudo usermod -aG sudo usuario
- Adiciona o usuário `usuario` ao grupo `sudo`, permitindo que ele execute comandos como superusuário.
* **Alterar o nome de login de um usuário com `usermod`:**
- sudo usermod -l novo_nome usuario
- Altera o nome de login do usuário `usuario` para `novo_nome`.
* **Criar um novo grupo com um GID específico com `groupadd`:**
- sudo groupadd -g 1002 novo_grupo
- Cria o grupo `novo_grupo` com o GID `1002`.
* **Bloquear temporariamente uma conta de usuário com `usermod`:**
- sudo usermod -L usuario
- Bloqueia a conta do usuário `usuario`, impedindo o login.
* **Desbloquear uma conta de usuário com `usermod`:**
- sudo usermod -U usuario
- Desbloqueia a conta do usuário `usuario`, permitindo novamente o login.
* **Renomear um grupo com `groupmod`:**
- sudo groupmod -n novo_nome_grupo antigo_grupo
- Renomeia o grupo `antigo_grupo` para `novo_nome_grupo`.
* **Definir o intervalo de dias entre trocas de senha com `chage`:**
- sudo chage -M 90 usuario
- Define que o usuário `usuario` deve trocar a senha a cada 90 dias.
* **Remover um grupo com `groupdel`:**
- sudo groupdel grupo
- Remove o grupo `grupo` do sistema.
* **Remover um usuário e seu diretório home com `userdel`:**
- sudo userdel -r usuario
- Remove o usuário `usuario` e apaga o diretório home associado.
==== Nível Avançado ====
* **Criar um novo usuário com senha expirada para forçar o reset no primeiro login com `useradd`:**
- sudo useradd -m -e 2025-01-01 -p $(openssl passwd -1 senha123) novo_usuario
- Cria o usuário `novo_usuario` com a senha `senha123` e configura a expiração para `1º de janeiro de 2025`.
* **Mudar o diretório home de um usuário e mover o conteúdo com `usermod`:**
- sudo usermod -m -d /novo_diretorio_home usuario
- Altera o diretório home do usuário `usuario` e move o conteúdo para o novo diretório.
* **Alterar o GID de um grupo com `groupmod`:**
- sudo groupmod -g 2000 grupo
- Modifica o GID do grupo `grupo` para `2000`.
* **Verificar a expiração da senha de um usuário com `chage`:**
- sudo chage -l usuario
- Lista as informações de expiração da senha do usuário `usuario`.
* **Forçar um usuário a trocar a senha no próximo login com `passwd`:**
- sudo passwd -e usuario
- Força o usuário `usuario` a trocar a senha no próximo login.
* **Adicionar um novo usuário com UID e GID específicos com `useradd`:**
- sudo useradd -m -u 1001 -g 1001 novo_usuario
- Cria o usuário `novo_usuario` com UID e GID definidos como `1001`.
==== Nível Especializado ====
* **Adicionar um usuário sem diretório home e sem shell de login com `useradd`:**
- sudo useradd -M -s /usr/sbin/nologin usuario_no_shell
- Cria o usuário `usuario_no_shell` sem diretório home e com o shell desativado.
* **Forçar a troca de senha no próximo login com `usermod`:**
- sudo usermod -e 2025-01-01 -f 0 usuario
- Configura a conta para expirar em `1º de janeiro de 2025` e força o usuário a trocar a senha.
* **Remover a senha de um usuário para permitir login sem senha com `usermod`:**
- sudo usermod -p '*' usuario
- Remove a senha do usuário, permitindo login sem senha.
* **Criar um usuário com senha criptografada diretamente no comando com `useradd`:**
- sudo useradd -m -p $(openssl passwd -1 "senha123") usuario
- Cria o usuário `usuario` com a senha `senha123` criptografada.
* **Mover um usuário para um novo grupo primário e vários grupos secundários com `usermod`:**
- sudo usermod -g novo_grupo_primario -G grupo1,grupo2,grupo3 usuario
- Move o usuário `usuario` para o grupo primário `novo_grupo_primario` e para os grupos `grupo1`, `grupo2`, e `grupo3`.
* **Executar um comando como root sem alterar de usuário com `sudo`:**
- sudo comando
- Executa qualquer comando com privilégios de superusuário sem trocar para o usuário root.
* **Trocar temporariamente para outro usuário com `su`:**
- su - usuario
- Troca para o usuário `usuario` e inicia uma nova sessão de shell.
===== Exemplos de uso do comando sudo juntamente com o comando su =====
==== Nível Básico ====
* **Trocar temporariamente para o usuário root com `sudo` e `su`:**
- sudo su -
- Faz login como root diretamente, sem precisar saber a senha do root, usando os privilégios do `sudo`.
* **Trocar para um usuário específico com `sudo` e `su`:**
- sudo su - usuario
- Faz login como o usuário `usuario` diretamente, utilizando os privilégios administrativos do `sudo`.
==== Nível Intermediário ====
* **Executar um comando como outro usuário sem sair do shell atual:**
- sudo su - usuario -c 'comando_a_executar'
- Executa o comando `comando_a_executar` como o usuário `usuario`, sem precisar trocar completamente para a conta desse usuário.
* **Trocar para o root e manter as variáveis de ambiente com `sudo` e `su`:**
- sudo su
- Inicia um shell como root, mas mantendo as variáveis de ambiente do usuário original.
==== Nível Avançado ====
* **Executar comandos como root sem acessar o shell root diretamente:**
- sudo su -c 'comando_a_executar'
- Executa `comando_a_executar` como root sem abrir uma sessão de shell completa como root.
* **Usar `sudo` e `su` em um script para executar múltiplos comandos como root:**
- sudo su -c 'comando1 && comando2 && comando3'
- Executa uma sequência de comandos como root sem precisar abrir o shell root diretamente. Os comandos `comando1`, `comando2`, e `comando3` serão executados consecutivamente.
==== Nível Especializado ====
* **Abrir um shell como um usuário diferente e rodar um script como root em uma única linha:**
- sudo su - usuario -c 'sudo ./meu_script.sh'
- Troca para o usuário `usuario`, e dentro desse contexto, executa um script com `sudo` como root.
* **Acessar o shell de outro usuário e preservar o ambiente original com `sudo` e `su`:**
- sudo su -m usuario
- Troca para o usuário `usuario` sem modificar as variáveis de ambiente do usuário original.