login.defs(5)

НАЗВАНИЕ
login.defs - содержит конфигурацию подсистемы теневых паролей

ОПИСАНИЕ

Файл /etc/login.defs содержит настройки подсистемы теневых паролей (shadow password suite). Этот файл является обязательным. Отсутствие данного файла не повлияет на работу системы, но, вероятно, приведёт к выполнению нежелаемых операций.

Файл представляет собой обычный текстовый файл; каждая строка описывает один параметр настройки. Строки состоят из названия параметра и его значения, которые разделяются пробельным символом. Пустые строки и комментарии игнорируются. Комментарии начинаются со знака фунта «#», который должен быть первым непробельным символом в строке.

Значения параметров могут быть четырёх типов: строки, логические значения, числа и длинные числа. Строки состоят из любых печатных символов. Под логическими значениями подразумеваются yes или no. Неопределённый логический параметр или имеющий значение, отличное от указанных выше, считается как имеющий значение no. Числа (обычные и длинные) можно задавать в десятичной, восьмеричной (перед значением ставится «0») или шестнадцатеричной (перед значением ставится «0x») системах счисления. Максимальные значения параметра обычного и длинного числа зависят от архитектуры компьютера.

Возможны следующие параметры настройки:

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

CONSOLE_GROUPS (строка)
    Список групп для добавления к набору пользовательских дополнительных групп при входе с консоли (определяемой переменной CONSOLE). По умолчанию не указана. Используйте осторожно — может дать пользователям постоянный доступ к этим группам, даже если они не входили с консоли.

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

    Эта переменная не влияет на системных пользователей и может быть переопределена из командной строки.

DEFAULT_HOME (логический)
    Определяет, можно ли войти в систему, если нельзя выполнить cd в домашний каталог. По умолчанию «no».

    Если равно yes, то пользователь будет попадать в корневой каталог (/), если невозможно выполнить cd в его домашний каталог.

ENCRYPT_METHOD (строка)
    Задаёт системный алгоритм шифрования по умолчанию для шифрования паролей (используется, если алгоритм не указан в командной строке).

    Возможны следующие значения: DES (по умолчанию), MD5, SHA256, SHA512.

    Замечание: этот параметр переопределяет переменную MD5_CRYPT_ENAB.

    Замечание: действует только при генерации паролей к группам. Генерация пользовательских паролей выполняется PAM и там же настраивается. Рекомендуется устанавливать значение этой переменной согласно настройкам PAM.

ENV_HZ (строка)
    Если установлена, то будет использоваться для определения переменной окружения HZ при входе пользователя в систему. Значение должно начинаться с HZ=. Обычное значение для Linux — HZ=100.

    Переменная окружения HZ устанавливается только когда пользователь (суперпользователь) входит в систему с помощью sulogin.

ENV_PATH (строка)
    If set, it will be used to define the PATH environment variable when a regular user login. The value is a colon separated list of paths (for example /bin:/usr/bin) and can be preceded by PATH=. The default value is PATH=/bin:/usr/bin.

ENV_SUPATH (строка)
    If set, it will be used to define the PATH environment variable when the superuser login. The value is a colon separated list of paths (for example /sbin:/bin:/usr/sbin:/usr/bin) and can be preceded by PATH=. The default value is PATH=/sbin:/bin:/usr/sbin:/usr/bin.

ERASECHAR (число)
    Символ ERASE у терминала (010 = backspace, 0177 = DEL).

    Значение может начинаться с «0» при указании значения в восьмеричной системе счисления или «0x» при указании значения в шестнадцатеричной системе счисления.

FAIL_DELAY (число)
    Задержка в секундах перед повторной попыткой после неудачного входа.

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

GID_MAX (число), GID_MIN (число)
    Диапазон идентификаторов групп, используемый в программах useradd, groupadd или newusers для создания обычных групп.

    Значение по умолчанию для GID_MIN (соотв. GID_MAX) равно 1000 (соотв. 60000).

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

KILLCHAR (число)
    Символ KILL у терминала (025 = CTRL/U).

    Значение может начинаться с «0» при указании значения в восьмеричной системе счисления или «0x» при указании значения в шестнадцатеричной системе счисления.

LOG_OK_LOGINS (логический)
    Включить протоколирование успешных входов.

LOG_UNKFAIL_ENAB (логический)
    Включить показ неизвестных имён пользователей при записи неудачных попыток входа.

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

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

    Наиболее вероятно это значение будет переопределено PAM, так как по умолчанию в модуле pam_unix определено 3 попытки. Однако, это значение является резервом, если вы используете модуль аутентификации, который не учитывает PAM_MAXTRIES.

