DevGang
Авторизоваться

Управление пользователями и группами в Linux. Пошаговая инструкция

В последнее время организации и компании владеют секретами самого большого масштаба, например. секреты собственности, секреты товарных знаков и т. д. и хранить их в основной сети компании (на сервере), добавление сотрудников в эту сеть или на сервер должно выполняться с высокой точностью и аккуратностью, распределяя сотрудника в соответствующие группы в соответствии с его должностью, чтобы защитить эту тайну компании и убедиться, что никто не имеет доступа к такой информации, кроме определенных людей, таких как генеральный директор, технический директор, директор по маркетингу. и т. д.

Сегодня мы собираемся изучить это явление, взяв Linux (дистрибутив Ubuntu) в качестве среды для изучения.

Вы можете спросить, как мы собираемся это реализовать?

Что ж, мы собираемся создать сценарий bash, который будет использовать путь к файлу .txt в качестве входного файла, содержащего имена сотрудников и группы, в которые вы хотите их поместить.

Например:

alice; developers, foodies
bob; testers; admins

Этот файл .txt содержит строки в формате «пользователь;группы», разделенные запятой».

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

  • Чтение пользователей в формате user; группы
  • Создайте пользователей и группы, как указано.
  • Настроить домашние каталоги с соответствующими разрешениями и владением
  • Генерировать случайные пароли для пользователей
  • Надежно сохраните сгенерированные пароли в /var/secure/user_passwords.txt
  • Регистрировать все действия в /var/log/user_management.log. Примечание. Обрабатывайте сценарии ошибок, например, существующие пользователи.

Подготовительные шаги

Создайте файл с именем create_users.sh в своем домашнем каталоге Linux.

touch create_users.sh
  • Откройте этот файл в редакторе nano, чтобы добавить свой код.
nano create_users.sh

Теперь давайте разберемся, как мы хотим, чтобы наш скрипт работал.

Шаг 1

Определите следующие пути, по которым вы хотите сохранять журналы и пароли пользователей.

LOG_FILE="/var/log/user_management.log"
PASSWORD_FILE="/var/secure/user_passwords.txt"

Шаг 2

Убедитесь, что каталог существует и имеет соответствующие разрешения.

if [ ! -d "/var/secure" ]; then
    mkdir -p /var/secure
    chmod 700 /var/secure
fi

Шаг 3

Убедитесь, что файл журнала и файл паролей существуют и доступны для записи.

touch $LOG_FILE $PASSWORD_FILE
chmod 600 $PASSWORD_FILE
chmod 644 $LOG_FILE

Шаг 4

Добавьте функцию регистрации всех действий пользователя и укажите временную метку для каждого соответствующего действия.

log(){
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

Шаг 5

Проверьте, запущен ли скрипт от имени пользователя root

if [ "$EUID" -ne 0 ]; then
    log "Script must be run as root."
    echo "Please run as root."
    exit 1
fi

Шаг 6

Проверьте, предоставлен ли входной файл и доступен ли он для чтения.

if [ ! -f "$1" ]; then
    log "Input file not provided or does not exist."
    echo "Usage: $0 <input_file>"
    exit 1
fi

Шаг 7

Добавьте функцию генерации паролей пользователей

generate_password(){
    < /dev/urandom tr -dc 'A-Za-z0-9!@#$%^&*()_+' | head -c 8
}

Шаг 8

Прочитайте входной файл построчно

while IFS=';' read -r user groups;
do
    user=$(echo "$user" | xargs) # Trim whitespace
    groups=$(echo "$groups" | xargs) # Trim whitespace

    if id "$user" &>/dev/null; then
        log "User $user already exists."
        echo "User $user already exists. Skipping."
        continue
    fi

Добавьте следующие коды в блок while do

Шаг 9

Создайте группы, если они не существуют, и соберите их в список.

  IFS=',' read -ra group_list <<< "$groups"
    group_string=""
    for group in "${group_list[@]}"; do
        group=$(echo "$group" | xargs)  # Trim whitespace
        if ! getent group "$group" &>/dev/null; then
            groupadd "$group"
            log "Group $group created."
        else
            log "Group $group already exists."
        fi
        group_string+="$group,"
    done
    group_string=${group_string%,} # Remove trailing comma

Шаг 10

Создать пользователя и распределить по группам

    useradd -m -G "$group_string" "$user"
    if [ $? -eq 0 ]; then
        log "User $user created and added to groups $groups"
    else
        log "Failed to create user $user."
        echo "Failed to create user $user. Check log for details."
        continue
    fi

Шаг 11

Сгенерировать и назначить пароль

    password=$(generate_password)
    echo "$user:$password" | chpasswd
    if [ $? -eq 0 ]; then
        log "Password set for user $user."
    else
        log "Failed to set password for user $user."
        echo "Failed to set password for user $user. Check logs for details."
        continue
    fi

Шаг 12

Надежно храните пароль

    echo "$user:$password" >> $PASSWORD_FILE
    log "Password for user $user stored securely."

Шаг 13

Установите владельца и разрешения для домашнего каталога

    chown "$user:$user" "/home/$user"
    chmod 700 "/home/$user"
    log "Home directory for user $user set up with appropriate permissions."

Последний шаг

Закройте блок while do и запишите конец

done < "$1"

log "Users - groups creation process completed."
echo "User creation process completed. Check $LOG_FILE for details."

С помощью этого кода вы можете быть уверены, что добавите своих сотрудников в соответствующие группы и добавите разрешения, чтобы совершенно секретная информация вашей организации не попала в чужие руки 😊.

Спасибо, что следили за мной с этой статьей.

Источник:

#Bash #Linux
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу