Для того чтобы идентифицировать физического человека в ОС используются пользователи, в основном это конечно делается из соображения безопасности.
Пользователи имеют имя пользователя (user name) для идентификации человека, и в идеале должно содержать настоящее имя человека. Внутри ОС ядро идентифицирует пользователя по уникальному идентификатору (unique identificator
) - UID
. Если пользователь ОС используется человеком, то необходимо также задать пароль пользователя, благодаря которому человек идентифицирует себя.
Аккаунт пользователя — это фундаментальная вещь для обеспечения безопасности ОС. Каждый процесс в системе запускается под своим пользователем, так правильно. Каждый файл имеет своего владельца, что обеспечивает сохранность файла. Процесс запущенный под определённым пользователем будет иметь доступ только к тем файлам, к которым он имеет доступ.
О том как управлять пользователями можно почитать тут. О том как управлять группами можно почитать тут.
Типы пользователей ОС 👨💻
Пользователи в основном делятся на 3 основных типа:
- Superuser - для администрирования ОС. По умолчанию им является пользователь
root
с уникальнымUID 0
. У него все права в ОС которые только существуют, поэтому в идеале не стоит работать под ним и тем более раздавать пароль от него всем подряд. - System user - пользователи, предназначенные для запуска сервисов (daemons). Каждый сервис должен запускаться под своим пользователем, и ни в коем случае не должен быть запущен от
root
. Также эти пользователи не должны иметь права авторизации в ОС (/sbin/nologin
). - Regular user - обычные пользователи ОС, под которыми вы сидите каждый день.
UID 🆔
Для просмотра информации о текущем пользователе используется команда id username
. Где мы как раз-таки увидим наш UID
, для обычного пользователя UID
начинается с 1000.
id admin
uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Для того чтобы посмотреть владельца файла можно использовать команду ls -la file
, в выводе в 3 колонке будет имя владельца файла.
ls -la /tmp/stderr.txt
-rw-rw-r--. 1 admin admin 42 Nov 1 21:46 /tmp/stderr.txt
Также мы говорили о том, что каждый процесс запускается от своего пользователя, для просмотра этого используется команда ```ps -au``.
ps -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 916 0.0 0.0 13656 20 tty1 Ss+ Oct30 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
admin 145378 0.0 0.7 24120 2232 pts/0 Ss Nov01 0:00 -bash
admin 154568 0.0 1.1 55808 3588 pts/0 R+ 10:46 0:00 ps -au
В графе USER
мы видим пользователя, от которого запущен процесс, т.е. владельца процесса. Но само ядро привязывает пользователя к процессу по UID
. Соответственно где-то в системе хранится сопоставление имени пользователя с его UID
и находится это в файле /etc/passwd.
/etc/passwd 🔒
Каждая строка хранит информацию о пользователе. Каждая строка разбита на 7 колонок.
- Имя пользователя
- Пароль пользователя, хранящийся в зашифрованном виде. Хранится в файле
/etc/shadow
. Это поле всегда имеет значениех
. UID
для пользователяGID
-id
группы основной- Полное имя пользователя
- Домашняя директория пользователя
- Оболочка по умолчанию
/etc/shadow 🔑
В этом файле хранятся зашифрованные значения паролей для каждого пользователя и уточняющая информация.
- Имя пользователя
- Пароль
- Через сколько дней можно сменить пароль
- Дней до смены пароля
- Дней до предупреждения пользователя о смене пароля
- Дней до истечения срока действия аккаунта
- Зарезервировано для возможного использования в будущем
Среда окружения 🧖🏿
Каждый пользователь может изменять свои настройки по умолчанию. Например, можно задать новый umask или прокинуть какие-то переменные в своё окружение. Для этого пользователь может использовать файл ~/.bash_profile. Символ ~ обозначает домашнюю директорию пользователя /home/user.
Но также системный администратор может выставить настройки для всех пользователей используя директорию /etc/profile.
Также администратор ОС может использовать директорию /etc/skel. Все файлы находящиеся здесь будут скопированы в домашнюю директорию новых пользователей, при их создании.
Теперь немного про группы 👯
Группы — это совокупность пользователей, и служат они в основном для раздачи прав на файлы многим пользователям. Т.е. группа объединяет нескольких пользователей для дальнейших манипуляций.
Как и пользователи группы имеют свой собственный id
- GID
и также имеют своё имя группы (Group name
).
Также, как и пользователи имеют свой файл с сопоставлением имени группы и GID
. Этот файл находится по пути /etc/group
.
/etc/group 🪄
- Имя группы
- Пароль группы, всегда имеет значение х
GID
-id
группы- Список пользователей которые входят в группу разделённых запятыми
Основные и дополнительные группы (Primary and Supplementary) 🧙
Каждый пользователь имеет только одну основную группу. Это группа становится группой владельцем для создаваемых файлов от имени пользователя.
По умолчанию, когда вы создаёте пользователя также и создаётся основная группа с одноименным названием. Создаваемая группа будет для пользователя основной, и по умолчанию только этот пользователь будет состоять в ней (User Private Group
).
Пользователи также могут иметь и дополнительные группы. Кто и в каких дополнительных группах состоит записывается в файле /etc/group
.
Для того чтобы посмотреть в каких группах состоит пользователь можно воспользоваться командой id
которую мы уже рассматривали выше или groups
.
Комментарии