Linux PAM(插入式认证模块,Pluggable Authentication Modules)可以强制实行一些实用的限制,在 /etc/security/limits.conf 文件中对此进行配置。谨记,这些限制适用于单个对话。您可以使用 maxlogins
来控制总额限制。limits.conf 中的条目有如下结构: username|@groupname type resource limit
。
为了与 username 区别,groupname 之前必须加 @
。类型必须是 soft
或者 hard
。软限制(soft-limit)可以被超出,通常只是警戒线,而硬限制(hard-limit)不能被超出。resource
可以是下面的关键字之一:
core
- 限制内核文件的大小(KB)。data
- 最大数据大小(KB)。fsize
- 最大文件大小(KB)。memlock
- 最大锁定内存地址空间(KB)。nofile
- 打开文件的最大数目。rss
- 最大持久设置大小(KB)。stack
- 最大栈大小(KB)。cpu
- 以分钟为单位的最多 CPU 时间。nproc
- 进程的最大数目。as
- 地址空间限制。maxlogins
- 此用户允许登录的最大数目。
在下面的代码示例中,所有用户每个会话都限制在 10 MB,并允许同时有四个登录。第三行禁用了每个人的内核转储。第四行除去了用户 bin
的所有限制。ftp
允许有 10 个并发会话(对匿名 ftp 帐号尤其实用);managers
组的成员的进程数目限制为 40 个。developers
有 64 MB 的 memlock 限制,wwwusers
的成员不能创建大于 50 MB 的文件。
* hard rss 10000
* hard maxlogins 4
* hard core 0
bin -
ftp hard maxlogins 10
@managers hard nproc 40
@developers hard memlock 64000
@wwwusers hard fsize 50000
|
要激活这些限制,您需要在 /etc/pam.d/login 底部添加下面一行: session required /lib/security/pam_limits.so
。
配额让您能够限制用户和组的 inode 数目和可用空间。注意,配额是在每个加载点上定义的,所以,如果用户在若干个分区上有写权限,那么要确保为它们每个都定义配额。
配额是管理员最小化 DoS 攻击的一种方式,这类攻击以填满硬盘驱动器上所有可用空间为手段(这会使其他进程不能创建临时文件而使它们失败)。根据您正在使用的发行版本,您可以安装自带的配额工具,也可以自己下载、编译并安装它们。
必须在内核中启用配额。当前大部分发行版本都支持配额。如果您的发行版本没有启用配额,那么参考 参考资料 中的 mini-howto 来获得启用它们的说明。
要为文件系统启用配额,您必须在 /etc/fstab 中为相应的那行添加一个选项。使用 usrquota
和 grpquota
来启用用户配额和组配额,如清单 4 所示:
/dev/hda1 / ext3 defaults 1 1
/dev/hda2 /home ext3 defaults,usrquota 1 1
/dev/hda3 /tmp ext3 defaults,usrquota,grpquota 1 1
/dev/hda4 /shared ext3 defaults,grpquota 1 1
/dev/hdc1 /mnt/cdrom iso9660 nosuid,user 1 2
|
mount -a -o remount
重新挂载相应的文件系统,来激活刚才添加的选项;然后使用 quotacheck -cugvm
创建一个二进制配额文件,其中包含了机器可读格式的配额配置。这是配额子系统要操作的文件。
使用工具 edquota
完成配额的指派。要为用户 alice
定义限制,则使用 edquota -u alice
来调用它。环境变量 EDITOR
中定义的编辑器(默认是 vi)会打开,其中有类似如下的内容:
Quotas for user alice:
/dev/hda2: blocks in use: 3567, limits (soft = 5500, hard = 6500)
inodes in use: 412, limits (soft = 1000, hard = 1500)
|
edquota
会读取您刚才编辑的临时文件,并将那些值传递到二进制配额文件,以使您的修改生效。对组配额的编辑与此相同,只是必须使用 -g
选项而不是 -u
。
软限制是警告级别,可以被超出,而硬限制是严格强制的。软限制有一个 宽限期(grace period) (有时也称为 软性时间限制(soft time limits));这是允许用户超出软限制直到被系统强制执行之前的时间间隔。
您可以使用 edquota -t
来设置宽限期。可以使用的单位是秒、分、小时、天、周和月。其他管理配额的实用工具包括 repquota
(总结某个文件系统的配额)、 quotaon
和 quotaoff
(打开和关闭配额)。