Создание и удаление пользователей и групп в пакетном режиме

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь создавать и управлять учетными записями учителей и учеников в среде сервера класса. Вы будете использовать bash-скрипт под названием userctr.sh для автоматизации процесса добавления и удаления учетных записей, что может быть утомительным заданием, если делать это вручную.

👀 Предварительный просмотр

## Добавить 1 учетную запись учителя и 6 учетных записей учеников (от stu1 до stu6)
$ sh userctr.sh add teacher stu 6
teacher:617533
stu1:345893
stu2:183263
stu3:404525
stu4:571165
stu5:251940
stu6:716130

## Удалить 1 учетную запись учителя и 6 учетных записей учеников (от stu1 до stu6)
$ sh userctr.sh del teacher stu 6

🎯 Задачи

В этом проекте вы научитесь:

  • Как настроить необходимую среду для проекта
  • Как реализовать функции для добавления и удаления пользователей и групп
  • Как протестировать скрипт userctr.sh, чтобы убедиться, что он работает как ожидается

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разобраться в важности автоматизации задач управления пользователями
  • Создавать и управлять учетными записями учителей и учеников с использованием bash-скрипта
  • Убедиться, что учетные записи создаются с соответствующими настройками, такими как стандартная оболочка и привилегии sudo
  • Эффективно добавлять и удалять учетные записи в среде сервера класса

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/UserandGroupManagementGroup -.-> linux/useradd("User Adding") linux/UserandGroupManagementGroup -.-> linux/userdel("User Removing") linux/UserandGroupManagementGroup -.-> linux/usermod("User Modifying") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/touch -.-> lab-301459{{"Создание и удаление пользователей и групп в пакетном режиме"}} linux/cd -.-> lab-301459{{"Создание и удаление пользователей и групп в пакетном режиме"}} linux/useradd -.-> lab-301459{{"Создание и удаление пользователей и групп в пакетном режиме"}} linux/userdel -.-> lab-301459{{"Создание и удаление пользователей и групп в пакетном режиме"}} linux/usermod -.-> lab-301459{{"Создание и удаление пользователей и групп в пакетном режиме"}} linux/sudo -.-> lab-301459{{"Создание и удаление пользователей и групп в пакетном режиме"}} linux/vim -.-> lab-301459{{"Создание и удаление пользователей и групп в пакетном режиме"}} end

Подготовка среды

В этом шаге вы настройте необходимую среду для проекта.

  1. Откройте терминал и перейдите в директорию /home/labex/project.

  2. Создайте новый файл под названием userctr.sh в директории /home/labex/project с использованием следующей команды:

    touch userctr.sh
  3. Откройте файл userctr.sh в текстовом редакторе и добавьте следующую строку-шаблон в начало файла:

    #!/bin/zsh

    Эта строка указывает, что скрипт должен быть выполнен с использованием оболочки zsh.

Реализация функций управления пользователями и группами

В этом шаге вы реализуете функции для добавления и удаления пользователей и групп.

  1. Добавьте следующий код в файл userctr.sh:

    ## Этот скрипт используется для управления учетными записями учителей и учеников.
    
    ## Проверьте, правильное ли количество параметров
    if [ $## -ne 4 ]; then
      echo "Ошибка параметров"
      exit 1
    fi
    
    ## Проверьте, является ли параметр количества учеников положительным целым числом и не превышает 10
    if! [[ "$4" =~ ^[1-9][0-9]?$|^10$ ]]; then
      echo "Ошибка параметров"
      exit 1
    fi
    
    ## Проверьте, содержит ли префикс имени ученика только строчные буквы
    if! [[ "$3" =~ ^[a-z]+$ ]]; then
      echo "Ошибка параметров"
      exit 1
    fi
    
    ## Функция для генерации случайного шестизначного пароля
    generate_password() {
      password=$(shuf -i 100000-999999 -n 1)
      echo "$password"
    }

    Этот код устанавливает базовую структуру скрипта, включая проверку параметров и функцию для генерации случайных паролей.

  2. Добавьте следующий код в файл userctr.sh, чтобы обработать операцию "add":

    ## Добавить пользователей
    if [ "$1" == "add" ]; then
      ## Добавить учетную запись учителя
      if! id -u "$2" >/dev/null 2>&1; then
        sudo useradd -m -s /bin/zsh "$2"
        sudo usermod -aG sudo "$2"
        password=$(generate_password)
        echo "$2:$password"
      else
        echo "$2:******"
      fi
    
      ## Добавить учетные записи учеников
      for ((i = 1; i <= $4; i++)); do
        username="$3$i"
        if! id -u "$username" >/dev/null 2>&1; then
          sudo useradd -m -s /bin/zsh "$username"
          password=$(generate_password)
          echo "$username:$password"
        else
          echo "$username:******"
        fi
      done

    Этот код добавляет учетную запись учителя и указанное количество учетных записей учеников. Если пользователь уже существует, он будет отображать пароль пользователя в виде шести звездочек.

  3. Добавьте следующий код в файл userctr.sh, чтобы обработать операцию "del":

    ## Удалить пользователей
    elif [ "$1" == "del" ]; then
      ## Удалить учетную запись учителя
      sudo userdel -rf "$2" >/dev/null 2>&1
      echo "$2" >/dev/null
    
      ## Удалить учетные записи учеников
      for ((i = 1; i <= $4; i++)); do
        username="$3$i"
        sudo userdel -rf "$username" >/dev/null 2>&1
        echo "$username" >/dev/null
      done
    fi

    Этот код удаляет учетную запись учителя и указанное количество учетных записей учеников.

  4. Сохраните файл userctr.sh

Тестирование скрипта

В этом шаге вы протестируете скрипт userctr.sh, чтобы убедиться, что он работает как ожидается.

  1. Откройте терминал и перейдите в директорию /home/labex/project.

  2. Протестируйте операцию "add", выполнив следующую команду:

    sh userctr.sh add teacher stu 6

    Это должно создать одну учетную запись учителя и шесть учетных записей учеников и показать их случайно сгенерированные пароли.

    teacher:617533
    stu1:345893
    stu2:183263
    stu3:404525
    stu4:571165
    stu5:251940
    stu6:716130
  3. Протестируйте операцию "del", выполнив следующую команду:

    sh userctr.sh del teacher stu 6

    Это должно удалить учетную запись учителя и шесть учетных записей учеников.

Поздравляем! Вы завершили проект. Теперь вы можете использовать скрипт userctr.sh для управления учетными записями учителей и учеников в серверах вашего класса.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.