对于Linux中多用户的管理,往往我们需要去限制每一个用户在Linux中使用启动的进程数量,避免进程数、CPU、内存使用率占用过高等问题。此外,对于fork炸弹,也可以通过限制用户的进程数来避免。那么我们应该如何去限制一个用户呢?
我们可以通过修改/etc/security/limits.conf文件来实现。
先确定一下/etc/pam.d/login文件中下面一行的存在:
session required /lib/security/pam_limits.so
示例:
[root@localhost ~]# cat /etc/pam.d/login
- #%PAM-1.0
- auth [user_unknown=ignore success=ok ignoreignore=ignore default=bad] pam_securetty.so
- auth include system-auth
- account required pam_nologin.so
- account include system-auth
- password include system-auth
- # pam_selinux.so close should be the first session rule
- session required pam_selinux.so close
- session required pam_loginuid.so
- session optional pam_console.so
- # pam_selinux.so open should only be followed by sessions to be executed in the user context
- session required pam_selinux.so open
- session required pam_namespace.so
- session optional pam_keyinit.so force revoke
- session include system-auth
- -session optional pam_ck_connector.so
然后编辑/etc/security/limits.conf,在里面可以设置限制用户的进程数、CPU占用率和内存使用率等,如hard nproc 20就是指限制20个进程,具体可以看man。如:
修改 vi /etc/security/limits.conf 文件来设定:
# vi /etc/security/limits.conf
vpsee hard nproc 32
@student hard nproc 32
@faculty hard nproc 64
上面的配置文件意思是说限制 vpsee 这个用户只能 fork 32 个进程;然后限制 student 这个用户组的每个成员最多能
fork 32 个进程;