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
限制用戶的資源使用,從而提高系統的安全性和穩定性。