Linux. Пользователи и группы

06.12.2019

Теги: LinuxКомандаПользовательПраваДоступа

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

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

Добавление пользователя

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

$ sudo useradd -m developer

Будет создана домашняя директория developer внутри директории /home:

$ cd /home/developer
$ ls -la
итого 32
drwxr-xr-x 2 developer developer 4096 дек  6 14:58 .
drwxr-xr-x 4 root      root      4096 дек  6 14:58 ..
-rw-r--r-- 1 developer developer  220 апр  4  2018 .bash_logout
-rw-r--r-- 1 developer developer 3771 апр  4  2018 .bashrc
-rw-r--r-- 1 developer developer 8980 апр 16  2018 examples.desktop
-rw-r--r-- 1 developer developer  807 апр  4  2018 .profile

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

$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Справка по команде useradd:

$ useradd --help
Использование: useradd [параметры] ПОЛЬЗОВАТЕЛЬ
               useradd -D
               useradd -D [параметры]

Параметры:
  -b, --base-dir БАЗ_КАТАЛОГ    базовый каталог для домашнего каталога новой учётной записи
  -c, --comment КОММЕНТАРИЙ     поле GECOS новой учётной записи
  -d, --home-dir ДОМ_КАТАЛОГ    домашний каталог новой учётной записи
  -D, --defaults                показать или изменить настройки по умолчанию для useradd
  -e, --expiredate ДАТА_УСТ     дата устаревания новой учётной записи
  -f, --inactive НЕАКТИВНОСТЬ   период неактивности пароля новой учётной записи
  -g, --gid ГРУППА              имя или ID первичной группы новой учётной записи
  -G, --groups ГРУППЫ           список дополнительных групп новой учётной записи
  -h, --help                    показать данное сообщение и закончить работу
  -k, --skel КАБ_ШАБ            использовать альтернативный каталог с шаблонами
  -K, --key КЛЮЧ=ЗНАЧЕНИЕ       заменить значение по умолчанию из /etc/login.defs
  -l, --no-log-init             не добавлять пользователя в базы данных lastlog и faillog
  -m, --create-home             создать домашний каталог пользователя
  -M, --no-create-home          не создавать домашний каталог пользователя
  -N, --no-user-group           не создавать группу с тем же именем что и у пользователя
  -o, --non-unique              разрешить создание пользователей с повторяющимися (не уникальными) UID
  -p, --password ПАРОЛЬ         зашифрованный пароль новой учётной записи
  -r, --system                  создавать системную группу
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
  -s, --shell ОБОЛОЧКА          регистрационная оболочка новой учётной записи
  -u, --uid UID                 пользовательский ID новой учётной записи
  -U, --user-group              создать группу с тем же именем что и у пользователя
  -Z, --selinux-user SEUSER     использовать указанного SEUSER для пользовательского сопоставления SELinux

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

$ sudo passwd developer
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён

Изменение пользователя

Изменить учетную запись:

$ sudo usermod -c "Разработчик сайта" developer

Справка по команде usermod:

$ usermod --help
Использование: usermod [параметры] ПОЛЬЗОВАТЕЛЬ

Параметры:
  -c, --comment КОММЕНТАРИЙ     новое значение поля GECOS
  -d, --home ДОМ_КАТАЛОГ        новый домашний каталог учётной записи
  -e, --expiredate ДАТА_УСТ     установить дату окончания действия учётной записи в ДАТА_УСТ
  -f, --inactive НЕАКТИВНОСТЬ   установить период неактивности пароля после устаревания учётной
                                записи равным НЕАКТИВНОСТЬ
  -g, --gid ГРУППА              принудительно назначить первичную ГРУППУ
  -G, --groups ГРУППЫ           список дополнительных ГРУПП
  -a, --append                  добавить пользователя в дополнительные ГРУППЫ, указанные в параметре -G
                                не удаляя пользователя из других групп
  -h, --help                    показать данное сообщение и закончить работу
  -l, --login НОВОЕ_ИМЯ         новое значение имени учётной записи
  -L, --lock                    заблокировать учётную запись
  -m, --move-home               переместить содержимое домашнего каталога в новое место
                                (использовать только вместе с -d)
  -o, --non-unique              разрешить создание учётной записи с уже имеющимся (не уникальным) UID
  -p, --password ПАРОЛЬ         задать новый шифрованный пароль для учётной записи
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
  -s, --shell ОБОЛОЧКА          новая регистрационная оболочка для учётной записи
  -u, --uid UID                 новый UID для учётной записи
  -U, --unlock                  разблокировать учётную запись
  -v, --add-subuids ПЕРВ-ПОСЛ   добавить диапазон подчинённых uid
  -V, --del-subuids ПЕРВ-ПОСЛ   удалить диапазон подчинённых uid
  -w, --add-subgids ПЕРВ-ПОСЛ   добавить диапазон подчинённых gid
  -W, --del-subgids ПЕРВ-ПОСЛ   удалить диапазон подчинённых gid
  -Z, --selinux-user SEUSER     новое пользовательское сопоставление SELinux для учётной записи

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

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

