Найти в Дзене
Евгений Лощаков

Работа с пользователями в Linux: руководство системного администратора

Введение Управление пользователями — одна из фундаментальных задач системного администратора в Linux. Каждый пользователь в системе имеет уникальные характеристики, права и ограничения. В этой статье мы рассмотрим основные аспекты работы с пользователями: создание, настройку прав, управление привилегиями и тонкие настройки. Особенности системы пользователей в Linux Основные концепции В Linux реализована многопользовательская архитектура с четким разделением прав: UID (User ID) — уникальный числовой идентификатор пользователя GID (Group ID) — идентификатор основной группы пользователя Домашний каталог — персональное пространство пользователя (обычно /home/username) Оболочка (shell) — интерпретатор командной строки Пароль и файлы аутентификации — /etc/passwd, /etc/shadow, /etc/group Типичная структура UID: 0 — root (суперпользователь) 1-999 — системные пользователи 1000+ — обычные пользователи Создание новых пользователей Базовое создание пользователя # Создание пользователя с домашним
Оглавление

Введение

Управление пользователями — одна из фундаментальных задач системного администратора в Linux. Каждый пользователь в системе имеет уникальные характеристики, права и ограничения. В этой статье мы рассмотрим основные аспекты работы с пользователями: создание, настройку прав, управление привилегиями и тонкие настройки.

Особенности системы пользователей в Linux

Основные концепции

В Linux реализована многопользовательская архитектура с четким разделением прав:

  1. UID (User ID) — уникальный числовой идентификатор пользователя
  2. GID (Group ID) — идентификатор основной группы пользователя
  3. Домашний каталог — персональное пространство пользователя (обычно /home/username)
  4. Оболочка (shell) — интерпретатор командной строки
  5. Пароль и файлы аутентификации — /etc/passwd, /etc/shadow, /etc/group

Типичная структура UID:

  • 0 — root (суперпользователь)
  • 1-999 — системные пользователи
  • 1000+ — обычные пользователи

Создание новых пользователей

Базовое создание пользователя

# Создание пользователя с домашним каталогом

sudo useradd -m username

# Создание пользователя с указанием оболочки

sudo useradd -m -s /bin/bash username

# Создание пользователя с комментарием

sudo useradd -m -c "Иван Петров" ivan

# Установка пароля для нового пользователя

sudo passwd username

При вводе пароля учтите, что в терминале не отображаются символы.

Команда adduser (более интерактивная альтернатива)

# В большинстве дистрибутивов

sudo adduser username

Расширенные опции создания

# Создание пользователя с конкретным UID(например 1500)

sudo useradd -m -u 1500 username

# Создание пользователя с конкретной основной группой(users)

sudo useradd -m -g users username

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

sudo useradd -m -G wheel,developers,ssh username

# Создание пользователя с указанием домашнего каталога

sudo useradd -m -d /custom/home/username username

# Создание пользователя без домашнего каталога (для сервисных аккаунтов)

sudo useradd -M -s /sbin/nologin serviceuser

Назначение прав администратора (sudo)

Добавление в группу sudo/wheel

В большинстве дистрибутивов пользователи с правами sudo находятся в группе sudo (Debian/Ubuntu) или wheel (RHEL/CentOS/Fedora/Алт Линукс/Ред ОС):

# Для Debian/Ubuntu

sudo usermod -aG sudo username

# Для RHEL/CentOS/Fedora/Алт Линукс/Ред ОС

sudo usermod -aG wheel username

# Проверка групп пользователя

groups username

id username

Настройка прав sudo через /etc/sudoers

Файл /etc/sudoers — основной конфигурационный файл для управления правами sudo:

# Всегда редактируйте через visudo!

sudo visudo

Visudo — это безопасный способ редактирования файла sudoers. Он проверяет синтаксис и предотвращает ошибки, которые могут заблокировать доступ к sudo.

Основные правила синтаксиса

Каждая строка в файле sudoers имеет формат:

пользователь хост = (пользователь) команды

Чтобы начать редактировать внутри файла, нажмите клавишу "Insert", по окончанию, чтобы выйти из режима редактирования, нажмите клавишу "Esc". Чтобы завершить с сохранением, нужно набрать :wq, а если выйти без сохранения, то :q!.

Примеры конфигураций:

  1. Разрешить все команды для определенного пользователя:

username ALL=(ALL:ALL) ALL

-2

2. Разрешить все команды для группы:

%sudo ALL=(ALL:ALL) ALL

%wheel ALL=(ALL:ALL) ALL

3. Разрешить конкретные команды без пароля:

username ALL=(ALL) NOPASSWD: /usr/bin/systemctl, /usr/bin/apt

4. Разрешить все команды без пароля для конкретного пользователя:

username ALL=(ALL:ALL) NOPASSWD: ALL

Настройка запуска sudo без пароля

Вариант 1: Через группу (рекомендуется для нескольких пользователей)

# 1. Создаем или выбираем группу

sudo groupadd nopasswdsudo

# 2. Добавляем пользователя в группу

sudo usermod -aG nopasswdsudo username

