Unix2019a/Настройка параметров системы
Практически все настройки операционной системы и приложений в UNIX-системах по традиции хранятся в виде обычных текстовых файлов различного формата, называемых конфигурационными файлами или просто «конфигами». Это очень удобно, поскольку позволяет просто читать и менять их не только из конкретного приложения.
Содержание
Файлы с данными о пользователях
Для примера рассмотрим, где хранится соответствие идентификаторов и символьных имен, а также другая информация о пользователях и группах в системе (учетные записи).
/etc/passwd
Каждая строка файла описывает одного пользователя и содержит семь полей, разделённых двоеточиями. Пример записи:
user_01:x:169:10:Student:/home/user_01:/bin/sh
- регистрационное имя или логин;
- хеш пароля;
- идентификатор пользователя;
- идентификатор группы по умолчанию;
- информационное поле GECOS (полное имя, телефон, ...);
- начальный (он же домашний) каталог;
- регистрационная оболочка, или shell.
Поле GECOS хранит вспомогательную информацию о пользователе (номер телефона, адрес, полное имя и так далее). Оно не имеет чётко определённого синтаксиса. История поля GECOS начинается в Bell labs. Традиционно там такие поля через запятую:
- Полное имя
- Адрес офиса или домашний адрес
- Рабочий телефон
- Домашний телефон
/etc/group
/etc/group содержит записи обо всех группах в системе. Каждая его строка содержит
- Символьное имя группы.
- Пароль группы — устаревшее поле, сейчас не используется. В нём обычно стоит «x».
- Идентификатор группы, или GID.
- Список имён участников, разделённых запятыми.
Пример записи:
bin:x:1:root,bin,daemon
Здесь сообщается, что группа bin имеет GID=1, а входят в неё пользователи root, bin и daemon.
/etc/shadow
Wikipedia: Shadow file - в частности, объясняет, зачем этот файл существует отдельно. Обычно этим файлом владеет суперпользователь, и он недоступен для чтения обычным пользователям.
- имя пользователя,
- хеш пароля,
- дата последнего изменения пароля,
- через сколько дней можно будет поменять пароль,
- через сколько дней пароль устареет,
- за сколько дней до того, как пароль устареет, начать напоминать о необходимости смены пароля,
- через сколько дней после того, как пароль устареет, заблокировать учётную запись пользователя,
- дата, при достижении которой учётная запись блокируется,
- зарезервированное поле.
Типы шифрования:
Scheme id | Schema | Example |
---|---|---|
DES | Kyq4bCxAXJkbg
| |
_ | Berkeley Software Design | _EQ0.jzhSVeUyoSqLupI
|
1 | MD5 | $1$etNnh7FA$OlM7eljE/B7F1J4XYNnk81
|
2, 2a, 2x, 2y | bcrypt | $2a$10$VIhIOofSMqgdGlL4wzE//e.77dAQGqntF/1dT7bqCrVtquInWy2qi
|
3 | NTLM Authentication | $3$$8846f7eaee8fb117ad06bdd830b7586c
|
5 | SHA-256 | $5$9ks3nNEqv31FX.F$gdEoLFsCRsn/WRN3wxUnzfeZLoooVlzeF4WjLomTRFD
|
6 | SHA-512 | $6$qoE2letU$wWPRl.PVczjzeMVgjiA8LLy2nOyZbf7Amj3qLIL978o18gbMySdKZ7uepq9tmMQXxyTIrS12Pln.2Q/6Xscao0
|
md5 | Solaris MD5 | $md5,rounds=5000$GUBv0xjJ$$mSwgIswdjlTY0YxV7HBVm0
|
sha1 | PBKDF1 with SHA-1 | $sha1$40000$jtNX3nZ2$hBNaIXkt4wBI2o5rsi8KejSjNqIq
|
Для MD5 используют 1000 раундов, для SHA — 5000.
Пример: у alice стоит пароль 111.
alice:$6$Cn9lZWeS$93h6Z93fnsVnxUG2590ny01cWrr.ZR.H90R76j6AFVUZNhi151YP8GUvqsiv8olTDufhbp07rD5tSCVvIORuI.:17080:0:99999:7:::
$ python -c 'import crypt; print crypt.crypt("111", "$6$Cn9lZWeS")' $6$Cn9lZWeS$93h6Z93fnsVnxUG2590ny01cWrr.ZR.H90R76j6AFVUZNhi151YP8GUvqsiv8olTDufhbp07rD5tSCVvIORuI.
$ mkpasswd -m sha-512 --salt Cn9lZWeS 111 $6$Cn9lZWeS$93h6Z93fnsVnxUG2590ny01cWrr.ZR.H90R76j6AFVUZNhi151YP8GUvqsiv8olTDufhbp07rD5tSCVvIORuI.
/etc/sudoers
Это конфигурационный файл программы sudo.
Правильно его редактировать командой visudo. Он проверяет корректность синтаксиса перед сохранением файла. Иначе можно испортить sudo и потерять контроль над происходящим.
Например, чтобы отключить запрос пароля при sudo, можно дописать в конец строку
username ALL=(ALL) NOPASSWD: ALL