在 CentOS 中,ulimit 命令用于設置和查看用戶進程的資源限制。然而,ulimit 本身并不提供直接的歷史記錄功能。不過,你可以通過以下幾種方法來跟蹤和查看 ulimit 的變化:
auditd 監控 ulimit 變化安裝和配置 auditd
首先,確保 auditd 已安裝。如果沒有安裝,可以使用以下命令進行安裝:
sudo yum install audit
啟動并啟用 auditd 服務:
sudo systemctl start auditd
sudo systemctl enable auditd
添加監控規則
創建一個審計規則文件,例如 /etc/audit/rules.d/ulimit.rules,并添加以下內容以監控 ulimit 的變化:
-a exit,always -F arch=b64 -S setrlimit -k ulimit_changes
-a exit,always -F arch=b32 -S setrlimit -k ulimit_changes
這條規則會監控所有 setrlimit 系統調用,并將相關事件標記為 ulimit_changes。
重新加載審計規則
應用新的審計規則:
sudo augenrules --load
查看審計日志
審計日志通常位于 /var/log/audit/audit.log。你可以使用 ausearch 工具來查詢與 ulimit 變化相關的日志:
sudo ausearch -k ulimit_changes
這將顯示所有與 ulimit 變化相關的審計記錄。
ulimit 設置你可以在每次更改 ulimit 后,手動將更改記錄到一個文件中。例如,創建一個腳本 set_ulimit.sh:
#!/bin/bash
# 獲取當前的 ulimit 值
ulimit_value=$(ulimit -n)
# 記錄到日志文件
echo "$(date): ulimit -n set to $ulimit_value" >> /var/log/ulimit_history.log
# 應用新的 ulimit 值
ulimit -n $ulimit_value
然后,每次需要更改 ulimit 時,運行這個腳本:
sudo ./set_ulimit.sh
pam_limits.so 持久化 ulimit 設置如果你希望 ulimit 設置在用戶登錄時自動應用,可以使用 PAM(Pluggable Authentication Modules)來實現。
編輯 /etc/security/limits.conf
添加以下行以設置特定用戶的 ulimit:
username soft nofile 4096
username hard nofile 8192
替換 username 為你想要設置的用戶名。
重啟相關服務
根據你的需求,可能需要重啟相關服務以使更改生效。例如,對于 SSH 服務:
sudo systemctl restart sshd
通過以上方法,你可以有效地跟蹤和查看 CentOS 中 ulimit 的變化歷史。