首先来看limits.conf的配置
/etc/security/limits.conf
limits.conf 文件实际是linux PAM(插入式认证模块,Pluggable Authentication Modules)中pam_limits.so 的配置文件,而且只针对于单个会话。
limits.conf的格式如下:
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so
例:
limits.conf的工作原理
limits.conf的后端是这样工作的:limits.conf是pam_limits.so的配置文件,然后/ETC/PAM.D/下的应用程序调用PAM_***.SO模块。譬如说,当用户拜访服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个 对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。
例:限制ADMIN用户登录到SSHD的服务不能超过2个
在/ETC/PAM.D/SSHD 中添加 SESSION REQUIRED pam_limits.so
在/ETC/SECURITY/limits.conf中添加 ADMIN - MAXLOGINS 2
查看应用程序能否被PAM支持,用LDD
ulimit 命令用法
Bash
Bash内建了一个限制器"ulimit"。注意任何硬限制都不能设置得太高,因此如果你在/etc/profile或用户的.bash_profile (用户不能编辑或删除这些文件)中定义了限制规则,你就能对用户的Bash shell实施限制。这对于缺少PAM支持的LINUX旧发行版本是很有用的。你还必须确保用户不能改变他们的登录shell。限制的设置与PAM相似。例如:
http://www.ringkee.com/jims/read_folder/books/LinuxHackingExposed
Ulimit命令 设置限制
可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义限制。
命令参数
-a 显示所有限制
-c core文件大小的上限
-d 进程数据段大小的上限
-f shell所能创建的文件大小的上限
-m 驻留内存大小的上限
-s 堆栈大小的上限
-t 每秒可占用的CPU时间上限
-p 管道大小
-n 打开文件数的上限
-u 进程数的上限
-v 虚拟内存的上限