LOGIN_TIMEOUT (число)
    Максимальное время в секундах, отведённое на вход.

MAIL_DIR (строка)
    Почтовый каталог. Данный параметр нужен для управления почтовым ящиком при изменении или удалении учётной записи пользователя. Если параметр не задан, то используется значение указанное при сборке.

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

Переменные MAIL_DIR и MAIL_FILE используются командами useradd, usermod и userdel для создания, перемещения или удаления почты пользователя.

MAX_MEMBERS_PER_GROUP (число)
    Максимальное количество членов в записи о группе. При достижения максимума заводится новая запись группы (строка) в /etc/group (с тем же именем, паролем и тем же GID).

    Значение по умолчанию равно 0, означающее, что ограничения на количество членов в группе нет.

    Данная возможность (разделение группы) позволяет ограничить длину строк в файле групп. Это полезно для ограничения длины строк групп NIS в 1024 символа.

    Если вам нужно такое ограничение, укажите значение 25.

    Замечание: разделение групп поддерживается не всеми инструментами (даже в наборе инструментов Shadow). Вы не должны использовать эту переменную, если вам действительно это ненужно.

MD5_CRYPT_ENAB (логический)
    Обозначает, что пароль должен быть зашифрован по алгоритму на основе MD5. Если значение равно yes, то новые пароли будут зашифрованы по алгоритму на основе MD5, совместимому с используемым в новых версиях FreeBSD. Он поддерживает пароли неограниченной длины и имеет более длинную строку соли. Установите в no, если вам нужно копировать шифрованные пароли в другие системы, которые не поддерживают новый алгоритм. По умолчанию no.

    Эта переменная переопределяется переменной ENCRYPT_METHOD или любым параметром командной строки, который задаёт алгоритм шифрования.

    Эта переменная устарела; используйте ENCRYPT_METHOD.

    Замечание: действует только при генерации паролей к группам. Генерация пользовательских паролей выполняется PAM и там же настраивается. Рекомендуется устанавливать значение этой переменной согласно настройкам PAM.

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

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

PASS_WARN_AGE (число)
    Число дней за которое начнёт выдаваться предупреждение об устаревании пароля. Нулевое значение означает, что предупреждение выдаётся в день устаревания, при отрицательном значении предупреждение выдаваться не будет. Если значение не задано, выдача предупреждения отключается.

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

SHA_CRYPT_MIN_ROUNDS (число), SHA_CRYPT_MAX_ROUNDS (число)
    Если значение ENCRYPT_METHOD равно SHA256 или SHA512, эта переменная определяет количество раундов SHA, используемых алгоритмом шифрования по умолчанию (если количество раундов не задано в командной строке).

    Увеличение количества раундов повышает сложность подбора пароля простым перебором. Но заметим, что при этом для аутентификации пользователей требуется большее количество процессорных ресурсов.

    Если не задана, то libc выбирает значение количества раундов по умолчанию (5000).

    Значения должны лежать в диапазоне 1000-999999999.

    Если задано какое-то одно значение — SHA_CRYPT_MIN_ROUNDS или SHA_CRYPT_MAX_ROUNDS — то будет использовано это значение.

    Если SHA_CRYPT_MIN_ROUNDS > SHA_CRYPT_MAX_ROUNDS, то используется большее значение.

    Замечание: действует только при генерации паролей к группам. Генерация пользовательских паролей выполняется PAM и там же настраивается. Рекомендуется устанавливать значение этой переменной согласно настройкам PAM.

SULOG_FILE (строка)
    Если определена, то любая активность su будет протоколироваться в этот файл.

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

SUB_GID_MIN (number), SUB_GID_MAX (number), SUB_GID_COUNT (number)
    If /etc/subuid exists, the commands useradd and newusers (unless the user already have subordinate group IDs) allocate SUB_GID_COUNT unused group IDs from the range SUB_GID_MIN to SUB_GID_MAX for each new user.

    The default values for SUB_GID_MIN, SUB_GID_MAX, SUB_GID_COUNT are respectively 100000, 600100000 and 10000.

SUB_UID_MIN (number), SUB_UID_MAX (number), SUB_UID_COUNT (number)
    If /etc/subuid exists, the commands useradd and newusers (unless the user already have subordinate user IDs) allocate SUB_UID_COUNT unused user IDs from the range SUB_UID_MIN to SUB_UID_MAX for each new user.

    The default values for SUB_UID_MIN, SUB_UID_MAX, SUB_UID_COUNT are respectively 100000, 600100000 and 10000.

