Arch Linux下如何启用日志记录用户文件打开明细以查询访问时间
Arch Linux 启用用户文件打开操作审计配置
你之前执行journalctl /usr/bin/geany无法查询到文件打开记录的原因是:systemd journal默认仅记录进程启动/退出、服务运行日志等基础信息,不会默认采集进程打开具体文件的操作,需要额外配置审计规则实现该需求,推荐使用Linux内核原生的auditd审计框架,配置步骤如下:
安装与配置auditd(推荐方案)
- 安装audit软件包:
sudo pacman -S audit - 启用并启动auditd服务:
sudo systemctl enable --now auditd.service
- 配置审计规则:
如果你需要记录全系统所有用户成功打开文件的操作,执行以下命令添加临时规则:sudo auditctl -a always,exit -F arch=b64 -S open -S openat -F success=1 -k file_open
参数说明:arch=b64适配64位系统,32位系统替换为arch=b32open、openat为Linux下打开文件的核心系统调用success=1仅记录打开成功的操作,避免大量失败请求产生冗余日志-k file_open为规则添加自定义标签,方便后续过滤日志
如果你仅需要监控特定目录的文件打开操作,可添加路径过滤,示例为监控所有用户家目录的文件打开:sudo auditctl -a always,exit -F arch=b64 -S open -S openat -F dir=/home -F success=1 -k home_file_open
- 规则持久化:
上述配置的规则为临时规则,系统重启后会失效。要永久生效,将你选择的规则写入/etc/audit/rules.d/audit.rules文件,随后重启auditd服务生效:sudo systemctl restart auditd.service
日志查询方法
- 查询所有文件打开操作的审计日志(添加
-i参数可将日志中的时间戳、UID等字段转换为易读格式):sudo ausearch -i -k file_open - 查询特定进程的文件打开记录,例如查询geany的相关操作:
sudo ausearch -i -k file_open -x geany - 查询特定文件的打开记录,例如查询workflows.txt的打开记录:
sudo ausearch -i -k file_open -f /完整路径/workflows.txt
其他说明
- 仅规则生效之后的文件打开操作会被记录,你昨天打开workflows.txt的操作无法通过后配置的审计规则回溯查询。
- auditd默认日志存储在
/var/log/audit/目录下,软件包默认已配置日志轮转规则,无需额外调整即可避免日志占用过多磁盘空间。如果全系统监控产生的日志量过大,可调整规则仅监控你需要的目录范围即可。 - 如果你仅需要查询geany的启动时间而非打开的具体文件,可开启journald日志持久化:修改
/etc/systemd/journald.conf中的Storage=persistent,随后执行sudo systemctl restart systemd-journald.service即可,后续重启后不会丢失进程启动记录。
内容的提问来源于stack exchange,提问作者dosfilesystem
相关产品推荐
相关产品推荐

