一、介绍limits.conf
/etc/security/limits.conf是一个配置文件,用于限制用户可以使用的系统资源。通过限制用户所能够使用的系统资源,用户就不能滥用这些资源导致系统崩溃或者出现其它问题。这个文件通过减少总的资源分配或者减轻某些用户的负载来确保系统的可靠性和稳定性。
limits.conf除了控制用户的资源使用,同时也被用来用于控制用户的权限。因为这个文件是由root用户创建并维护的,所以它允许限制用户的使用特权命令,可以从而保护系统的安全性。
而这些限制是全局性的,也就是说,它会影响所有的登录用户,无论他们是远程登录还是本地登录。
二、语法格式
/etc/security/limits.conf文件的语法格式如下所示:
* hard core 0
* soft nofile 1024
root hard nofile 4096
root soft nofile 1024
可见,每一行包括四个部分,依次为:用户名、资源类型、资源限制、资源限制的值。
其中,用户名是采用通配符的,由于用户有可能有多个,所以可以使用 * 通配符替代具体用户名。
资源类型包括:core(核心文件大小)、data(数据段大小)、fsize(文件大小)、memlock(最大锁定内存大小)、nofile(最大文件打开数量)、rss(最大常驻集大小)等。
资源限制包括:hard和soft两种限制方式。
hard限制是一个硬性限制,一旦设定,就不能再增加资源的使用量;而soft限制是一个软性限制,可以临时修改,以适应用户需要。
资源限制的值必须大于或等于0,且是一个十进制数。单位是bytes或者kbytes。
三、资源类型详解
在上述的语法格式中,我们已经提到了一些资源类型。下面将对几个常见的资源类型做详细说明。
1、nofile(最大文件打开数量)
nofile限制表达的是一个进程同时可以打开的最大文件数量。这个限制经常影响使用依赖文件描述符的程序。如果一个程序打开了大量的文件,那么就可能遇到这种限制。
2、core(核心文件大小)
core是指在程序崩溃或者被越界访问时,内核会自动生成一个程序当前状态的镜像文件。core限制表达的是这个镜像文件的最大大小。
3、data(数据段大小)
data是指程序数据段的大小,包括初始化数据段和非初始化数据段。它对应的是BSS段。
4、fsize(文件大小)
fsize限制表达的是一个进程可以创建的单个文件的最大大小。
5、nproc(最大进程数)
nproc指的是当前用户可以并发执行的最大进程数。如果同时运行的进程数超过了这个限制,系统会出现进程创建失败或者资源竞争等问题。
四、实例演示
1.限制所有用户最大文件描述符数为65535,最小文件描述符数为1000。
* soft nofile 1000
* hard nofile 65535
2.限制用户“user”同时能打开最大文件描述符数为4000,同时最大进程数为100。
user soft nofile 4000
user hard nofile 4000
user soft nproc 100
user hard nproc 100
3.限制所有用户的最大核心转储大小为0,即禁止所有用户的核心dump。
* hard core 0
4.限制用户“user”单个文件最大大小为100M,同时禁止所有用户使用:“nice“, “ionice“, “ulimit”, “iostat”这四个命令。
user hard fsize 104857600
user soft fsize 104857600
@ALL hard nices 0
@ALL soft nices 0
@ALL hard ps-mpages 100
@ALL soft ps-mpages 100
5.限制无法登录用户的资源和权限,其中包括root、bin、daemon等用户。
# Deny root, daemon, and bin sessions
#
# Default deny
#
# The root user gets unlimited resources.
# See warning above.
root hard memlock unlimited
root soft memlock unlimited
# End of file
五、总结
/etc/security/limits.conf是一个非常重要的配置文件,它可以限制系统用户的资源使用和权限,从而确保系统的可靠性和稳定性。本文介绍了limits.conf的语法格式和几个常见的资源类型,并通过实例演示了如何设置资源限制。