$ sudo userdel -r developer

Справка по команде userdel:

$ userdel --help
Использование: userdel [параметры] ПОЛЬЗОВАТЕЛЬ

Параметры:
  -f, --force                   удалять файлы, даже если они не принадлежат пользователю
  -h, --help                    показать данное сообщение и закончить работу
  -r, --remove                  удалить домашний каталог и почтовый ящик
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
      --extrausers              Use the extra users database
  -Z, --selinux-user            удалить все пользовательские сопоставления SELinux для пользователя

Информация о пользователе

С помощью команд id и w:

$ id evgeniy
uid=1000(evgeniy) gid=1000(evgeniy) группы=1000(evgeniy),4(adm),24(cdrom),27(sudo),30(dip),33(www-data)
$ w evgeniy
 15:28:42 up 41 min,  1 user,  load average: 0,02, 0,02, 0,01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
evgeniy  :0       :0               14:47   ?xdm?  36.09s  0.01s /usr/lib/gdm3/g

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

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

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

$ sudo groupadd developers

Справка по команде groupadd:

$ groupadd --help
Использование: groupadd [параметры] ГРУППА

Параметры:
  -f, --force                   закончить работу без ошибки, если группа существует и отменить -g,
                                если GID уже используется
  -g, --gid GID                 для новой группы использовать указанный GID
  -h, --help                    показать данное сообщение и закончить работу
  -K, --key КЛЮЧ=ЗНАЧЕНИЕ       заменить значение по умолчанию из /etc/login.defs
  -o, --non-unique              разрешить создание групп с повторяющимся (не уникальным) GID
  -p, --password ПАРОЛЬ         использовать этот шифрованный пароль для новой группы
  -r, --system                  создавать системную группу
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
      --extrausers              Use the extra users database

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

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

$ sudo groupmod -n new-group-name old-group-name

Справка по команде groupmod:

$ groupmod --help
Использование: groupmod [параметры] ГРУППА

Параметры:
  -g, --gid GID                 изменить ID группы на GID
  -h, --help                    показать данное сообщение и закончить работу
  -n, --new-name НОВАЯ_ГРУППА   изменить имя на НОВУЮ_ГРУППУ
  -o, --non-unique              разрешить повторяющиеся (не уникальные) GID
  -p, --password ПАРОЛЬ         изменить пароль на заданный (шифрованный)
                                ПАРОЛЬ
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot

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

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

$ sudo groupdel developers

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

Информация о группах пользователя:

$ groups evgeniy
evgeniy : evgeniy adm cdrom sudo dip www-data

Для добавления пользователя в группу или удаления пользователя из группы можно использовать утилиту gpasswd:

$ gpasswd --help
Использование: gpasswd [параметр] ГРУППА

Параметры:
  -a, --add ПОЛЬЗ               добавить ПОЛЬЗОВАТЕЛЯ в ГРУППУ
  -d, --delete ПОЛЬЗ            удалить ПОЛЬЗОВАТЕЛЯ из ГРУППЫ
  -h, --help                    показать данное сообщение и закончить работу
  -Q, --root КАТ_CHROOT         каталог, который выполняется chroot
  -r, --remove-password         удалить пароль ГРУППЫ
  -R, --restrict                ограничить доступ в ГРУППУ её членами
  -M, --members ПОЛЬЗ,…         задать список членов ГРУППЫ
  -A, --administrators АДМИН,…  задать список администраторов ГРУППЫ
За исключением параметров -A и -M, остальные не могут указываться
одновременно.

Файлы passwd и group

Список всех пользователей и список всех групп можно посмотреть в файлах /etc/passwd и /etc/group.

Файл /etc/passwd

В файле /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
..........
evgeniy:x:1000:1000:Evgeniy:/home/evgeniy:/bin/bash
mysql:x:122:127:MySQL Server:/nonexistent:/bin/false

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

  1. Имя пользователя для входа в систему.
  2. Необязательный зашифрованный пароль.
  3. Числовой идентификатор пользователя (UID).
  4. Числовой идентификатор группы (GID).
  5. Поле комментария.
  6. Домашний каталог пользователя.
  7. Оболочка пользователя.

Второе и последнее поля необязательные и могут не иметь значения.

Файл /etc/group

В файле /etc/group, как очевидно из названия, хранится информация о группах. Одна строка из этого файла соответствует описанию одной группы:

$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,evgeniy
..........
evgeniy:x:1000:
mysql:x:127:

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

  1. Название группы.
  2. Необязательный зашифрованный пароль.
  3. Числовой идентификатор группы (GID).
  4. Список пользователей, находящихся в группе.

В этом файле второе и четвертое поля могут быть пустыми.

Файл /etc/shadow

Файл /etc/shadow хранит в себе зашифрованные пароли пользователей, поэтому права, установленные на этот файл, не дают считать его простому пользователю.

Поиск: Linux • Команда • Пользователь • Права доступа • Группа • useradd • usermod • userdel • groupadd • groupmod • groupdel

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.