F.1. /etc/login.conf в FreeBSD

Таблица F.1. Ограничение ресурсов средствами login.conf(5)

Имя записиТипОписаниеOS
coredumpsizesizeМаксимальный размер файлов coredump
cputimetime Максимальное процессорное время, которое может потребить программа[a].
datasizesizeМаксимальный размер данных.
filesizesizeМаксимальный размер файла.
maxprocnumber Максимальное число процессов, которое может породить пользователь.
memorylockedsize Максимальный размер памяти в core memory, которую может залочить процесс.
memoryusesize Максимальный размер памяти в core memory, которую может использовать процесс.
openfilesnumber Максимальное количество файловых дескрипторов, которое может открыть приложение.
sbsizesizeМаксимально разрешёный размер буфера сокета
vmemoryusesize Максимально разрешённый размер виртуальной памяти
stacksizesizeМаксимальный размер стека
Есть ограничение current (мягкое) и maximum (жёсткое). Перечисленные опции задают сразу и то, и другое, если вы хотите отдельно задать мякое и жёсткое ограничение, используйте суффиксы -cur и -max. (Например cputime-max.) Разница между ними в том, что мягкие ограничения пользователь может переопределить в большую сторону.

[a] Невозможно (и бессмысленно) ограничить программу так, чтобы она потребляла, скажем, не более 30% от CPU. Процессор может быть или занят или не занят, он не может быть занят на треть. То, что вы видите в выволе команды top(1), например, это лишь усреднение за некоторое время. Но можно ограничить CPU-time. Фактически это ограничение на количество тактов, которое выделит шедулер ядра на данный процесс.

Если вы всё же хотите, чтобы программа потребляла меньше ресурсов CPU «в процентах», то вам надо подумать об опции priority (см. Таблица F.2, «Формирование окружения средствами login.conf(5)»).

Таблица F.2. Формирование окружения средствами login.conf(5)

Имя записиТипУмолчаниеОписаниеOS
charsetstring  Установка переменной окружения $MM_CHARSET.
hushloginboolfalse То же, как если бы пользователь имел файл ~/.hushlogin (не выводить /etc/motd при загрузке).
ignorenologinboolfalse Логин не блокируется файлом /etc/nologin
ftp-chrootboolfalse При логине данного пользователя через ftpd(8) осуществлять chroot в его пользовательский каталог. (Речь идёт только о встроенном в BSD демоне, а не установленных из портов proftpd и т.д.)
labelstring  Политика MAC по умолчанию (см. maclabel(7)).
langstring  Значение переменной окружения $LANG.
manpathpath  Где по умолчанию искать man-страницы.
nocheckmailboolfalse Отображать состояние почтового ящика при входе в систему.
nologinfile  Если указанный файл существует, при входен в систему отображается его содержимое и процедура входа прерывается.
pathpath/bin /usr/bin Каталоги, в которых по умолчанию искать исполнимые файлы.
prioritynumber  Начальный приоритет (nice(1)) у задач пользователя.
requirehomeboolfalse Требуется ли пригодный домашний каталог для входа пользователя в систему.
setenvlist  Разделённый запятыми список переменных и их значений, которые должны быть выставлены при входе пользователя в систему. Кавычки из файла login.conf переносятся в переменную как есть. Поэтому вхождение setenv=VAR1=value1,...,PAGER="/usr/bin/less -M",... — это ошибка. Правильно писать: setenv=VAR1=value1,...,PAGER=/usr/bin/less -M,...
shellprogram  Оболочка пользователя. Имеет приоритет перед заданной в master.passwd(5), однако переменная $SHELL выставляется в значение указанное в master.passwd(5).
termstring  Тип терминала, если он не может быть определён другим способом.
timezonestring  Значение переменной окружения $TZ.
umasknumber022 Начальное значение umask (см. Раздел 3.7, «Просмотр и изменение пермиссий с использованием как символьных, так и восьмеричных мод»). Должно всегда начинаться с нуля, для того, чтобы формат воспринимался как всьмеричный.
welcomefile/etc/motd Файл с приветствем.

Таблица F.3. Аутентификационные данные в login.conf(5)

