6.15. pam_limits-限制资源
pam_limits.so
[conf = * +2+
*] [调试] [set_all] [utmp_early] [noaudit]
6.15.1. DESCRIPTION
pam_limits PAM 模块对可以在用户会话中获得的系统资源设置限制。 * uid = 0 *的用户也受此限制的影响。
默认情况下,限制来自/etc/security/limits.conf
配置文件。然后读取/etc/security/limits.d/
目录中的各个* .conf 文件。文件按照“ C”区域设置的 Sequences 一个接一个地解析。各个文件的效果与按解析 Sequences 将所有文件串联在一起的效果相同。如果使用模块选项明确指定了配置文件,则不会解析上述目录中的文件。
该模块不得由多线程应用程序调用。
如果 Linux PAM 是在审计支持下编译的,则模块将根据并发登录会话的最大数量限制来报告何时拒绝访问。
6.15.2. DESCRIPTION
- pam_limits.so *模块将 ulimit 限制,良好的优先级和同时登录会话数限制应用于用户登录会话。此配置文件语法的描述适用于
/etc/security/limits.d
目录中的/etc/security/limits.conf
文件和*.conf
文件。
这些行的语法如下:
<domain>
<type>
<item>
<value>
上面列出的字段应填写如下:
-
<domain>
-
- a username
-
-
使用* @ group *语法的组名。这不应与网络组混淆。
-
通配符***,用于默认 Importing。
-
通配符*%(仅用于 maxlogins 限制)也可以与%group 语法一起使用。如果单独使用%通配符,则与使用具有 maxsyslogins 限制的**相同。对于在*%*之后指定的组,它限制了该组成员中所有用户的登录总数。
-
指定为*
<min_uid>
* : *<max_uid>
*的 uid 范围。如果省略 min_uid,则匹配与 max_uid 完全匹配。如果省略 max_uid,则所有大于或等于 min_uid 的 uid 都匹配。 -
指定为* @ * *
<min_gid>
* : *<max_gid>
*的范围。如果省略 min_gid,则匹配与 max_gid 完全匹配。如果省略 max_gid,则所有大于或等于 min_gid 的孩子都匹配。为了精确匹配,将检查所有组,包括用户的补充组。对于范围匹配,仅检查用户的主要组。 -
指定为*%:* *
<gid>
*的 gid 仅适用于 maxlogins 限制。它限制具有指定 gid 的组成员的所有用户的登录总数。 -
<type>
-
-
hard
-
用于实施“硬性”资源限制。这些限制由超级用户设置,并由内核实施。用户不能将他对系统资源的要求提高到这些值以上。
-
-
soft
- 用于实施* soft 资源限制。这些限制是用户可以在允许的范围内通过任何预先存在的“硬”限制向上或向下移动的限制。对于正常系统使用情况,可以将此令牌指定的值视为默认值。
-
-
- 一起实施* soft 和 hard *资源限制。
-
注意,如果您指定类型为“-”,但忽略提供项目和值字段,则模块将永远不会对指定的用户/组等施加任何限制。
-
<item>
-
-
core
-
限制核心文件大小(KB)
-
-
data
- 最大数据大小(KB)
-
fsize
- Files 大小上限(KB)
-
memlock
- 最大内存锁定地址空间(KB)
-
nofile
- 打开文件 Descriptors 的最大数量
-
rss
- 最大居民集大小(KB)(在 Linux 2.4.30 及更高版本中被忽略)
-
stack
- 最大堆栈大小(KB)
-
cpu
- 最大 CPU 时间(分钟)
-
nproc
- 最大进程数
-
as
- 地址空间限制(KB)
-
maxlogins
- 该用户的最大登录次数(此限制不适用于* uid = 0 *的用户)
-
maxsyslogins
- 系统上所有登录的最大数量;如果所有用户登录的总数大于指定的数量,则不允许用户登录(此限制不适用于* uid = 0 *的用户)
-
priority
- 运行用户进程的优先级(负值可提高进程优先级)
-
locks
- 最大锁定文件(Linux 2.4 及更高版本)
-
sigpending
- 待处理 signal 的最大数量(Linux 2.6 及更高版本)
-
msgqueue
- POSIX 消息队列使用的最大内存(字节)(Linux 2.6 和更高版本)
-
nice
- 允许提高到(Linux 2.6.12 及更高版本)值的最大优先级优先级:[-20,19]
-
rtprio
- 非特权进程允许的最大实时优先级(Linux 2.6.12 和更高版本)
-
所有项目均支持* -1 , unlimited 或 infinity 表示无限制,除了 priority 和 nice *。
如果将资源的硬限制或软限制设置为有效值,但在本地系统的支持范围之外,则系统可能会拒绝新限制或发生意外行为。如果使用控制值* required *,则如果无法设置限制,模块将拒绝登录。
通常,单个限制优先于组限制,因此,如果您未对* admin *组强加任何限制,但是该组中的一个成员有一个限制行,则用户将根据此行设置其限制。
另外,请注意,所有限制设置都是“每次登录*”设置的。它们不是 Global 性的,也不是永久性的。仅在会话期间存在。 * maxlogin *选项是一个 exception,这是系统范围的。但是有一个竞赛,并发登录并不会同时被检测到,而只会被计为一次。
在* limits 配置文件中,'#*'字符引入 Comments-在此之后,其余行将被忽略。
pam_limits 模块的确通过 syslog(3)报告在其配置文件中发现的配置问题和错误。
6.15.3. OPTIONS
-
conf=/path/to/limits.conf
- 指示替代的 limits.conf 样式配置文件以覆盖默认文件。
-
debug
- 打印调试信息。
-
set_all
- 将没有在配置文件中指定任何值的限制设置为使用 PID 1 的进程的限制。请注意,如果系统是 init 进程,则这些限制将不是内核默认限制,因此不应使用此选项。
-
utmp_early
- 某些损坏的应用程序实际上在用户被允许进入系统之前为该用户分配了一个 utmp 条目。如果要为此配置 PAM 的某些服务,则可以有选择地使用此模块自变量来补偿此行为,并同时使用单个 limit.conf 文件维护系统范围的一致性。
-
noaudit
- 不要向审核子系统报告超出的最大登录数。
6.15.4. 提供的模块类型
仅提供session
模块类型。
6.15.5. 返回值
-
PAM_ABORT
- 无法获得电流限制。
-
PAM_IGNORE
- 找不到该用户的限制。
-
PAM_PERM_DENIED
- 无法设置新的限制。
-
PAM_SERVICE_ERR
- 无法读取配置文件。
-
PAM_SESSION_ERR
- 恢复帐户名称时出错。
-
PAM_SUCCESS
- 限制已更改。
-
PAM_USER_UNKNOWN
- 该系统未知用户。
6.15.6. FILES
-
/etc/security/limits.conf
- 默认配置文件
6.15.7. EXAMPLES
这些是可能在/etc/security/limits.conf
中指定的示例行。
* soft core 0
* hard nofile 512
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
:123 hard cpu 5000
@500: soft cpu 10000
600:700 hard locks 10
6.15.8. AUTHORS
pam_limits 最初由 Cristian Gafton<gafton@redhat.com>编写