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.
ИСТОЧНИКИ
- Некоторые значения опций взяты из статей Ивана Паскаль и Евгения Миньковского