13.7 用户分级与资源配额(login.conf)
/etc/login.conf 概述
/etc/login.conf 概述/etc/login.conf 是登录类能力数据库(最早引入自 FreeBSD 2.1.5),该文件用于控制资源配额、计量配额以及默认用户环境设置。系统中的各种程序利用它建立用户的登录环境,并执行策略、计数和管理限制。它还提供了用户认证以及可用认证类型的配置方式。
对于普通用户,其路径为 ~/.login_conf。记录 ID 为“me”的条目只能覆盖该用户部分的用户分级配置。
login.conf 在 FreeBSD 源代码中的位置为 usr.bin/login/login.conf,该文件即默认配置,默认设置实际上禁用了资源配额,以便用户开箱即用并便于进一步配置。
注意
每次修改该文件后,必须手动运行
cap_mkdb /etc/login.conf来刷新数据库。只有在将文件编译为数据库后,修改才会生效。该数据库文件的扩展名为.db,可以通过 cgetent(3) 调用。
默认配置文件释读
# 请注意,像 "cputime" 这样的条目会同时设置 "cputime-cur" 和 "cputime-max"。
# "default" 登录类会自动(由 login(1) 实现)应用于所有在 `/etc/master.passwd` 中未设置有效登录类的非 root 用户。
# 请注意,由于冒号 ':' 用于分隔能力条目,因此在能力的值或名称中嵌入字面冒号时必须使用 `\c` 转义序列(有关更多转义序列,请参见 getcap(3) 的 “CGETNUM AND CGETSTR SYNTAX AND SEMANTICS” 部分)。
# UID 为 0 的用户(root)如果没有有效登录类,则使用 root 记录(若有),否则使用 default。
# default 登录类
default:\
:passwd_format=sha512:\ # 新建或更改密码将使用的加密格式。类型为字符串。有效值为 `"des"`、`"md5"`、`"blf"`、`"sha256"` 和 `"sha512"`;详细信息请参见 `crypt(3)`。使用非 FreeBSD NIS 服务器的 NIS 客户端通常应使用 `"des"`。
:copyright=/etc/COPYRIGHT:\ # 区分操作系统版权信息与在每次用户登录时额外显示的信息。实际上不存在该文件。cp /COPYRIGHT /etc/。实际上不生效
:welcome=/var/run/motd:\ # 登录后会看到的信息
:setenv=BLOCKSIZE=K:\ # 由逗号分隔的环境变量及其对应值的列表。包含逗号的值必须加引号。`BLOCKSIZE=K` 即让命令以 KB 大小格式显示
:mail=/var/mail/$:\ # 将环境变量 `$MAIL` 设置为指定的值。
:path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:\ # 默认的 PATH 环境变量路径,会在其中查找可执行文件
:nologin=/var/run/nologin:\ # 若该文件存在,将打印该文件到屏幕上,并且对应用户的登录会话将被终止。
:cputime=unlimited:\ # 限制进程可使用的 CPU 时间量。类型为时间,默认单位为秒。时间值可以使用不同单位表示:`y` 表示年(365 天)、`w` 表示周、`d` 表示天、`h` 表示小时、`m` 表示分钟、`s` 表示秒。单位可以连写,其值会累加。例如,2 小时 40 分钟可以写作 9600s、160m 或 2h40m。
:datasize=unlimited:\ # 限制数据段(属于静态内存分配)的最大大小。类型为数值,默认单位为字节。常用单位包括 b、k、m、g、t,分别表示 512 字节、KB、MB、GB 和 TB,大小写不敏感。多个值可以连写,其数值会累加。例如 2g512M 表示总大小为 2.5GB。
:stacksize=unlimited:\ # 最大栈大小限制。类型为数值。
:memorylocked=64K:\ # 最大核心锁定内存大小限制。类型为数值。
:memoryuse=unlimited:\ # 最大核心内存使用量限制。类型为数值。
:filesize=unlimited:\ # 限制进程可以创建的文件的最大大小。类型为数值。
:coredumpsize=unlimited:\ # 最大 coredump 大小限制。类型为数值。
:openfiles=unlimited:\ # 限制每个进程允许打开的最大文件数。类型为数字。数字类型可以是十六进制(`0x` 开头)或八进制(`0` 开头),每次只能指定一个值,也可以用字符串格式。数据库中所有记录必须统一使用同一表示方法。
:maxproc=unlimited:\ # 限制最大进程数。类型为数字。
:sbsize=unlimited:\ # 最大的套接字缓冲区大小。类型为数值。
:vmemoryuse=unlimited:\ # 每个进程允许的最大虚拟内存使用量。类型为数值。
:swapuse=unlimited:\ # 最大交换空间大小限制。类型为数值。
:pseudoterminals=unlimited:\ # 最大伪终端数量。类型为数字。
:kqueues=unlimited:\ # 每个进程可创建的 kqueue 数量。类型为数字。
:umtxp=unlimited:\ # 最大进程间共享的 pthread 锁数量。类型为数字。
:pipebuf=unlimited:\ # 管道缓冲区的最大大小。类型为数字。
:priority=0:\ # 初始进程优先级等级。类型为数字。用于设置进程的初始优先级:既可使用普通 nice 范围(-20 到 20),也可映射到实时或空闲优先级;若设置特殊值 “inherit” 表示继承原有优先级,不进行重置。0 代表正常优先级。
:umask=022:\ # 设置初始 umask。类型为数字,应以 0 开头以确保按八进制识别。特殊值 "inherit" 表示保持原有 umask 不变。022 表示文件默认权限为 644,目录默认权限为 755。
:charset=UTF-8:\ # 指定环境变量 `$MM_CHARSET`(邮件相关程序会使用)的值。类型为字符串。
:lang=C.UTF-8: # 指定环境变量 `$LANG` 的值。类型为字符串。一般修改此处可实现整个操作系统的全局 i18n。
#
# 一组常见的类别名称——将它们全部转发到 'default'(login 通常也会这么做,但在这里有类别名称会抑制诊断信息)。
#
standard:\
:tc=default:
xuser:\
:tc=default:
staff:\
:tc=default:
# 该 PATH 可能会被各个应用程序覆盖。特别是在默认情况下,rc(8)、service(8) 和 cron(8) 在启动服务或任务时会使用默认 PATH,而该 PATH 可能不包含 /usr/local/sbin 和 /usr/local/bin。
daemon:\
:path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin:\
:mail@:\
:memorylocked=128M:\
:tc=default:
news:\
:tc=default:
dialer:\
:tc=default:
#
# 让 Root 始终可以登录。
#
# 注意,对于 root 账户,login_getpwclass(3)(仅限该软件,不是全局设置)会应用此条目,而不是 'default' 中的参数。
root:\
:ignorenologin:\ # 防止误操作,避免因 nologin 设置而阻止 root 登录
:memorylocked=unlimited:\ # 防止误操作,避免内存配额限制导致 root 无法分配内存
:tc=default: # 继承或复用另一个登录类(此处是 default)的属性和能力,避免重复定义。如果子类中有与父类同名的能力条目,则子类中的值会覆盖父类的值。
#
# 为俄罗斯用户账户配置正确的环境变量
#
# russian 登录类。可使用命令 `pw usermod XXX -L russian` 指定用户 XXX 使用该登录类。
#
russian|Russian Users Accounts:\
:charset=UTF-8:\
:lang=ru_RU.UTF-8:\
:tc=default: # 继承或复用另一个登录类(此处是 default)的属性和能力,避免重复定义。如果子类中有与父类同名的能力条目,则子类中的值会覆盖父类的值。
######################################################################
######################################################################
##
## 示例条目
##
######################################################################
######################################################################
## 示例默认值
## 这些设置默认由 login(1) 分配给无类别用户。请注意,像 "cputime" 这样的条目会同时设置 "cputime-cur" 和 "cputime-max"。
#
#default:\
# :cputime=infinity:\
# :datasize-cur=22M:\
# :stacksize-cur=8M:\
# :memorylocked-cur=10M:\
# :memoryuse-cur=30M:\
# :filesize=infinity:\
# :coredumpsize=infinity:\
# :maxproc-cur=64:\
# :openfiles-cur=64:\
# :priority=0:\
# :requirehome@:\
# :umask=022:\
# :tc=auth-defaults:
#
#
##
## standard - 标准用户默认值
##
#standard:\
# :copyright=/etc/COPYRIGHT:\
# :welcome=/var/run/motd:\
# :setenv=BLOCKSIZE=K:\
# :mail=/var/mail/$:\
# :path=~/bin /bin /usr/bin /usr/local/bin:\
# :manpath=/usr/share/man /usr/local/man:\
# :nologin=/var/run/nologin:\
# :cputime=1h30m:\
# :datasize=8M:\
# :vmemoryuse=100M:\
# :stacksize=2M:\
# :memorylocked=4M:\
# :memoryuse=8M:\
# :filesize=8M:\
# :coredumpsize=8M:\
# :openfiles=24:\
# :maxproc=32:\
# :priority=0:\
# :requirehome:\
# :passwordtime=90d:\
# :umask=002:\
# :tc=default:
#
#
##
## X 用户(需要更多资源!)
##
#xuser:\
# :manpath=/usr/share/man /usr/local/man:\
# :cputime=4h:\
# :datasize=12M:\
# :vmemoryuse=infinity:\
# :stacksize=4M:\
# :filesize=8M:\
# :memoryuse=16M:\
# :openfiles=32:\
# :maxproc=48:\
# :tc=standard:
#
#
##
## Staff(工作人员)用户——限制少,可随时登录
##
#staff:\
# :ignorenologin:\
# :requirehome@:\
# :accounted@:\
# :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
# :umask=022:\
# :tc=standard:
#
#
##
## root - root 登录的备选方案
##
#root:\
# :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
# :cputime=infinity:\
# :datasize=infinity:\
# :stacksize=infinity:\
# :memorylocked=infinity:\
# :memoryuse=infinity:\
# :filesize=infinity:\
# :coredumpsize=infinity:\
# :openfiles=infinity:\
# :maxproc=infinity:\
# :memoryuse-cur=32M:\
# :maxproc-cur=64:\
# :openfiles-cur=1024:\
# :priority=0:\
# :requirehome@:\
# :umask=022:\
# :tc=auth-root-defaults:
#
#
##
## /etc/rc 使用的设置
##
#daemon:\
# :coredumpsize@:\
# :coredumpsize-cur=0:\
# :datasize=infinity:\
# :datasize-cur@:\
# :maxproc=512:\
# :maxproc-cur@:\
# :memoryuse-cur=64M:\
# :memorylocked-cur=64M:\
# :openfiles=1024:\
# :openfiles-cur@:\
# :stacksize=16M:\
# :stacksize-cur@:\
# :tc=default:
#
#
##
## news 子系统使用的设置
##
#news:\
# :path=/usr/local/news/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
# :cputime=infinity:\
# :filesize=128M:\
# :datasize-cur=64M:\
# :stacksize-cur=32M:\
# :coredumpsize-cur=0:\
# :maxmemorysize-cur=128M:\
# :memorylocked=32M:\
# :maxproc=128:\
# :openfiles=256:\
# :tc=default:
#
#
##
## dialer 类应当用于拨号 PPP 账号
## 欢迎信息/新闻已被屏蔽
##
#dialer:\
# :hushlogin:\
# :requirehome@:\
# :cputime=unlimited:\
# :filesize=2M:\
# :datasize=2M:\
# :stacksize=4M:\
# :coredumpsize=0:\
# :memoryuse=4M:\
# :memorylocked=1M:\
# :maxproc=16:\
# :openfiles=32:\
# :tc=standard:
#
#
##
## dialer 类,应当用于拨号 PPP 账号
## 欢迎信息/新闻已被屏蔽
##
#site:\
# :passwordtime@:\
# :refreshtime@:\
# :refreshperiod@:\
# :sessionlimit@:\
# :autodelete@:\
# :expireperiod@:\
# :graceexpire@:\
# :gracetime@:\
# :warnexpire@:\
# :warnpassword@:\
# :idletime@:\
# :sessiontime@:\
# :daytime@:\
# :weektime@:\
# :monthtime@:\
# :warntime@:\
# :accounted@:\
# :tc=dialer:\
# :tc=staff:
#
#
##
## 订阅等级的标准会计分录示例
##
#
#subscriber|Subscribers:\
# :accounted:\
# :refreshtime=180d:\
# :refreshperiod@:\
# :sessionlimit@:\
# :autodelete=30d:\
# :expireperiod=180d:\
# :graceexpire=7d:\
# :gracetime=10m:\
# :warnexpire=7d:\
# :warnpassword=7d:\
# :idletime=30m:\
# :sessiontime=4h:\
# :daytime=6h:\
# :weektime=40h:\
# :monthtime=120h:\
# :warntime=4h:\
# :tc=standard:
#
#
##
## 订阅账号。这些账号的登录时间会被记录,并且会施加访问限制。
##
#subppp|PPP Subscriber Accounts:\
# :tc=dialer:\
# :tc=subscriber:
#
#
#subshell|Shell Subscriber Accounts:\
# :tc=subscriber:
#
##
## 如果你希望部分账号使用传统的 UNIX DES 加密密码哈希。
##
#des_users:\
# :passwd_format=des:\
# :tc=default:参考文献
login.conf(5),手册页
最后更新于