13.7 用户分级与资源配额(login.conf)
/etc/login.conf 概述
/etc/login.conf 概述/etc/login.conf 是登录类能力数据库(最早引入自 FreeBSD 2.1.5),该文件控制着资源配额、计量配额和默认用户环境设置。系统中的各种程序利用它来建立用户的登录环境,并执行策略、计数和管理限制。它还提供了用户认证系统及可用认证类型的方式。
对于普通用户路径则为 ~/.login_conf。记录 ID 为 “me”,只能覆盖部分该用户的用户分级。
login.conf 在 src 源代码中的位置是 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-byte\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),手册页
最后更新于
这有帮助吗?