В linux для аутентификации пользователя и хранения информации о нем используются 2 файла /etc/passwd и /etc/shadow. Давайте рассмотрим назначения каждого из них.
Файл /etc/passwd
В системном файле паролей /etc/passwd содержится по одной строке для каждой учетной записи пользователя. Каждая строка состоит из семи полей:
mtk:x:1000:100:Michael Kerrisk:/home/mtk:/bin/bash
Рассмотрим эти поля по порядку следования:
1. Имя для входа в систему. Это уникальное имя, которое пользователь должен вводить при входе в систему - легко читаемый символьный идентификатор пользователя, соответствующий числовому (UID).
2. Зашифрованный пароль. В этом поле содержится 13-символьный зашифрованный пароль пользователя. Поскольку этот файл используется многими утилитами типа ls, чтобы отобразить владельца файла и другие подобные сведения, он должен быть открыт на чтение для всех, что, конечно, дает отличный шанс хакерам.
По этой причине, в настоящее время, поле пароля в /etc/passwd содержит букву 'x', чтобы обозначить, что пароль был назначен и сохранен в теневом файле /etc/shadow.
Если поле является пустым, значит, для регистрации под этой учетной записью пароль не нужен.
3. Числовой идентификатор пользователя (UID). Если поле хранит значение 0, то пользователь с данной учетной записью - привилегированный (суперпользователь).
Как правило, имеется только одна такая учетная запись, у которой в качестве имени для входа в систему используется слово root.
4. Числовой идентификатор первой из групп, в которую входит пользователь (GID). Дальнейшая принадлежность к группам этого пользователя определена в системном файле групп.
5. Комментарий. Это поле содержит текст, описывающий пользователя. Такой текст выводится различными программами, например finger.
6. Домашний каталог. Исходный каталог, в который пользователь попадает после входа в систему. Содержимое этого поля становится значением переменной среды HOME.
$ echo $HOME
/home/xodefender
7. Оболочка входа в систему. Это программа, которой передается управление после входа пользователя в систему. Обычно это одна из оболочек, например bash, но может быть и любая другая программа.
Если это поле является пустым, то в качестве исходной, применяется оболочка /bin/sh. Содержимое поля становится значением для переменной среды SHELL.
$ echo $SHELL
/bin/bash
Теневой файл /etc/shadow
Теневой файл паролей /etc/shadow был разработан, как средство противостояния хакерским атакам.
Замысел заключается в том, что вся неконфиденциальная информация о пользователе находится в открытом, доступном для чтения файле passwd, а зашифрованные пароли хранятся в теневом файле, доступном для чтения только программам с особыми привилегиями.
Файл /etc/shadow хранит данные о пользователе в формате. Как и в файле passwd, каждое поле в файле shadow отделяется двоеточием:
smithj:Ep6mckrOLChF.:10063:0:99999:7:::
1. Имя пользователя (до 8 символов). Совпадает по значению с /etc/passwd.
2. Зашифрованный пароль (13 символов). Пустая запись '::' показывает, что для входа пароль не нужен (обычно идея плохая).
3. Количество дней, начиная с 1 января 1970, когда пароль был сменен в последний раз.
4. Число дней до смены пароля (0, если он может быть сменен всегда).
5. Число дней, после которых пароль должен быть сменен (99999, если пользователь может не менять пароль фактически никогда).
6. Число дней, в течение которых пользователь получает предупреждения о необходимости пароль сменить (7 для полной недели).
7. Число дней после окончания действия пароля, когда еще можно работать. Если пароль не сменить, после данного срока он выдохнется, и аккаунт будет заблокирован.
8. Число дней, начиная с 1 января 1970, после которых пароль будет заблокирован.
9. Зарезервировано для возможного будущего использования.
Linux++ | IT-Образование