Login.conf(5)

Материал из wiki.lissyara.su
Перейти к: навигация, поиск

НАЗВАНИЕ

login.conf — база данных описывающая классы пользователей ОС. Если точнее, то это текстовый файл описывающий конфигурацию базы данных /etc/login.conf.db. Для применения изменений в login.conf.db необходимо после правки файла login.conf воспользоваться программой cap_mkdb, например так:
#cap_mkdb /etc/login.conf

РАСПОЛОЖЕНИЕ

/etc/login.conf, ~/.login_conf

ОПИСАНИЕ

login.conf содержит различные атрибуты и возможности для настройки классов пользователей ОС. Класс пользователя (некоторые параметры совпадают с параметрами базы /etc/master.passwd) определяет параметры сессии пользователя, ограничение ресурсов пользователя и параметров окружающей среды. Она используется в различных программах в системе для установки пользовательского окружения, создания правил входа в ОС, соблюдение политики безопасности ОС и административных ограничений. База также предоставляет средства, с помощью которого пользователи могут пройти проверку подлинности в системе и типы аутентификации доступа. Переменные, описанные в ней, (существующие или только что выдуманные) могут использоваться сторонними приложениями.
Специальная запись класса "default" в базе применяется по умолчанию для всех пользователей кроме root если в /etc/master.passwd класс не указан. Пользователи с uid равным 0 без указания конкретного класса в master.passwd будут использовать запись класса "root" если она существует, или "default" если она отсутствует.
Во FreeBSD,пользователи могут индивидуально создавать файл в корне своего домашнего каталога с именем .login_conf, используя тот же формат и содержащий единственный класс "me". Если этот файл существует и используется программой login(1) для изменения параметров окружения среды пользователя, то необходимо помнить, что в нем можно переопределить только те параметры которые не связаны с политикой аутентификации, ограничениями ресурсов (например таких как процессорного времени или количества запускаемых процессов) и политикой безопасности ОС.
Записи классов в базе данных состоят из ряда полей, разделенных двоеточиями. Первая запись задает одно или несколько имен для класса, при этом имена должны быть разделены разделителем вертикальной черты '|'. Первое название часто является наиболее распространенной короткой аббревиатурой класса. Последующие названия могут быть длинными, что дает возможность описать класс более подробно. Первое короткое имя, обязательно должно быть в нижнем регистре и не содержать пробелов. Следующие имена могут содержать пробелы и содержать символы в верхнем регистре.
Заметим, что символ двоеточия `:' используется для разделения записей класса, а последовательность слеша и символа перехода на новую строку `\ C ' может быть использован для создания удобочитаемой колонки из значений класса.
Файл /etc/login.conf и классы по умолчанию создается при установке ОС. В тех случаях, когда происходит изменения в этом, или пользовательском файле ~/.Login_conf, то изменения не вступят в силу до применения программы cap_mkdb(1), которая используется для создания бинарного файла базы данных. Эта база данных будет иметь расширение .db (/etc/login.conf.db). Доступ к нему можно получить, используя cgetent(3). Смотрите документацию по getcap(3) для более углубленного изучения описание формата этой базы данных.

ВОЗМОЖНОСТИ

