Файл /etc/login.defs#

login.defs - это конфигурационный файл, определяющий конфигурацию набора теневых паролей для конкретного сайта.

Представляет собой читаемый текстовый файл, каждая строка которого описывает один параметр конфигурации и состоит из имени и значения, разделенных пробелом. Строки комментариев (начинаются с #) и пустые игнорируются.

Значения параметров могут быть четырех типов:

  • строки – состоят из любых символов, доступных для печати;

  • логические значения – либо yes, либо no;

  • числа – могут быть либо десятичными, либо восьмеричными, либо шестнадцатеричными;

  • длинные числа – аналогично числам.

Параметры управляют поведением инструментов из компонента shadow-utils (подсистема управления учетными записями и файлами теневых паролей). Ни одно из этих средств не использует механизм PAM, а утилиты, использующие PAM должны быть настроены иным образом - в соответствующих конфигурационных файлах. Единственными значениями, влияющими на модули PAM, являются ENCRYPT_METHOD и SHA_CRYPT_MAX_ROUNDS для модуля pam_unix, FAIL_DELAY для pam_faildelay и UMASK для pam_umask (дополнительную информацию см. в «Файл /etc/pam.d/system-auth»).

Параметры конфигурации:

  • BCRYPT_MIN_ROUNDS (number), BCRYPT_MAX_ROUNDS (number) - если для ENCRYPT_METHOD установлено значение BCRYPT, то данный параметр определяет количество раундов BCRYPT, используемых алгоритмом шифрования по умолчанию (когда количество раундов не указано в командной строке). Значения должны находиться в диапазоне 4-31. Если задано только одно из значений BCRYPT_MIN_ROUNDS или BCRYPT_MAX_ROUNDS, то оно и будет использоваться. Если BCRYPT_MIN_ROUNDS > BCRYPT_MAX_ROUNDS, то будет использоваться наибольшее значение. Влияет только на генерацию групповых паролей.

  • CHFN_RESTRICT (string) - определяет, какие значения в поле gecos файла /etc/passwd могут быть изменены пользователями с помощью chfn (см. справочник man chfn). Это может быть любая комбинация букв f, r, w, h для полного имени, номера комнаты, рабочего и домашнего телефонов соответственно. Для обеспечения обратной совместимости, yes эквивалентно rwh и no эквивалентно frwh. Если параметр не указан, то только пользователь с правами root может вносить какие-либо изменения.

  • CREATE_HOME (boolean) - указание, следует ли создавать домашний каталог по умолчанию для новых пользователей. Данный параметр не применяется к системным пользователям и может быть переопределен в командной строке.

  • DEFAULT_HOME (boolean) - указание, разрешен ли вход в систему, если нет подключения к домашнему каталогу. Значение по умолчанию - no. Если установлено значение yes, то при невозможности создания каталога в домашнем расположении пользователь войдет в корневой каталог (/).

  • ENCRYPT_METHOD (string) - определяет системный алгоритм шифрования паролей по умолчанию. Может принимать одно из значений: BCRYPT, DES (по умолчанию), MD5, SHA256, SHA512, YESCRYPT. Переопределяет переменную MD5_CRYPT_ENAB. Влияет только на генерацию групповых паролей. Генерация пользовательских паролей выполняется PAM и зависит от конфигурации PAM.

  • ENV_PATH (string) - если параметр установлен, то он будет использоваться для определения переменной окружения PATH при входе обычного пользователя в систему. Значение представляет собой список путей, разделенных двоеточием (например, /bin:/usr/bin), перед которым может стоять PATH=. Значение по умолчанию - PATH=/bin:/usr/bin.

  • ENV_SUPATH (string) - если параметр установлен, то он будет использоваться для определения переменной окружения PATH при входе суперпользователя в систему. Значение представляет собой список путей, разделенных двоеточием (например, /sbin:/bin:/usr/sbin:/usr/bin), перед которым может стоять PATH=. Значение по умолчанию - PATH=/sbin:/bin:/usr/sbin:/usr/bin.

  • ERASECHAR (number) - cимвол ERASE в терминале (010 = backspace, 0177 = DEL).

  • FAIL_DELAY (number) - задержка в секундах до разрешения повторной попытки после сбоя входа в систему.

  • FAKE_SHELL (string) - если задано, то login запустит указанную оболочку вместо оболочки пользователя, указанной в /etc/passwd.

  • FORCE_SHADOW - принудительное использование shadow, даже если файлы shadow passwd и shadow group отсутствуют.

  • GID_MAX (number), GID_MIN (number) - диапазон идентификаторов групп, используемых для создания групп с помощью useradd, groupadd или newusers. Значение по умолчанию для GID_MIN равно 1000, для GID_MAX - 60000.

  • HMAC_CRYPTO_ALGO - выбор алгоритма HMAC. Используется в модуле pam_timestamp для вычисления кода аутентификации сообщения с хеш-кодом.

  • HOME_MODE (number) - режим для новых домашних каталогов. Если не указан, то для создания режима используется UMASK.

  • HUSHLOGIN_FILE (string) - если данный параметр определен, то он может блокировать все обычные сообщения во время последовательности входа в систему. Если указан полный путь, то будет включен скрытый режим при наличии в файле имени пользователя или оболочки. Если полный путь не указан, то будет включен скрытый режим при существовании файла в домашнем каталоге пользователя.

  • KILLCHAR (number) - cимвол KILL в терминале (025 = CTRL /U).

  • LASTLOG_UID_MAX (number) - самый высокий идентификационный номер пользователя, для которого должны обновляться записи lastlog. Отсутствие данного параметра означает, что ограничения по идентификатору пользователя для записей lastlog отсутствуют. useradd и newusers используют его для установки режима создаваемой ими домашнем каталоге.

  • LOG_OK_LOGINS (boolean) - включение протоколирования успешных входов в систему.

  • LOG_UNKFAIL_ENAB (boolean) - включение отображения неизвестных имен пользователей при сбое входа в систему.

  • LOGIN_RETRIES (number) - максимальное количество попыток входа в систему в случае неверного пароля.

  • LOGIN_TIMEOUT (number) - максимальное время входа в систему в секундах.

  • MAIL_DIR (string) - каталог почтового спула (места хранения почтовых сообщений до их отправки в ящики пользователей). Данный параметр необходим для управления почтовым ящиком при изменении/удалении соответствующей учетной записи пользователя. Если не указано, то используется значение по умолчанию во время компиляции. Параметр CREATE_MAIL_SPOOL в /etc/default/useradd определяет, следует ли создавать почтовый каталог.

  • MAIL_FILE (string) - определяет расположение файлов спула электронной почты пользователей относительно их домашнего каталога.

  • MAX_MEMBERS_PER_GROUP (number) - максимальное количество участников на запись в группе. При достижении максимального значения в /etc/group запускается новая запись. Значение по умолчанию равно 0, что означает отсутствие ограничений на количество участников в группе. Функция разделения группы позволяет ограничить длину строк в файле групп, чтобы размер строк для групп NIS не превышал 1024 символа.

  • MD5_CRYPT_ENAB (boolean) - указание, должны ли шифроваться пароли с использованием алгоритма на основе MD5. Если установлено значение yes, то новые пароли будут зашифрованы с использованием алгоритма на основе MD5, совместимого с алгоритмом, используемым в последних версиях FreeBSD. Он поддерживает пароли неограниченной длины и более длинные строки salt. Установите значение no, если необходимо скопировать зашифрованные пароли в другие системы, не работающие с новым алгоритмом. Значение по умолчанию - no. Данная переменная заменяется ENCRYPT_METHOD или любым параметром командной строки, используемым для настройки алгоритма шифрования. Влияет только на генерацию групповых паролей.

  • NONEXISTENT (string) - отображается в /etc/passwd для учетной записи в случае, если системная учетная запись не имеет существующего домашнего каталога. В результате pwck не будет выдавать ложное предупреждение для соответствующей учетной записи.

  • PASS_MAX_DAYS (number) - максимальное количество дней, в течение которых может использоваться пароль. Если пароль старше этого значения, то будет произведена принудительная смена пароля. Если не указано, то будет принято значение -1 (отключение ограничения).

  • PASS_MIN_DAYS (number) - минимальное количество дней, допустимое между сменами пароля. Любая попытка смены пароля раньше указанного срока будет отклонена. Если не указано, будет принято значение 0 (отключение ограничения).

  • PASS_WARN_AGE (number) - предупреждение о количестве дней, выдаваемое до истечения срока действия пароля. Значение 0 означает, что предупреждение выдается в день истечения срока действия, -1 или не указано - предупреждение не выдается.

    Примечание

    PASS_MAX_DAYS, PASS_MIN_DAYS и PASS_WARN_AGE используются только при создании учетной записи. Изменения этих настроек не повлияют на существующие учетные записи.

  • SHA_CRYPT_MIN_ROUNDS (number), SHA_CRYPT_MAX_ROUNDS (number) - в случае если для ENCRYPT_METHOD установлено значение SHA256 или SHA512, то данный параметр определяет количество раундов SHA, используемых алгоритмом шифрования по умолчанию (когда количество раундов не указано в командной строке). Если не указано, то libc выберет количество раундов по умолчанию (5000). Значения должны находиться в диапазоне 1000-999,999,99999. Если установлено только одно из значений SHA_CRYPT_MIN_ROUNDS или SHA_CRYPT_MAX_ROUNDS, то оно и будет использоваться. Если SHA_CRYPT_MIN_ROUNDS > SHA_CRYPT_MAX_ROUNDS, то будет использоваться наибольшее значение. Влияет только на генерацию групповых паролей.

  • SULOG_FILE (string) - если задано, то все действия su регистрируются в указанном файле.

  • SU_NAME (string) - указание имени команды, которое будет отображаться при запуске su -. Например, если задано значение su, то ps будет отображать -su. Если не определено, то ps будет отображать имя фактически запускаемой оболочки, например, -sh.

  • SUB_GID_MIN (number), SUB_GID_MAX (number), SUB_GID_COUNT (number) - если существует /etc/subuid, то useradd и newusers (если у пользователя нет идентификаторов подчиненных групп) выделяют SUB_GID_COUNT неиспользуемые идентификаторы групп из диапазона от SUB_GID_MIN до SUB_GID_MAX для каждого нового пользователя. Значения по умолчанию для SUB_GID_MIN, SUB_GID_MAX, SUB_GID_COUNT равны соответственно 100000, 600100000 и 65536.

  • SUB_UID_MIN (number), SUB_UID_MAX (number), SUB_UID_COUNT (number) - если существует /etc/subuid, то useradd и newusers (если у пользователя нет подчиненных идентификаторов пользователей) выделяют SUB_UID_COUNT неиспользуемые идентификаторы пользователей из диапазона от SUB_UID_MIN до SUB_UID_MAX для каждого нового пользователя. Значения по умолчанию для SUB_UID_MIN, SUB_UID_MAX, SUB_UID_COUNT равны соответственно 100000, 600100000 и 65536.

  • SYS_GID_MAX (number), SYS_GID_MIN (number) - диапазон идентификаторов групп, используемых для создания системных групп с помощью useradd, groupadd или newusers.

  • SYS_UID_MAX (number), SYS_UID_MIN (number) - диапазон идентификаторов пользователей, используемых для создания системных пользователей с помощью useradd или newusers.

  • SYSLOG_SG_ENAB (boolean) - включение ведения журнала syslog активности sg.

  • SYSLOG_SU_ENAB (boolean) - включение ведения журнала syslog активности su - в дополнение к ведению журнала файлов sulog.

  • TTYGROUP (string), TTYPERM (string) - разрешения терминала: tty для входа будет принадлежать группе TTYGROUP, а разрешения будут установлены на TTYPERM. TTYGROUP может быть либо именем группы, либо числовым идентификатором группы. Если TTYGROUP не определен, то групповое владение терминалом устанавливается на основную группу пользователя. Если TTYPERM не определен, то разрешения устанавливаются равными 0600. Если имеется программа для записи, для которой setgid присвоен специальной группе, которой принадлежат терминалы, укажите TTYGROUP в качестве номера группы, а TTYPERM - 0620. В противном случае оставьте TTYGROUP закомментированным и присвоьте TTYPERM значение 622 или 600.

  • TTYTYPE_FILE (string) - указание файла, сопоставляющего строку tty параметру среды TERM. Cтроки имеют формат «vt100 tty01».

  • UID_MAX (number), UID_MIN (number) - диапазон идентификаторов пользователей, используемых для создания постоянных пользователей с помощью useradd или newusers. Значение по умолчанию для UID_MIN равно 1000, для UID_MAX - 60000.

  • UMASK (number) - инициализация маски создания режима файла. Если не указано, маска будет инициализирована значением 022. useradd и newusers используют эту маску для установки режима создаваемого ими домашнего каталога, если не задан параметр HOME_MODE. Также используется pam_umask в качестве значения umask по умолчанию.

  • USERDEL_CMD (string) - если данный параметр определен, то он запускается при удалении пользователя. Удаляет все задания at/cron/print и т.д., принадлежащие удаляемому пользователю (передается в качестве первого аргумента).

  • USERGROUPS_ENAB (boolean) - если установлено значение yes, то userdel удалит группу пользователя, если в ней больше нет участников, а useradd создаст по умолчанию группу с именем пользователя.

  • YESCRYPT_COST_FACTOR (number) - когда для ENCRYPT_METHOD установлено значение YESCRYPT, данный параметр определяет коэффициент затрат, используемый алгоритмом шифрования по умолчанию (когда коэффициент затрат не указан в командной строке). Значение должно находиться в диапазоне 1-11. Влияет только на генерацию групповых паролей.

Перекрестные ссылки в таблице ниже показывают соотношение утилит в shadow password suite и используемых ими параметров.

Утилиты

Параметры

chgpasswd

BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS YESCRYPT_COST_FACTOR

chpasswd

BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS YESCRYPT_COST_FACTOR

gpasswd

BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS YESCRYPT_COST_FACTOR

groupadd

GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN

groupdel

MAX_MEMBERS_PER_GROUP

groupmems

MAX_MEMBERS_PER_GROUP

groupmod

MAX_MEMBERS_PER_GROUP

grpck

MAX_MEMBERS_PER_GROUP

grpconv

MAX_MEMBERS_PER_GROUP

grpunconv

MAX_MEMBERS_PER_GROUP

lastlog

LASTLOG_UID_MAX

newgrp / sg

SYSLOG_SG_ENAB

newusers

BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK YESCRYPT_COST_FACTOR

pwck

PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE

pwconv

PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE

useradd

CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK

userdel

MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB

usermod

LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP

Пример записей#

FAIL_DELAY		3
LOG_UNKFAIL_ENAB	no
SYSLOG_SG_ENAB		yes
MAIL_DIR	/var/spool/mail
MAIL_FILE	.mail
HUSHLOGIN_FILE	/etc/hushlogins
ENV_SUPATH	PATH=/sbin:/bin:/usr/sbin:/usr/bin
ENV_PATH	PATH=/bin:/usr/bin
TTYGROUP	tty
TTYPERM		0600
UMASK		022
HOME_MODE	0700
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_WARN_AGE	7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
SUB_UID_MIN		   100000
SUB_UID_MAX		600100000
SUB_UID_COUNT		    65536
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
SUB_GID_MIN		   100000
SUB_GID_MAX		600100000
SUB_GID_COUNT		    65536
LOGIN_RETRIES		3
LOGIN_TIMEOUT		60
CHFN_RESTRICT		rwh
ENCRYPT_METHOD SHA512
SHA_CRYPT_MAX_ROUNDS 5000
DEFAULT_HOME	yes
USERDEL_CMD	/usr/sbin/userdel_local
USERGROUPS_ENAB yes
MAX_MEMBERS_PER_GROUP	0
CREATE_HOME	yes
FORCE_SHADOW    yes
HMAC_CRYPTO_ALGO SHA512