Имя записиТипУмолчаниеОписаниеOS
copyrightfile  Файл, содержащий дополнительную информацию о copyright
host.allowlist  Список шаблонов указывающих на хосты, с которых могут заходить пользователи приналежащие данному классу.
host.denylist  Список шаблонов указывающих на хосты, с которых не могут заходить пользователи приналежащие данному классу.
login_promptstring  Строка выводимая утилитой login(1) при запросе логина (см. так же passwd_prompt).
login-backoffnumber3 Количество попыток логина разрешённых прежде чем начнут вставляться задержки между попытками логина. Величина задержки, равна значению login-backoff умноженной на 5 секунд. (Последняя, загадочная фраза есть только в man(1) в FreeBSD.)
login-retriesnumber10 Количество разрешённых попыток логина, прежде чем логин будет признан неудачным. (OpenBSD —login-tries)
passwd_formatstringmd5 Формат в котором шифруется пароль в master.passwd. Допустимые варианты перечислены в Таблица 2.3, «Возможные значения опций crypt_default (FreeBSD) и localcipher, ypcipher (OpenBSD.
passwd_promptstring  Строка выводимая утилитой login(1) при запросе пароля (см. так же login_prompt).
times.allowlist  Список временных промежутков, когда допустим логин в системе.
times.denylist  Список временных промежутков, когда логин в системе недопустим.
ttys.allowlist  Список терминалов и групп терминалов, с которых логин в системе разрешён. (Группы терминалов задаются в /etc/ttys(5).)
ttys.denylist  Список терминалов и групп терминалов, с которых логин в системе запрещён. (Группы терминалов задаются в /etc/ttys(5).)
warnexpiretime  Срок за который надо предупредить пользователя об истечении срока действия учётной записи.
warnpasswordtime  Срок за который надо предупредить пользователя об истечении срока действия пароля.

Промежутки времени в списках times.allow и times.deny оформляются в 24-х часовом формате, через дефис. Например промежуток MoThSa0200-1300 означает: по понедельникам, четвергам и субботам с двух часов ночи до часу дня.

Группы терминалов для опций ttys.allow и ttys.deny задаются в файле /etc/ttys(5) примерно так:

ttyh1   "/usr/libexec/getty std.9600"   vt100   on group=dialup
ttyp0   none    network         group=pty
ttyp1   none    network off     group=pty
      

Следующие поля в файле login.conf(5) зарезервированы для сторонних разработчиков. В основной системе FreeBSD они не использются, однако могут использоваться программами установленными из портов, кроме того, некоторые из них используются OpenBSD.

Таблица F.4. Зарезервированные поля в login.conf(5) FreeBSD

Имя записиТипУмолчаниеОписаниеOS
accountedboolfalse Включить session time accounting для всех пользователей данного класса
authlistpasswd Допустимые стили аутентификации. Первое вхождение — стиль по умолчанию[a].
auth-typelist  Допустимые стили аутентификации для предыдущей опции(?)
autodeletetime  Время, которое должно пройти после истечения срока действия учётной записи, спустя которое учётная запись будет автоматически удалена.
bootfullboolfalse Включается страгетия «boot only if ttygroup is full> при обрыве сессий.
daytimetime  Максимальное количество логинов в день
expireperiodtime  Time for expiry allocation.
graceexpiretime  Grace период в днях, на истечение срока действия учётной записи [возможно речь идёт о периоде после истечения срока действия учётной записи, когда она всё ещё будет доступна, возможно в каком-то усечённом виде].
gracetimetime  Additional grace login time allowed
host.accountedlist  Список шаблонов определяющих имена хостов при заходе с которых включается session time accounting (см. так же accounted).
host.exemptlist  Список шаблонов определяющих имена хостов при заходе с которых пользователь освобождён от session time accounting (см. так же accounted).
idletimetime  Максимальное время бездействия, спустя которое пользователь будет разлогинен.
minpasswordlennumber6 Минимальная длина локального пароля.
mixpasswordcasebooltrue Будет ли passwd(1) предупреждать пользователя, если он ввёл пароль только в нижнем регистре.
monthtimetime  Максимально время логина в месяц.
passwordtimetime  Используется passwd(1) для установки следующего времени истечения срока действия пароля.
refreshtimetime  New time allowed on account refresh
refreshperiodstring(?)  Как часто account time is refreshed
sessiontimetime  Максимальная длительность логина.
sessionlimitnumber  Максимальное число открытых сессий.
ttys.accountedlist  Список терминалов или групп терминалов при заходе с которых включается session time accounting (см. так же accounted).
ttys.exemptlist  Список терминалов или групп терминалов при заходе с которых пользователь освобождён от session time accounting (см. так же accounted).
warntimetime  Срок за который предупреждают об истечении времени.
weektimetime  Максимальное количество логинов в неделю.
[a] Раздел F.2, «/etc/login.conf в OpenBSD»