Значения полей в базе могут быть числовыми (тогда они имеют вид имя#значение) или строчными (имя=значение), хотя числовые значения могут также быть представлены в формате строк. Значения могут принимать следующие категории:
bool
Если присутствует название, булево значение принимает значение истина, в противном случае оно ложно.
file
Путь к файлу с данными.
program
Путь к исполняемому файлу.
list
Список значений (или пары значений) разделенных запятыми или пробелами.
path
Список путей, где перечисляются директории исполняемых файлов, разделенных пробелами (домашняя директория пользователя может быть заменена тильдой '~').
number
Числовое значение может быть представлено в десятичном (по умолчанию), шестнадцатеричном (с 0x) или восьмеричном (с 0) формате. Числовой тип может принимать только одно числовое значение. Числовые типы могут также быть определены в формате строки (например, разделителем между именем и значением может быть как символ '=' так и '#'). Важно использовать только один вид представления числовых значений во всем файле.
size
Число, которое выражает размер. По умолчанию подсчет ведется в байтах, но при необходимости можно дописать префикс, один из:
b блоки по 512 байт
k килобайты (1024 байт)
m мегабайты (1048576 байт),
g гигабайты
t терабайты
Вместе значения суммируются.Например 1t500g тоже самое что и 1500g.
time
Период времени, по умолчанию в секундах. В качестве префикса можно использовать:
y число одно из 365 деней года
w номер недели в году
d число дня в месяце
h число часа
m число минут
s число секунд
Вместе значения суммируются. Например, 2 часа и 40 минут может быть написана как 9600s, 160m или 2h40m.

ОГРАНИЧЕНИЕ РЕСУРСОВ

Ниже перечислены переменные которые могут быть использованы для ограничения ресурсов.
Имя             Тип     Описание
coredumpsize    size    Максимально допустимый размер дампа.
cputime         time    Ограничение загрузки процессора.
datasize        size    Максимальный размер памяти одной программы пользователя.
filesize        size    Максимальный размер файла, который может создать пользователь или процесс пользователя.
maxproc         number  Максимальное число процессов.
memorylocked    size    Максимальный размер памяти, занимаемый процессом пользователя.
memoryuse       size    Максимальная объем использования основной памяти.
openfiles       number  Максимальное количество файловых дескрипторов, которое может открыть приложение. 
sbsize          size    Максимально допустимый размер буфера сокета.
vmemoryuse      size    Максимально объем виртуальной памяти используемый процессом.
stacksize       size    Максимальный размер стека.
Эти опции могут определять максимальные и текущие значения ресурсов. Каждый ресурс можно модифицировать для определения текущего и максимального значения путем добавления в конце названия суффиксов -max (для максимальных значений, например filesize-max) или -cur (для текущих значений, например filesize-cur). Пользователь может изменять значения переменных от текущих до максимальных по своему усмотрению в своем файл ~/.login_conf.

ОКРУЖЕНИЕ

Ниже перечислены переменные описывающие настройки окружения пользователя.
Имя              Тип       По умолчанию     Описание
charset          string                     Опция для установки значения переменной $MM_CHARSET.
hushlogin        bool      false            Логическая переменная, действие которой такое же, как наличие файла ~/.hushlogin.
ignorenologin    bool      false            Игнорировать nologin, тем самым разрешая пользователю входить в систему.
ftp-chroot       bool      false            Ограничить FTP доступ только домашней директорией.
label            string                     Политика MAC по умолчанию (см. maclabel(7)). 
lang             string                     Опция для установки значения переменной $LANG.
manpath          path                       Путь по умолчанию к man-страницам.
nocheckmail      bool      false            Отображать состояние почтового ящика при входе в систему.
nologin          file                       Если этот файл существует то отображается его содержание и процедура входа прерывается.
path             path      /bin /usr/bin    Пути поиска исполняемых файлов.
priority         number                     Начальный приоритет выполнения процессов пользователя.
requirehome      bool      false            Требовать наличие доступного/созданного домашнего каталога пользователя.
setenv           list                       Список переменных окружения пользователя, разделенный запятыми.
shell            prog                       Оболочка shell пользователя. Имеет более высокий приоритет чем значение установленное в master.passwd.
term             string                     По умолчанию тип терминала, если не в состоянии определить, с помощью других средств.
timezone         string                     Опция для установки значения переменной $TZ.
umask            number    022              Начальное значение маски доступа для новых файлов. В шестнадцатиричном формате.
welcome          file      /etc/motd        Файл содержащий сообщение приветствия при входе пользователя.

АУТЕНТИФИКАЦИЯ

Ниже перечислены переменные, влияющие на аутентификацию пользователя в системе.
Имя              Тип     По умолчанию Описание
copyright        file                 Файл, содержащий дополнительную информацию о копирайте.
host.allow       list                 Содержит перечень хостов с которых пользователи могут получить доступ к системе.
host.deny        list                 Содержит перечень хостов с которых пользователи не могут получить доступ к системе.
login_prompt     string               Строка выводимая утилитой login(1) при запросе логина (см. так же passwd_prompt). 
login-backoff    number  3            Количество попыток ввести пароль прежде чем начнет работать программа защиты от вторжений и подбора паролей.
login-retries    number  10           Количество попыток ввести пароль прежде чем логин будет признан неудачным.
passwd_format    string  md5          Формат шифрования пароля в master.passwd. Доступные значения "des", "md5" и "blf".
                                      NIS клиенты использующие не FreeBSD NIS сервера необходимо использовать "des".
passwd_prompt    string               Строка выводимая утилитой login(1) при запросе пароля (см. так же login_prompt).
times.allow      list                 Список временных промежутков, когда допустим вход пользователя в систему. 
times.deny       list                 Список временных промежутков, когда недопустим вход пользователя в систему.
ttys.allow       list                 Список терминалов и групп терминалов, с которых вход пользователя в систему разрешён.
                                      (Группы терминалов задаются в /etc/ttys(5).)
ttys.deny        list                 Список терминалов и групп терминалов, с которых вход пользователя в систему неразрешён.
warnexpire       time                 Срок за который надо предупредить пользователя об истечении срока действия учётной записи. 
warnpassword     time                 Срок за который надо предупредить пользователя об истечении срока действия пароля. 
Перечисленные опции предназначены для использования программой passwd(1) или других программ участвующих в авторизации пользователя в системе.
Возможно, что при наборе переменных окружения символы `~ 'и` $' могут будут заменены на домашний каталог и имя пользователя соответственно. Чтобы использовать эти символы в буквальном смысле необходимо перед ними ставить символ '\'.
Записи host.allow и host.deny содержат разделенные запятыми списки имен хостов и/или IP-адресов для проверки удаленного доступа к системе. Значения в этих списках могут содержать групповые символы (например использование группового символа '*'). Проверка хостов производится по интернет-адресу и имени хоста (если имеется). Если оба списка пусты или не определены, то авторизация с любого удаленного хоста разрешается. Если host.allow содержит один или несколько хостов, то только с удаленных систем, соответствующие любому из пунктов в этом списке пользователи могут войти в систему. Если host.deny содержит один или несколько хостов, то в попытке войти с любого сопоставленного хоста будет отказано. Times.allow и times.deny состоят из записей, разделенных запятыми список и перечисляют периоды времени в течение которого пользователи в одном классе могут быть зарегистрированы. Записи выглядят как перечисление кодов дней недели и промежутка времени с началом и конца действия разрешения в 24-часовом формате, разделенных дефисом или тире. Например, промежуток времени MoThSa0200-1300 переводится как понедельник, четверг и суббота с 2 часа ночи до 1 час дня. Если оба эти списка пусты, пользователю в классе разрешается доступ в любое время. Если times.allow указан, то авторизация пользователя допускаются только в разрешенные время. Если times.deny указан, то авторизация не разрешается в указанное время, независимо от того, это время сопоставляется с одним из разрешенных промежутков времени указанных в times.allow.
Имейте в виду, что программа login(1) обеспечивает лишь авторизацию согласно правилам только в тот момент времени в которое эта авторизация происходит и не контролирует в дальнейшем акаунт пользователя на соответствия политики работы в системе. Для контроля актуальности сессии и соответствия правилам ОС необходимо использовать отдельный демон.
Записи ttys.allow и ttys.deny содержат перечень устройств TTY (без /dev/ префикса) разделенных запятыми, с которых пользователю в класса может использовать для доступа к системе, и/или список ttygroups (См. getttyent(3) и ttys(5) для информации о ttygroups). Если ни одной записи не существует, то авторизация пользователя может быть произведена с любой консоли. Если в ttys.allow указана консоль, то пользователь ограничен только данной консолью или группой консолей. Если сопоставление происодит в списке ttys.deny, то пользователь не имеет возможности использовать указанное устройство или устройства для авторизации. Если оба списки существуют, и не пусты, то пользователь ограничен теми устройствами, которые перечислены в ttys.allow, и которых нет в ttys.deny.
Ограничения minpasswordlen и minpasswordcase для обеспечения соблюдения ограничений в отношении качества пароля, используемые при поддержке login.conf, были заменены PAM модулем pam_passwdqc(8) .

НЕШТАТНЫЕ ОПЦИИ

Следующие возможности зарезервированы для указанных целей, и могут поддерживаться сторонними программами. Они не поддерживаются основной системой.
Имя              Тип     По умолчанию  Описание
accounted        bool    false     Включает режим ограничения акаунта пользователя по времени для всех пользователей класса.
auth             list    passwd    Тип аутентификации по умолчанию для пользователя.
auth-type        list              Список типов аутентификации доступных пользователю.
autodelete       time              Время по истечении которого акаунт автоматически удаляется.
bootfull         bool    false     Включает стратегию «boot only if ttygroup is full> при обрыве сессии. 
daytime          time              Максимальное количество входов в систему в день.
expireperiod     time              Период времени, в течении которого лимит времени считается исчерпаным.
graceexpire      time              Дополнительное время, в течении которого пользователь может войти в систему, даже если его лимит исчерпан.
gracetime        time              Максимальное время, которое пользователь может провести в системе, когда его лимит исчерпан.
host.accounted   list              Список хостов при подключении к системе с которых включается режим ограничения акаунта по времени.
host.exempt      list              Список хостов при подключении к системе с которых не включается режим ограничения акаунта по времени.
idletime         time              Максимальное время бездействие акаунта после которого он отключается от системы.
minpasswordlen   number  6         Минимальная длина пароля.
mixpasswordcase  bool    true      Будет ли passwd(1) предупреждать пользователя, если он ввёл пароль только в нижнем регистре.
monthtime        time              Максимально время проведеное пользователем за работой в системе в месяц.
passwordtime     time              Используется passwd(1) для установки следующего времени истечения срока действия пароля.
refreshtime      time              Полный лимит времени, который дается пользователю при обновлении лимитов.
refreshperiod    str               Период времени после которго лимит времени обновляется (не важно - исчерпал его пользователь или нет).
sessiontime      time              Максимальное время работы пользователя в системе.
sessionlimit     number            Максимальное количество одновременно существующих сессий для всех юзеров из данного класса.
                                   (То есть, если юзеров данного класса, работающих в данный момент в системе, уже достаточно много,
                                   то еще одного просто не пустят, независимо от того есть ли у него неиспользованный лимит времени.)
ttys.accounted   list              Список терминалов при подключении к системе с которых включается режим ограничения акаунта по времени.
ttys.exempt      list              Список терминалов при подключении к системе с которых невключается режим ограничения акаунта по времени.
warntime         time              Время, когда надо предупредить пользователя, что подходит к концу время суток, ктогда он может
                                   входить в систему и работать в ней.
weektime         time              Максимальное (суммарное) время, которое юзер может провести в системе в течении недели.
Опции ttys.accounted и ttys.exempt действуют в том же порядке, который ttys.allow и ttys.deny, как описано выше. Точно так же со списками host.accounted и host.exempt.

ИСТОЧНИКИ

Некоторые значения опций взяты из статей Ивана Паскаль и Евгения Миньковского