login.defs(5)

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

ОПИСАНИЕ

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

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

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

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

CHFN_AUTH (логический)
    Если равно yes, chfn

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

CHSH_AUTH (логический)
    Если равно yes, то программа chsh будет проводить аутентификацию перед тем как выполнить любые изменения, в случае если команда не запущены суперпользователем.

CONSOLE (строка)
    Если определена, то значение равно или полному пути к файлу с именами устройств (одно на строку), или списку имён устройств, перечисленных через «:». Вход суперпользователя будет разрешён только с этих устройств.

    Если не определена, то суперпользователь может входить в систему с любого устройства.

    Устройства должны указываться без начального префикса /dev/.

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

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

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

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

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

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

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

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

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

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.

ENV_TZ (строка)
    Если установлена, то будет использоваться для определения переменной окружения TZ при входе пользователя. Значение может быть равно имени часового пояса, начинающегося TZ= (например, TZ=CST6CDT), или полному пути к файлу с параметрами часового пояса (например, /etc/tzname).

    Если указан полный путь, но файл не существует или недоступен для чтения, то используется значение по умолчанию: TZ=CST6CDT.

ENVIRON_FILE (строка)
    Если этот файл существует и доступ для чтения, то из него читает регистрационное окружение. Каждая строка должна иметь формат: имя=значение.

    Строки, начинающиеся с #, считаются комментарием и игнорируются.

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

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

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

FAILLOG_ENAB (логический)
    Включить протоколирование и показ информации о неудачных входах из /var/log/faillog.

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

FTMP_FILE (строка)
    Если определена, то неудачные попытки входа будут протоколироваться в этот файл в формате utmp.

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

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

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

ISSUE_FILE (строка)
    Если определена, то этот файл будет показан перед каждым появлением приглашения на вход.

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

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

LASTLOG_ENAB (логический)
    Включить протоколирование и показ информации о времени входа из /var/log/lastlog.

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

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

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

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

LOGIN_STRING (строка)
    Строка-приглашение к вводу пароля. Значение по умолчанию: «Password:» или перевод этой строки на разные языки. Если вы измените эту переменную, то перевод будет отсутствовать.

    Если в строке содержится подстрока %s, то она будет заменена на имя пользователя.

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

MAIL_CHECK_ENAB (логический)
    Включает проверку и показ состояния почтового ящика при входе.

    Вы должны выключить это, если почтовый ящик проверяется из файлов автозапуска оболочки («mailx -e» или похожей командой).

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

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

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

Если значение MAIL_CHECK_ENAB равно yes, то они также используются для определения переменной окружения MAIL.

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.

MOTD_FILE (строка)
    Если определена, то при входе будет показано «сообщение дня» из файла со списком значений, разделённых «:».

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

OBSCURE_CHECKS_ENAB (логический)
    Включает дополнительные проверки при смене пароля.

PASS_ALWAYS_WARN (логический)
    Предупреждать о слабых паролях (но разрешать их использовать) для суперпользователя.

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

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

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

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

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

PASS_MAX_LEN (число), PASS_MIN_LEN (число)
    Количество значимых символов в пароле для crypt(). По умолчанию значение PASS_MAX_LEN равно 8. Не изменяйте, если ваш crypt() лучше. Игнорируется, если значение MD5_CRYPT_ENAB равно yes.

PORTTIME_CHECKS_ENAB (логический)
    Включить проверку временных ограничений, заданных в /etc/porttime.

QUOTAS_ENAB (логический)
    Включает установку ограничений ресурсов из /etc/limits и ulimit, umask и niceness из поля gecos файла passwd.

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, то используется большее значение.

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

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

SU_WHEEL_ONLY (логический)
    Если равна yes, то пользователь должен быть членом первой группы с gid 0 в файле /etc/group (в большинстве систем Linux называется root), чтобы иметь возможность запускать su для получения uid 0. Если группа не существует, или пуста, то никто не сможет получить uid 0 с помощью su.

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).

ULIMIT (число)
    Значение ulimit по умолчанию.

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

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

    Также она используется программой login для задания начального значения umask пользователя. Заметим, что эта маска может быть переопределена из пользовательской строки GECOS (если установлена переменная QUOTAS_ENAB) или указанием ограничения с идентификатором K, в limits(5).

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 (логический)
    Включает установку группы битов umask равной битам владельца (пример: 022 -> 002, 077 -> 007) для не суперпользователей, если uid равен gid и имя пользователя совпадает с именем первичной группы.

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

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

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

chfn
    CHFN_AUTH CHFN_RESTRICT LOGIN_STRING

chgpasswd
    ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS

chpasswd
    ENCRYPT_METHOD MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS

chsh
    CHSH_AUTH LOGIN_STRING

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 CONSOLE_GROUPS DEFAULT_HOME ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE ERASECHAR FAIL_DELAY FAILLOG_ENAB FAKE_SHELL FTMP_FILE HUSHLOGIN_FILE ISSUE_FILE KILLCHAR LASTLOG_ENAB LOGIN_RETRIES LOGIN_STRING LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB QUOTAS_ENAB TTYGROUP TTYPERM TTYTYPE_FILE ULIMIT UMASK 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 SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK

passwd
    ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS

pwck
    PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE

pwconv
    PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE

su
    CONSOLE CONSOLE_GROUPS DEFAULT_HOME ENV_HZ ENVIRON_FILE ENV_PATH ENV_SUPATH ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB SULOG_FILE SU_NAME SU_WHEEL_ONLY SYSLOG_SU_ENAB USERGROUPS_ENAB

sulogin
    ENV_HZ ENV_TZ

useradd
    CREATE_HOME GID_MAX GID_MIN MAIL_DIR MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE 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

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

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