# 3. Настраиваем sudoers

sudo visudo

Добавить строку:

%nopasswdsudo ALL=(ALL:ALL) NOPASSWD: ALL

Вариант 2: Для конкретного пользователя

В sudoers добавить:

username ALL=(ALL:ALL) NOPASSWD: ALL

Вариант 3: Без пароля для конкретных команд

username ALL=(ALL) NOPASSWD: /usr/bin/apt, /usr/bin/systemctl restart nginx

Важно: Безопасность! Используйте NOPASSWD только когда это действительно необходимо и ограничивайте набор команд.

Управление UID и GID

Изменение UID существующего пользователя

# Изменение UID

sudo usermod -u 1500 username

# Изменение основного GID

sudo usermod -g 1002 username

# Изменение UID с обновлением владения файлами

sudo usermod -u 1500 -o username

find / -user old_uid -exec chown -h username {} \;

Изменение GID группы

# Изменение GID группы

sudo groupmod -g 1500 groupname

# Изменение GID с обновлением файлов

sudo groupmod -g 1500 groupname

find / -group old_gid -exec chgrp groupname {} \;

Создание пользователя с конкретным UID и GID

# Создание группы с конкретным GID

sudo groupadd -g 1500 developers

# Создание пользователя с конкретным UID и GID

sudo useradd -m -u 1500 -g developers username

Просмотреть уже созданных пользователей можно в файле /etc/passwd

-3

Управление группами

Основные операции с группами

# Создание новой группы

sudo groupadd groupname

# Создание группы с конкретным GID

sudo groupadd -g 1500 groupname

# Удаление группы

sudo groupdel groupname

# Добавление пользователя в группу

sudo usermod -aG groupname username

# Удаление пользователя из группы (сложнее, нужно перезаписать)

sudo gpasswd -d username groupname

# Просмотр групп пользователя

groups username

id username

# Просмотр членов группы

getent group groupname

Блокировка и удаление пользователей

Блокировка учетной записи

# Заблокировать учетную запись (пароль)

sudo passwd -l username

# Разблокировать учетную запись

sudo passwd -u username

# Установить дату истечения срока действия учетной записи

sudo usermod -e 2024-12-31 username

# Заблокировать через изменение оболочки

sudo usermod -s /sbin/nologin username

Удаление пользователей

# Удалить пользователя (без домашнего каталога)

sudo userdel username

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

sudo userdel -r username

# Удалить пользователя с домашним каталогом и почтой

sudo userdel -r --remove-mail username

Практические примеры и сценарии

Создание пользователя для веб-сервера

sudo groupadd -g 1001 www-data

sudo useradd -m -u 1001 -g www-data -s /bin/bash -c "Web Server User" www-user

sudo usermod -aG www-data www-user

Создание пользователя разработчика с доступом к Docker

sudo useradd -m -s /bin/bash -c "Developer Account" devuser

sudo passwd devuser

sudo usermod -aG docker,ssh,developers devuser

Автоматизация создания пользователей

Создайте скрипт create_user.sh:

#!/bin/bash

if [ "$(id -u)" != "0" ]; then

echo "Этот скрипт должен быть запущен от root" 1>&2

exit 1

fi

if [ -z "$1" ]; then

echo "Использование: $0 username [uid]" 1>&2

exit 1

fi

USERNAME=$1

UID=$2

# Если UID не указан, генерируем автоматически

if [ -z "$UID" ]; then

UID=$(($(awk -F: '{if(max < $3) max=$3} END{print max}' /etc/passwd) + 1))

fi

# Создание пользователя

useradd -m -u $UID -s /bin/bash -c "User $USERNAME" $USERNAME

# Генерация случайного пароля

PASSWORD=$(openssl rand -base64 12)

echo "$USERNAME:$PASSWORD" | chpasswd

# Добавление в группу sudo (для Ubuntu/Debian)

usermod -aG sudo $USERNAME

echo "Пользователь $USERNAME создан"

echo "UID: $UID"

echo "Пароль: $PASSWORD"

echo "Домашний каталог: /home/$USERNAME"

Безопасность и лучшие практики

Рекомендации по безопасности

  1. Принцип наименьших привилегий: Давайте только те права, которые действительно необходимы
  2. Регулярный аудит: Проверяйте список пользователей и их права
  3. Отслеживание активности: Используйте last, who, аудит sudo через /var/log/auth.log
  4. Сильные пароли: Используйте политики сложных паролей
  5. Блокировка неиспользуемых учетных записей

Полезные команды для мониторинга

# Просмотр последних входов

last

# Текущие сессии

who

# Проверка прав sudo

sudo -l

# Аудит sudo (Debian/Ubuntu)

grep sudo /var/log/auth.log

# Проверка паролей на истечение срока

chage -l username

# Просмотр всех пользователей

getent passwd

# Просмотр всех групп

getent group

Заключение

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

Важное предупреждение: Будьте крайне осторожны при предоставлении прав NOPASSWD и прав root. Неправильная настройка прав может серьезно скомпрометировать безопасность системы.