Unix2019a/Настройка параметров системы

Материал из iRunner Wiki

Практически все настройки операционной системы и приложений в UNIX-системах по традиции хранятся в виде обычных текстовых файлов различного формата, называемых конфигурационными файлами или просто «конфигами». Это очень удобно, поскольку позволяет просто читать и менять их не только из конкретного приложения.

Файлы с данными о пользователях

Для примера рассмотрим, где хранится соответствие идентификаторов и символьных имен, а также другая информация о пользователях и группах в системе (учетные записи).

/etc/passwd

Каждая строка файла описывает одного пользователя и содержит семь полей, разделённых двоеточиями. Пример записи:

user_01:x:169:10:Student:/home/user_01:/bin/sh
  1. регистрационное имя или логин;
  2. хеш пароля;
  3. идентификатор пользователя;
  4. идентификатор группы по умолчанию;
  5. информационное поле GECOS (полное имя, телефон, ...);
  6. начальный (он же домашний) каталог;
  7. регистрационная оболочка, или 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