Списки пользователей и групп
Информация о пользователях и группах содержится в системных файлах:
/etc/passwd
— информация о пользователях/etc/group
— информация о группах
Зашифрованные пароли в виде хэшей хранятся в теневых файлах:
/etc/shadow
— защищаемая информацию о пользователях/etc/gshadow
— защищаемая информация о группах
Каждый пользователь или группа в файле описан отдельной строкой из нескольких полей, разделённых двоеточием.
Это текстовые файлы, которые можно читать и изменять в текстовом редакторе.
Форматы файлов описаны в следующих страницах man: passwd(5)
, shadow(5)
, group(5)
, gshadow(5)
.
Скрытые и зашифрованные пароли
Про шифрование паролей
Пароли шифруются с помощью необратимой функцииcrypt
.
Эта функция преобразует строку A в строку B так, чтобы A не могло быть вычислено на основе B.
Функция принимает до 8 символов на вход (строка A) и генерирует строку из 13 печатаемых ASCII-символов (строка B), применяя специальный алгоритм преобразования одних символов в другие. Чтобы усложнить задачу вычисления алгоритма, в нем у частвует соль — специальная примесь в виде двухсимвольной строки, которая направляет алгоритм по одному из 4096-и путей, создавая рандом.
Чтобы узнать пароль, взломщик может попробовать один из методов «брутфорса» — угадывать комбинацию символов.
Такая атака более невозможна на системах, использующих /etc/shadow
.
Записи в файле /etc/shadow
содержат следующие поля:
- имя пользователя;
- зашифрованный пароль;
- несколько полей, влияющих на срок действия пароля.
Редактируя поля, можно сделать пароль пользователя недействительным. Также можно установить период, в течение которого аккаунт пользователя с недействительным паролем деактивируется.
- Файл
/etc/shadow
не может быть прочитан обычными пользователями. - Файл
/etc/passwd
, содержащий зашифрованные пароли, может быть прочитан кем угодно.
Меры предосторожности при работе с системными файлами
- Рекомендуем делать копию или бэкап любого системного файла перед его открытием или изменением.
- Если несколько пользователей сервера могут открыть файл одновременно, нужно защитить файл от повреждения.
Команды для безопасного редактирования:
vipw
для редактирования/etc/passwd
,vigr
для редактирования/etc/group
Опция -s
предназначена для теневых файлов:
vipw -s
для редактирования/etc/shadow
,vigr -s
для редактирования/etc/gshadow
.
Эти команды блокируют файл для редактирования другими пользователями.
Как это работает
Допустим, администратор А открыл список пользователей с помощью команды vipw
и приступил к редактированию.
Пока он в процессе, администратор B открывает любым редактором этот же файл.
Его программа сначала проверяет переменную среды $VISUAL
, затем $EDITOR
и видит блокировку редактирования этого файла.
Администратор В не сможет внести изменения, пока администратор А работает со списком пользователей.
Поля в списке пользователей
Записи в файле /etc/passwd
содержат следующие поля:
- имя пользователя;
password
— пароль в зашифрованном виде;uid
— уникальный идентификационный номер пользователя;gid
— уникальный идентификационный номер основной группы пользователя (по умолчанию система создаёт специальную группу для каждого пользователя);GECOS
— поле с данными, как правило, содержит полное имя пользователя;- директория для хранения личных файлов пользователя (сюда обычно указывает переменная
$HOME
); - программа для выполнения при входе (обычно это командный интерпретатор (shell).
Если указать программу /bin/false
, пользователь не сможет входить в систему. Эта программа ничего не делает и немедленно завершается.
Поля в списке групп
Группа в Unix — это сущность, включающая нескольких п ользователей с одинаковыми правами доступа во встроенной системе разрешений. Группой так же можно ограничить доступ к файлам и программам.
Записи в файле /etc/group
содержат следующие поля:
- имя группы;
- опциональный пароль — используется, чтобы присоединиться к новой группе с помощью команд
newgrp
илиsg
; gid
— уникальный идентификационный номер группы;- список участников — список входящих в группу пользователей, разделённых запятыми.
Работа с несколькими группами
Каждый пользователь обязательно имеет основную группу и может быть участником других групп.
Основная группа создаётся автоматически при первоначальной конфигурации пользователя. Каждый файл, создаваемый пользователем, по умолчанию принадлежит и ему, и его основной группе.
Если пользователю нужно работать в директории, доступ к которой выдан не его основной группе, есть два способа.
- Он может сменить основную группу с помощью команд:
newgrp
— запускает новый экземпляр оболочкиsg
— выполняет команду от имени альтернативной группы.
Также эти команды позволяют пользователю присоединиться к группе, к которой он не принадлежит. Если группа защищена паролем, пользователь должен будет ввести пароль перед выполнением команды.
- Установить правило внутри директории, что все файлы, создаваемые в ней, будут автоматически принадлежать нужной группе.
Бит
setgid
устанавливает такое правило.
NSS и системные базы данных
Есть альтернативные способы хранения списков пользователей и паролей:
- LDAP
- модули NSS (Name Service Switch)
Такие модули перечислены в файле /etc/nsswitch.conf
в записях passwd
, shadow
и group
.