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

Обновлено Обновлено: Опубликовано Опубликовано:

В данной инструкции рассказывается о работе с пользователями Linux через терминал (с применением командной строки).

Получение информации о пользователях

1. Список пользователей можно посмотреть в файле /etc/passwd командой:

less /etc/passwd

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

users

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

id username

Мы должны увидеть что-то на подобие:

uid=1001(username) gid=1001(username) groups=1001(username),27(sudo)

* учетная запись username существует, она находится в основной группе username и дополнительной sudo. Ее идентификатор 1001.

3. Также мы можем получить строку о пользователе из файла /etc/passwd:

getent passwd username

Мы увидим что-то такое:

username:x:1001:1001::/home/username:/bin/sh

* наш пользовател username имеют идентификатор пользователя и группы 1001, его домашняя директория /home/username, командная оболочка /bin/sh.

Создание

Синтаксис:

useradd <имя пользователя> [опции]

* опции не являются обязательными при создании пользователя.

Пример:

useradd dmosk

* в данном примере создается учетная запись dmosk.

Для учетной записи стоит сразу создать пароль:

passwd dmosk

* после ввода, система попросит ввести пароль дважды.

Ключи (опции)

Ключ Описание и примеры
-b Задает базовый каталог для домашнего каталога
useradd dmosk -b /var/home
-c Создает комментарий для описания учетной записи
useradd dmosk -c "Пользователя для управления системой"
-d Полный путь к домашнему каталогу пользователя
useradd dmosk -d /home/newuser
-D Позволяет показать или изменить настройки по умолчанию, которые будут применяться при последующем создании пользователей
useradd dmosk -Ds /bin/bash
-e Дата, после которой учетная запись устареет.
useradd dmosk -e 2017-12-31
-f Число дней, после которого учетная запись с устаревшим паролем будет заблокирована
useradd dmosk -f 0
-g Задает основную группу
useradd dmosk -g altternativegroup
-G Задает дополнительные группы
useradd dmosk -G wheel
-k Путь к источнику скелета (файлы с шаблонами для нового пользователя)
useradd dmosk -k /var/skel
-m При создании пользователя создать домашний каталог
useradd dmosk -m
-M Не создавать домашний каталог
useradd dmosk -M
-N Не создавать основную группу с таким же именем, как у пользователя
useradd dmosk -N
-o Разрешает создание учетной записи с повторяющимся UID
useradd dmosk -u 15 -o
-p Задает пароль
useradd dmosk -p pass
-r Системная учетная запись (без домашнего каталога и с идентификаторами в диапазоне SYS_UID_MIN - SYS_UID_MAX из файла /etc/login.defs)
useradd dmosk -r
-R Каталог, в который выполняется chroot
useradd dmosk -R /var/chroot/home
-s Путь до оболочки командной строки
useradd dmosk -s /bin/csh
-u Задает UID
useradd dmosk -u 666
-U Имя группы будет таким же, как у пользователя
useradd dmosk -U

Актуальный список ключей можно получить командой useradd -h.

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

Синтаксис:

usermod <имя пользователя> [опции]

Пример:

usermod dmosk -G wheel

* эта команда добавит пользователя dmosk в группу wheel

Удаление

Синтаксис:

userdel <имя пользователя> [опции]

Пример:

userdel dmosk

Блокировка

1. Можно заблокировать пользователя, не удаляя его из системы:

usermod -L <имя пользователя>

Пример:

usermod -L dmosk

Чтобы разблокировать пользователя, вводим:

usermod -U <имя пользователя>

2. В некоторых системах Linux может использоваться pam-модуль tally. Он осуществляет подсчет количества неудачных попыток входа в систему. Также он может блокировать доступ при превышении данного количества.

Чтобы посмотреть счетчик для пользователя, вводим команду:

pam_tally2 --user=admin

В версия постарея:

pam_tally --user=admin

Для сброса счетчика (и блокировки, если она есть) вводим:

pam_tally2 --user=admin --reset

Работа с группами

1. Добавление группы:

groupadd <группа> [опции]

