Управление пользователями и группами в Linux. Пошаговая инструкция
![](/static/storage/264408273076003576981193074053955599444.png)
В последнее время организации и компании владеют секретами самого большого масштаба, например. секреты собственности, секреты товарных знаков и т. д. и хранить их в основной сети компании (на сервере), добавление сотрудников в эту сеть или на сервер должно выполняться с высокой точностью и аккуратностью, распределяя сотрудника в соответствующие группы в соответствии с его должностью, чтобы защитить эту тайну компании и убедиться, что никто не имеет доступа к такой информации, кроме определенных людей, таких как генеральный директор, технический директор, директор по маркетингу. и т. д.
Сегодня мы собираемся изучить это явление, взяв 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."
С помощью этого кода вы можете быть уверены, что добавите своих сотрудников в соответствующие группы и добавите разрешения, чтобы совершенно секретная информация вашей организации не попала в чужие руки 😊.
Спасибо, что следили за мной с этой статьей.