Criação e Exclusão em Lote de Usuários e Grupos

LinuxBeginner
Pratique Agora

Introdução

Neste desafio, você criará um script bash chamado userctr.sh para automatizar a adição e exclusão em lote de usuários em um servidor. Você escreverá um script que aceita argumentos de linha de comando para especificar a operação (add ou del), o nome de usuário de um professor, um prefixo para os nomes de usuário dos alunos e o número de alunos a serem gerenciados. Esta tarefa aprimorará suas habilidades em shell scripting, gerenciamento de usuários e automação, que são cruciais para a administração de sistemas.

Criação e Exclusão em Lote de Usuários e Grupos

Um administrador de sistemas precisa de uma forma eficiente de adicionar um professor e múltiplos usuários de alunos a servidores de sala de aula. Criar cada conta manualmente é tedioso e propenso a erros. Sua tarefa é criar um script bash, userctr.sh, para automatizar este processo. O script receberá o tipo de operação, o nome do professor, o prefixo do nome do aluno e o número de alunos como parâmetros.

Tarefas

  • Crie um script Bash chamado userctr.sh no diretório /home/labex/project.
  • O script deve implementar duas operações principais: add e del, determinadas pelo primeiro argumento da linha de comando.
  • Para a operação add, crie um usuário professor e um número especificado de usuários alunos.
  • Para a operação del, exclua os usuários professor e alunos especificados.
  • O script deve validar todos os parâmetros de entrada de acordo com os requisitos abaixo.

Requisitos

  • Formato de Execução: O script deve ser executável com quatro argumentos:

    sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>
  • Validação de Parâmetros:

    • O script deve receber exatamente quatro argumentos. Caso contrário, deve imprimir parameter error e sair.
    • O student_count (quarto argumento) deve ser um número inteiro entre 1 e 10, inclusive. Caso contrário, imprima parameter error e saia.
    • O student_prefix (terceiro argumento) deve consistir apenas de letras minúsculas. Caso contrário, imprima parameter error e saia.
  • Detalhes da Operação add:

    • Se um usuário a ser adicionado já existir, não tente criá-lo. Em vez disso, imprima o nome de usuário seguido por ****** (por exemplo, stu3:******).
    • Para novos usuários, gere uma senha numérica aleatória de 6 dígitos.
    • Imprima o nome de usuário e sua senha para cada usuário recém-criado, separados por dois pontos (por exemplo, teacher:901231).
    • Todos os usuários criados devem usar /bin/zsh como seu shell padrão.
    • O usuário professor deve ser adicionado ao grupo sudo para conceder privilégios administrativos.
  • Detalhes da Operação del:

    • O script deve excluir os usuários professor e alunos especificados, incluindo seus diretórios home.
    • A operação del não deve produzir nenhuma saída.
    • Se um usuário a ser excluído não existir, o script não deve reportar um erro e deve prosseguir com a exclusão dos outros usuários existentes.

Exemplo

Os exemplos a seguir demonstram o comportamento esperado do seu script.

  • Adicionando Usuários: Este comando adiciona um professor (teacher) e seis alunos (stu1 a stu6).

    sh userctr.sh add teacher stu 6
  • Exemplo de Saída:

    teacher:901231
    stu1:271828
    stu2:928172
    stu3:******
    stu4:384712
    stu5:098273
    stu6:921098

    Nesta saída, os asteriscos para stu3 indicam que o usuário já existia, portanto, uma nova senha não foi gerada.

  • Excluindo Usuários: Este comando exclui o mesmo conjunto de usuários. Não deve produzir nenhuma saída após a conclusão bem-sucedida.

    sh userctr.sh del teacher stu 6

Dicas

  • Use sudo antes de comandos que exigem privilégios de root, como useradd e userdel.
  • Verifique o número de argumentos com $#.
  • Acesse os argumentos usando $1, $2, etc.
  • Para verificar se um usuário existe, você pode usar id -u <username>. O comando terá um código de saída diferente de zero se o usuário não existir.
  • Use useradd -m -s /bin/zsh <username> para criar um usuário com um diretório home e definir o shell Zsh.
  • Use usermod -aG sudo <username> para adicionar um usuário ao grupo sudo.
  • Use userdel -r <username> para excluir um usuário e seu diretório home.
  • Para gerar um número aleatório de 6 dígitos, você pode usar shuf -i 100000-999999 -n 1.
  • Um loop for é útil para iterar pelo número de alunos: for ((i=1; i<=$student_count; i++)).
  • Use if [[ "$string" =~ "regex" ]] para correspondência de padrões para validar parâmetros.
✨ Verificar Solução e Praticar

Resumo

Parabéns! Você criou com sucesso um script bash para automatizar o gerenciamento de usuários. Este script pode adicionar e excluir usuários em lote, validar parâmetros de entrada e lidar com usuários existentes, que são habilidades essenciais para qualquer administrador de sistemas. Você praticou o uso de instruções condicionais, loops, argumentos de linha de comando e comandos externos como useradd e userdel dentro de um script.