2. Редактирование:

groupmod <группа> [опции]

3. Удаление группы:

groupdel <группа> [опции]

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

Выполняется через команду usermod:

usermod -a -G <группы через запятую> <пользователь>

5. Удаление из группы:

Выполняется с помощью gpasswd:

gpasswd --delete <пользователь> <группы через запятую>

Список пользователей

Посмотреть список пользователей можно в файле /etc/passwd:

cat /etc/passwd

Мы увидим что-то на подобие:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
...

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

Более функциональная команда для отображения содержимого файла passwd — getent:

getent passwd

Можно найти пользователя по идентификатору:

getent passwd 1000

Получить список не системных пользователей:

getent passwd {1000..60000}

Получить только список логинов не системных учетных записей:

getent passwd {1000..60000} | awk -F: '{ print $1}'

Работа с паролями

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

1. Смена пароля для текущего пользователя:

passwd

2. Смена пароля для конкретного пользователя:

passwd dmosk

* в данном случае замена будет выполняться для пользователя dmosk.

3. Хэш пароля.

Пароли пользователей хранятся в файле /etc/shadow в виде хэша. Чтобы самим сгенерировать данный хэш (может понадобиться для ручного создания записи или с помощью cloud-init), выполняем команду:

mkpasswd -m sha-512

Примеры работы с учетными записями

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

useradd

1. Создать пользователя, добавить его в группу и создать домашнюю директорию:

useradd dmosk -G printer -m

2. Создать учетную запись с возможностью получения привилений суперпользователя (командой sudo su):

useradd dmosk -G wheel -m

* для систем RPM.

useradd dmosk -G sudo -m

* для систем DEB.

3. Создать пользователя с определенными UID и GID (соответственно идентификаторы пользователя и группы):

useradd dmosk -u 900 -g 950

* группа с используемым идентификатором (в данном примере 950) уже должна быть создана заранее с использованием команды groupadd.

4. Создать пользователя и указать путь к домашней директории:

useradd dmosk -d /home/newdmosk

5. Создать учетную запись без возможности входа в систему:

useradd dmosk -s /sbin/nologin

usermod

1. Потребовать сменить пароль при следующем входе в систему:

chage -d 0 dmosk

2. Поменять пользователю основную группу:

usermod dmosk -g kdonewgroup

3. Задать пользователю дополнительную группу с правами root:

usermod dmosk -G sudo

4. Добавить пользователя в группу:

usermod -a -G group dmosk

* в данном примере мы добавим пользователя dmosk в группу group.

5. Сменить домашнюю директорию:

usermod -d /var/www/dmosk dmosk

* данной командой мы меняем для пользователя dmosk домашнюю директорию на /var/www/dmosk.

chage

1. Автоматическая блокировка учетной записи:

chage -E 2023-05-01 dmosk

* данной командой мы указали, что учетная запись dmosk перестанет действовать после 1 мая 2023 года.

Чтобы посмотреть информацию о дате окончания срока действия учетной записи вводим:

chage -l dmosk

Сделать учетную запись бессрочной:

chage -E -1 dmosk

Возможные ошибки

sudo must be owned by uid 0 and have the setuid bit set

При попытке получить привилении командой:

sudo su

... система возвращает ошибку:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

Причина: эта ошибка возникает, когда утилита sudo не имеет правильных прав доступа на вашей системе. В частности, она происходит, когда владелец файла /usr/bin/sudo не является пользователем root или когда установлен неправильный бит setuid на файле.

Решение: убедитесь, что вы вошли в систему с учетной записью, имеющей права администратора. Это можно сделать, войдя напрямую под пользователем root.

Выполняем команду, чтобы проверить права файла sudo:

ls -l /usr/bin/sudo

Если владелец не является пользователем root, выполните следующую команду, чтобы изменить владельца файла:

chown root:root /usr/bin/sudo

Убедитесь, что установлен правильный бит setuid на файле sudo, выполнив следующую команду:

chmod u+s /usr/bin/sudo

# Linux # UNIX # Безопасность
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет