Archive for Работа с пользователями

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

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

pgrep -l -u user

Проверить, авторизован ли пользователь, можно с помощью уже известной команды:

pinky user

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

usermod [что поменять] [для какого пользователя]

Набор параметров расширен дополнительными опциями:

-mсоздаёт новую директорию, указанную в качестве домашней (если её не существует), и переносит туда данные из старой
-d /home/users/new-test-userменяет домашнюю директорию пользователя на /home/users/new-test-user
-c “Имя2 Фамилия2”меняет комментарий к пользователю
-a -G users,wheelдобавляет пользователя в дополнительные группы
-s /bin/bashменяет командную оболочку пользователя
-u 100500изменяет UID пользователя
-e 2060-01-01меняет дату, до которой аккаунт будет активен
-f 7меняет количество дней до блокировки пользователя, когда его пароль станет недействителен
-l new-test-userменяет имя пользователя на new-test-user
-Lблокирует аккаунт пользователя. Для этого в файле /etc/shadow перед хэшем пароля пользователя ставится символ «!»
-Uснимает блокировку с аккаунта (удаляет символ «!» из пароля в /etc/shadow)

То есть если мы захотим отредактировать данные пользователя test-user, созданного в примере выше, это будет выглядеть так:

usermod -l new-test-user -m -d /home/new-test-user -c "Имя2 Фамилия2" -u 100500 -e 3000-01-01 -f -1 test-user

В примере мы меняем логин — имя пользователя на new-test-user, изменяем домашнюю папку на /home/new-test-user с копированием файлов, меняем комментарий, UID пользователя, срок жизни аккаунта и отменяем блокировку в случае устаревания пароля.

При изменении данных пользователя система предпримет попытку автоматически указать новые данные для всех файлов и папок пользователя. Тем не менее, после редактирования нужно всё перепроверить и исправить права доступа, где они не изменились автоматически.

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

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

Для удаления пользователей используется команда userdel. Её структура аналогична предыдущим:

userdel [что удаляем] [кого удаляем]

Основных параметра два: 

-rудаляет папки пользователя: домашнюю директорию, почтовую очередь
-fотключает механизм защиты. При использовании этой опции пользователь будет удалён даже при наличии запущенных процессов и пр. Используется на свой страх и риск, так как может привести к сбою системы

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

Группы пользователей

Информация о группах хранится в файле /etc/group. Работа с группами пользователей куда проще. 

Группы применяются для делегирования прав доступа на определённые файлы, папки, скрипты сразу нескольким пользователям. Живой пример: работа с FTP-сервером. Вы выбираете какую-то директорию для работы с файлами, создаёте группу пользователей и присваиваете ей выбранную папку. Теперь вам не нужно отдельно настраивать права каждому новому пользователю — достаточно добавить его в эту группу, и он автоматически получит доступ к FTP-каталогу.

Создание

Для создания групп используется команда groupadd:

groupadd new-group

Из параметров можно выделить следующие:

-fесли группа с указанным именем или GID уже существует, опция прерывает выполнение команды без соответствующей ошибки
-g 100500позволяет назначить свой GID для создаваемой группы
-rсоздаёт системную группу
-p p@ssw0rdУстанавливает для группы пароль p@ssw0rd. Пароль запрашивается системой при попытке входа в группу с помощью команды newgrp.Не рекомендуется к использованию из-за проблем с безопасностью. Настроенный таким образом пароль можно увидеть в истории команд.

Редактирование

Для редактирования групп используется команда groupmod. Список изменений задаётся с помощью параметров:

-g 100500меняет GID группы на 100500
-n another-nameменяет имя группы на another-name

Например, если нам нужно изменить имя группы test-group на имя named-group, команда будет выглядеть так:

groupmod -n named-group test-group

 

Удаление

Нельзя удалить группу, если она указана в качестве основной для какого-то существующего пользователя. Сначала нужно предварительно удалить этого пользователя из группы.

Само удаление группы выполняется одной командой:

groupdel test-group

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

Управление пользователями в группе

Базовым инструментом для управления группами является утилита gpasswd. Она имеет несколько параметров, но с одной особенностью — в отличие от предыдущих примеров, здесь большинство параметров (кроме -A и -M) не сочетаются. То есть в команде может быть только один параметр за раз.

Структура команды проста:

gpasswd [что сделать] [в какой группе]

Рассмотрим опции команды подробнее: 

-a new-userДобавляет пользователя new-user в группу
-d bad-userУдаляет пользователя bad-user из группы
-A user1,user2,…Доступна для использования привилегированным пользователям (с правами root). Назначает список пользователей-администраторов группы
-M user1,user2,…Доступна для использования привилегированным пользователям. Назначает список участников группы
-rОтключает пароль группы. После этого только члены группы смогут использовать команду newgrp для подключения к группе
-RОтключает внешний доступ к группе. После этого только члены группы смогут использовать команду newgrp для подключения к группе