SYS_GID_MAX (число), SYS_GID_MIN (число)
    Диапазон идентификаторов групп, используемый в программах useradd, groupadd или newusers для создания системных групп.

    Значение по умолчанию для SYS_GID_MIN (соотв.SYS_GID_MAX) равно 101 (соотв. GID_MIN-1).

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

    Значение по умолчанию для SYS_UID_MIN (соотв. SYS_UID_MAX) равно 101 (соотв. UID_MIN-1).

SYSLOG_SG_ENAB (логический)
    Включить протоколирование «syslog» действий sg.

SYSLOG_SU_ENAB (логический)
    Включить протоколирование «syslog» действий su — дополнительно к протоколированию в файле sulog.

TTYGROUP (строка), TTYPERM (строка)
    Права терминала: tty входа будет принадлежать группе TTYGROUP, а права будут назначены в соответствии с TTYPERM.

    По умолчанию, терминалом владеет первичная группа пользователя, а права устанавливаются в 0600.

    В TTYGROUP может задаваться или имя группы, или числовой идентификатор группы.

    Если ваша программа write имеет «setgid» со специальной группой, которой принадлежат терминалы, то присвойте TTYGROUP номер этой группы, а TTYPERM значение 0620. В противном случае оставьте TTYGROUP закомментированной и назначьте TTYPERM значение 622 или 600.

TTYTYPE_FILE (строка)
    Если определена, то в ней указывается имя файла, в котором описано соответствие между линией tty и параметром окружения TERM. Каждая строка файла имеет формат вида «vt100 tty01».

UID_MAX (число), UID_MIN (число)
    Диапазон идентификаторов пользователей, используемый в программах useradd или newusers для создания обычных пользователей.

    Значение по умолчанию для UID_MIN (соотв. UID_MAX) равно 1000 (соотв. 60000).

UMASK (число)
    Задаёт начальное значение маски доступа для создаваемых файлов. Если не указано, то маска устанавливается в 022.

    Команды useradd и newusers используют эту маску для установки прав доступа к домашнему каталогу, который они создают.

    Она также используется командой pam_umask как значение umask по умолчанию.

USERDEL_CMD (строка)
    Определяет программу, которая будет запущена при удалении пользователя. Она должна удалять любые задания at/cron/печати удаляемого пользователя (передаётся в качестве первого аргумента).

    Возвращаемый сценарием код завершения не учитывается.

    Вот простой сценарий, который удаляет задания печати, cron и at:

        #! /bin/sh
        # проверить все необходимые параметры
        if [ $# != 1 ]; then
        	echo "Использование: $0 имя_пользователя"
        	exit 1
        fi
        # удалить задания cron
        crontab -r -u $1
        # удалить задания at
        # Заметим, что это удалит все задания с указанным UID,
        # даже если он используется для другой учётной записи.
        AT_SPOOL_DIR=/var/spool/cron/atjobs
        find $AT_SPOOL_DIR -name "[^.]*" -type f -user $1 -delete \;
        # удалить задания печати
        lprm $1
        # всё
        exit 0

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

ПЕРЕКРЁСТНЫЕ ССЫЛКИ

Следующие перекрёстные ссылки отражают связь между программами и их параметрам из набора для работы с теневыми паролями.

chfn
    CHFN_RESTRICT

chgpasswd
    ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS

chpasswd
    SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS

gpasswd
    ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS

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

login
    CONSOLE_GROUPS DEFAULT_HOME ERASECHAR FAIL_DELAY FAKE_SHELL HUSHLOGIN_FILE KILLCHAR LOGIN_RETRIES LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB TTYGROUP TTYPERM TTYTYPE_FILE USERGROUPS_ENAB

newgrp / sg
    SYSLOG_SG_ENAB

newusers
    ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB 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

pwck
    PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE

pwconv
    PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE

su
    CONSOLE_GROUPS DEFAULT_HOME ENV_PATH ENV_SUPATH SULOG_FILE SU_NAME SYSLOG_SU_ENAB

sulogin
    ENV_HZ

useradd
    CREATE_HOME GID_MAX GID_MIN 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
    MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP

ОШИБКИ РЕАЛИЗАЦИИ

Большинство функций теневых паролей теперь реализовано через PAM. Поэтому, файл /etc/login.defs больше не используется программами login(1), passwd(1) и su(1). Настройку данных программ следует выполнять в соответствующих файлах настройки PAM.

СМОТРИТЕ ТАКЖЕ

login(1), passwd(1), su(1), passwd(5), shadow(5), pam(8).