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

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

  • Пользователь (user) - является концептом безопасности в системе.

    • Пользователи создаются для предоставления людям или процессам доступа к системным ресурсам

  • Процессы используют системные аккаунты

  • Для людей используются регулярные пользовательские аккаунты

Атрибуты пользователей

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

  • Пароль

    • Пароль хранится в отдельном файле, etc/shadow, здесь он выставлен в x

  • UID - уникальный идентификатор пользователя

  • GID - идентификатор группы пользовалея

  • GECOS - дополнительная, необязательная информация о пользователе

  • Home Directory - среда, в которой пользователь создает личные файлы

  • Shell - программа, которая запускается при успешном логине пользователя

[admin@centos8 ~]$ sudo cat /etc/passwd
[sudo] password for admin: 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
<...>
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
admin:x:1000:1000:Administrator:/home/admin:/bin/bash

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

  • useradd - создание аккаунта пользователя

    • useradd -c - добавить информацию в GECOS

    • useradd -s - изменить shell для пользователя

    • useradd -p - установить пароль в шифрованном виде

  • usermod - изменения аккаунта пользователя

    • usermod -G - изменить группы

    • usermod -a - добавить пользователя в группу

  • userdel - удаление аккаунта пользователя

    • userdel -f - принудительное удаление

    • userdel -r - удаление с домашней папкой и почтой

  • passwd - назначить пароль для аккаунта

    • passwd -l - заблокировать пользователя

    • passwd -u - разблокировать пользователя

root@centos8 ~]# useradd -c test_user bill
[root@centos8 ~]# id bill
uid=1001(bill) gid=1001(bill) groups=1001(bill)
[root@centos8 ~]# usermod -aG  wheel bill
[root@centos8 ~]# id bill
uid=1001(bill) gid=1001(bill) groups=1001(bill),10(wheel)
[root@centos8 ~]# passwd bill
Changing password for user bill.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@centos8 ~]# userdel -f bill
[root@centos8 ~]# id bill
id: ‘bill’: no such user

Управление дефолтными настройками

  • useradd -D - определяет настройки по-умолчанию для пользователя

  • Содержимое /etc/default/useradd применяется только для useradd

    • Параметр GROUP=100 является наследуемым признаком, ранее все пользователи помещались в группу USERS по-умолчанию, теперь механизм другой

  • Альтернативно, дефолтные настройки записываются в /etc/login.defs

[root@centos8 ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@centos8 ~]# cat /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR	Maildir
MAIL_DIR	/var/spool/mail
#MAIL_FILE	.mail

# Password aging controls:
#
#	PASS_MAX_DAYS	Maximum number of days a password may be used.
#	PASS_MIN_DAYS	Minimum number of days allowed between password changes.
#	PASS_MIN_LEN	Minimum acceptable password length.
#	PASS_WARN_AGE	Number of days warning given before a password expires.
#
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD	/usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME	yes

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
  • Файлы в /etc/skel создаются для пользователя до момента создания home директории

    • Если поместить сюда файл, то он будет перенесен в домашнюю директорию пользователя

[root@centos8 ~]# ls -a /etc/skel
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

Passwd и shadow файлы

  • /etc/passwd используется для хранения пользовательских параметров

    • Linux оперирует не именами, а ID

    • Рут всегда имеет ID, равный нулю

    • Соответственно если любой другой пользователь получит ID, равный нулю, то он получит полный доступ к системе

  • /etc/shadow хранит пользовательские пароли, вернее хэши от них

    • 18078 - время от 01 января 1970 года, когда был создан пароль для пользователя

    • Исчисление времени в Linux осуществляется с этой даты, 01.01.1970 называется EPOCH

    • 0 - PASS_MIN_DAYS

    • 99999 - PASS_MAX_DAYS

    • 7 - количество дней до истечения пароля, когда пользователь будет об этом уведомлен

    • !! - пароль отключен для пользователя

[root@centos8 ~]# cat /etc/shadow
root:$6$YGvvIZaEe.CzK00h$hdl/09uSQ19nMv/ckjbiPQj7Er5P5rhCpFiCVIRFfvL/LrP2OWHOVjIWFSf49XjEiYUsLx7n0rpy/Alxyj4IX/::0:99999:7:::
bin:*:18078:0:99999:7:::
daemon:*:18078:0:99999:7:::
<...>
tcpdump:!!:18268::::::
admin:$6$TCph1GHALnERxce.$f/iSPJynr5Pm2loplT7ZuE1zM690B2sHM0p7xzAPyAXMDB.JdN0iTimzWuwHztE9plDCp5.L.S9zly1Rue5Xf/::0:99999:7:::
  • /etc/group используется для хранения атрибутов групп

    • Число за x - держатель пароля группы, более неиспользуемая функция

    • bill - пользователь, для которого эта группа является secondary

      • Все пользователи являются членами primary группы, которая обозначена в GID в /etc/paswd, остальные группы для него будут secondary

[root@centos8 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
<...>
slocate:x:21:
tcpdump:x:72:
admin:x:1000:bill
docker:x:976:
cgred:x:975:

Особенности групп

  • Каждый пользователь должен быть членом хотя бы одной группы

  • Принадлежность к Primary группе управляется через etc/passwd

  • Primary группа пользователя становится и владельцем файла, который создает пользователь

  • Secondary группы управляются через etc/groups

  • Команда id показывает принадлежность пользователя к группе

Создание и управление группами

  • groupadd - добавление групп

  • groupdel - удаление групп

  • groupmod - изменение параметров групп

  • lid -g <groupname> - показать пользователей в заданной группе

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

  • Базовые требования к паролям хранятся в etc/login.defs

  • Для расширенных атрибутов могут быть использованы Pluggable Authentication Modules (PAM)

    • pam_tally2

  • chage - изменить пароль пользователя

[root@centos8 ~]# chage bill
Changing the aging information for bill
Enter the new value, or press ENTER for the default

	Minimum Password Age [0]: 3
	Maximum Password Age [99999]: 9
	Last Password Change (YYYY-MM-DD) [2020-02-23]: 
	Password Expiration Warning [7]: 7
	Password Inactive [-1]: 
	Account Expiration Date (YYYY-MM-DD) [-1]: 2020-02-28
  • passwd также позволяет управлять паролями (блокировка\разблокировка)

Last updated