在 CentOS 系统中,ulimit 命令用于设置或控制 shell 进程及其子进程可以使用的资源限制。默认情况下,ulimit 的更改不会被持久化记录到日志文件中。如果你希望记录 ulimit 的更改,可以通过以下几种方法实现:
PAM 允许你在用户登录时自动应用 ulimit 设置,并可以将这些更改记录到日志中。以下是配置步骤:
编辑 PAM 配置文件:
打开 /etc/pam.d/system-auth 或 /etc/pam.d/login 文件,添加以下行:
session required pam_limits.so
配置 /etc/security/limits.conf:
编辑 /etc/security/limits.conf 文件,添加或修改以下行来设置用户的资源限制:
username soft nofile 4096
username hard nofile 8192
将 username 替换为实际的用户名。
启用审计日志:
确保审计服务已启用并配置为记录 ulimit 更改。编辑 /etc/audit/auditd.conf 文件,确保以下行未被注释:
log_format = RAW
然后重启审计服务:
systemctl restart auditd
配置审计规则:
编辑 /etc/audit/rules.d/audit.rules 文件,添加以下规则来记录 ulimit 更改:
-a exit,always -F arch=b64 -S setrlimit -k ulimit_changes
-a exit,always -F arch=b32 -S setrlimit -k ulimit_changes
然后重启审计服务:
systemctl restart auditd
ulimit 更改你可以编写一个脚本来自动记录 ulimit 更改,并在每次更改时执行该脚本。
创建日志文件:
创建一个日志文件来记录 ulimit 更改:
touch /var/log/ulimit_changes.log
编写脚本:
创建一个脚本 /usr/local/bin/log_ulimit.sh,内容如下:
#!/bin/bash
LOG_FILE="/var/log/ulimit_changes.log"
USER=$1
SOFT_LIMIT=$2
HARD_LIMIT=$3
echo "$(date '+%Y-%m-%d %H:%M:%S') - User: $USER, Soft Limit: $SOFT_LIMIT, Hard Limit: $HARD_LIMIT" >> $LOG_FILE
赋予脚本执行权限:
chmod +x /usr/local/bin/log_ulimit.sh
修改 PAM 配置:
编辑 /etc/pam.d/system-auth 或 /etc/pam.d/login 文件,添加以下行来调用脚本:
session required pam_exec.so /usr/local/bin/log_ulimit.sh $PAM_USER $PAM_RLIMIT_SOFT_CORE $PAM_RLIMIT_HARD_CORE
auditd 直接监控 ulimit 系统调用你可以使用 auditd 直接监控 ulimit 系统调用,并将相关信息记录到日志文件中。
编辑审计规则:
编辑 /etc/audit/rules.d/audit.rules 文件,添加以下规则:
-a exit,always -F arch=b64 -S setrlimit -k ulimit_changes
-a exit,always -F arch=b32 -S setrlimit -k ulimit_changes
重启审计服务:
systemctl restart auditd
通过以上方法,你可以实现对 ulimit 更改的持久化记录。选择适合你需求的方法进行配置即可。