ulimit 是一个用于控制 shell 进程资源使用的命令行工具。通过 ulimit,你可以限制用户可以创建的文件大小、打开的文件描述符数量等。以下是如何使用 ulimit 限制用户权限的一些常见方法:
你可以在用户的 shell 会话中使用 ulimit 命令来临时限制资源。例如:
# 限制用户可以打开的最大文件描述符数量为 1024
ulimit -n 1024
# 限制用户可以创建的最大文件大小为 100MB
ulimit -f 104857600
# 限制用户可以使用的最大内存大小为 500MB
ulimit -v 524288000
# 限制用户可以运行的最大进程数为 50
ulimit -u 50
这些限制只会在当前 shell 会话中生效,用户退出 shell 或重新登录后会失效。
如果你希望永久性地限制用户的资源使用,可以将 ulimit 命令添加到用户的 shell 配置文件中。例如,对于使用 Bash 的用户,可以将命令添加到 ~/.bashrc 或 ~/.bash_profile 文件中:
# 编辑 ~/.bashrc 文件
nano ~/.bashrc
# 在文件末尾添加以下内容
ulimit -n 1024
ulimit -f 104857600
ulimit -v 524288000
ulimit -u 50
# 保存并退出编辑器
source ~/.bashrc
对于使用其他 shell 的用户,可以将命令添加到相应的配置文件中,例如 ~/.zshrc 对于 Zsh 用户。
如果你希望系统级的限制,可以使用 /etc/security/limits.conf 文件。编辑该文件并添加以下内容:
# 编辑 /etc/security/limits.conf 文件
nano /etc/security/limits.conf
# 添加以下行来限制特定用户的资源使用
username soft nofile 1024
username hard nofile 2048
username soft fsize 104857600
username hard fsize 209715200
username soft data 524288000
username hard data 1048576000
username soft stack 10240
username hard stack 20480
username soft core 0
username hard core 0
将 username 替换为你想要限制的用户名。这些设置会在用户登录时生效,并且是持久的。
PAM(Pluggable Authentication Modules)提供了更细粒度的控制。你可以编辑 /etc/pam.d/common-session 和 /etc/pam.d/common-session-noninteractive 文件,添加以下行来应用资源限制:
# 编辑 /etc/pam.d/common-session 文件
nano /etc/pam.d/common-session
# 添加以下行
session required pam_limits.so
# 编辑 /etc/pam.d/common-session-noninteractive 文件
nano /etc/pam.d/common-session-noninteractive
# 添加以下行
session required pam_limits.so
ulimit 命令的限制是基于用户的 shell 会话的,因此对于系统级的服务或守护进程,可能需要其他方法进行限制。通过以上方法,你可以有效地使用 ulimit 限制用户的资源使用,从而提高系统的安全性和稳定性。