То есть если нам потребуется добавить пользователя в новую группу, достаточно будет использовать следующую команду: 

gpasswd -a new-user test-group

Также для добавления пользователей в новую группу используется описанная выше команда usermod. Следующий пример добавляет пользователя test-user в группу new-group

usermod -a -G new-group test-user

Или, если нужно указать группу new-group в качестве основной группы пользователя test-user:

usermod -g new-group test-user

Помимо этого, любой пользователь может сам авторизоваться и добавиться в новую группу с помощью команды: 

newgrp new-group

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

Изменение атрибутов файлов

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

Посмотреть атрибуты файлов в текущей директории можно с помощью команды lsattr. Если запустить её без аргументов, она выведет атрибуты всех файлов в текущей директории. Если указать путь к файлу или папке, она перечислит свойства указанного файла или списка файлов в указанной папке соответственно:

lsattr example.txt

Первые 20 символов в строке предназначены для отображения атрибутов файла.

Список атрибутов может отличаться в зависимости от файловой системы.  

Изменить атрибуты файла позволяет команда chattr:

chattr [модификатор][изменяемые атрибуты] [целевой файл или папка]

То есть, если нам нужно защитить какой-то важный файл от посягательств, можно использовать такую команду:

chattr +i example.txt

Проверяем — посягательства не работают.

Если же нам нужно вернуть файл в нормальное состояние, нужно выполнить обратную операцию: 

chattr -i example.txt

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

man chattr

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

Процесс добавления пользователя состоит из двух шагов: создания пользователя и настройки пароля. 

На первом шаге используется команда useradd c набором опций для настройки нового пользователя и его именем (логином):

useradd [как создать] [как назвать]

Эта команда имеет ряд настроек по умолчанию, которые задаются с помощью файлов /etc/default/useradd и /etc/login.defs Увидеть основные можно с помощью команды:

useradd -D
GROUPGID группы, в которую пользователь будет добавлен после создания
HOMEбазовый каталог, в котором будет размещена директория пользователя
INACTIVEуказывает время до блокировки пользователя, когда его пароль станет недействителен. Значение «-1» отключает опцию
EXPIREдата, до которой действителен аккаунт. По умолчанию не установлена — то есть без ограничений
SHELLиспользуется для настройки доступа к командной оболочке
SKELсодержит путь к директории, в которой хранятся файлы по умолчанию. После создания пользователя они будут автоматически скопированы в его домашнюю папку
CREATE_MAIL_SPOOLопределяет, нужно ли создать папку для писем этого пользователя в /var/spool/mail/

Все эти настройки применяются, если использовать самый простой вариант команды создания пользователя без параметров:

useradd test-user

Но обычно нам требуется добавить пользователя со специфическими настройками — для этого используется расширенный вариант этой команды. Перечислим основные опции:

-mсоздаёт указанную домашнюю директорию, если она ещё не существует
-d /home/test-userустанавливает /home/test-user в качестве домашней директории
-c “Имя Фамилия”добавляет комментарий. Например, с именем пользователя
-g testуказывает группу, в которую попадёт пользователь после создания. Можно использовать с GID или именем группы. Указанная группа должна существовать. Используется в сочетании с ключом -N (отменяет автоматическое создание группы с именем пользователя)
-G users,wheelуказывает список дополнительных групп пользователя. Они перечисляются через запятую без пробелов
-s /bin/bashпозволяет настроить доступ к shell
-rсоздаёт системного пользователя. Используется, когда вам нужно настроить службу на работу из-под конкретного пользователя. По умолчанию данные таких пользователей не вносятся в /etc/shadow, для них не создаётся домашняя папка
-uпозволяет указать свой UID, который будет присвоен новому пользователю. В качестве UID указывается положительное целое число. UID должен быть уникален
-e 2021-01-01указывает дату, до которой аккаунт будет активен. Дата задаётся в формате YYYY-MM-DD
-f 3указывает количество дней до блокировки пользователя, когда его пароль станет недействителен

В итоге получится вот такая сборная солянка из настроек:

useradd -m -u 666 -d /home/users/test-user -c "Тестовый пользователь" -e 2060-01-01 -s /bin/bash test-user

В примере мы создаём тестового пользователя test-user с идентификатором 666, домашней папкой в /home/users/test-user, комментарием «Тестовый пользователь» и доступом к командной оболочке. Учётная запись будет действительна до конца света по Ньютону.

Более подробную информацию о доступных опциях для useradd можно увидеть с помощью команды man useradd.

Очень важно после создания пользователя настроить для него надёжный пароль. Для этого нужно ввести следующую команду:

passwd test-user

Система предложит ввести и подтвердить пароль. На этом процесс создания пользователя можно считать завершённым.