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

Смена настроек для активного пользователя может привести к сбою системы. Поэтому перед изменением данных важно убедиться, что в текущий момент редактируемый пользователь не авторизован, под ним отсутствуют запущенные процессы, редактируемые файлы. Посмотреть список запущенных процессов пользователя 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *