查看上次触摸文件的进程

时间:2011-12-29 18:48:41

标签: linux bash

在Linux机器上,有一些进程定期更改目录和文件的权限,大致每天。这不是我设置的过程,我不知道它是什么。

我有root权限,我可以轻松手动更改权限以获取访问权限,但这有点烦人。

有没有办法查看最后触及文件的进程列表?或者我如何在文件上记录进程活动。

2 个答案:

答案 0 :(得分:11)

在Fedora系统上,您可以使用:

sudo auditctl -p a -w /some/file  # monitor attribute changes to /some/file

它位于audit包中,如果您没有安装,请sudo yum install audit

输出格式为/var/log/audit/audit.log

  type=SYSCALL msg=audit(1325185116.524:1133): arch=c000003e syscall=2 success=yes exit=3 a0=671600 a1=241 a2=1b6 a3=9 items=1 ppid=26641 pid=26643 auid=501 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="jmacs" exe="/usr/bin/joe" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
  type=CWD msg=audit(1325185116.524:1133):  cwd="/tmp"
  type=PATH msg=audit(1325185116.524:1133): item=0 name="/etc/passwd" inode=531545 dev=fd:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0

它有点密集,但请注意msg=audit(###)个字符串排成一行。

  • 现在我实际上第一次阅读了联机帮助页,我看到了一些关于使用-Farch=b32 / -Farch=b64的注意事项,所以似乎有一些关于32位-d-的可能的怪异64位系统调用,所以如果你没有得到审计命中,那可能就是原因。我以前从未见过这一点,但自从Athlon时代以来我没有真正运行任何32位进程,所以我不能说得很好。

答案 1 :(得分:3)

如果您需要监控某些文件或目录的更改,inotify可能会有所帮助。

在bash中有inotifywait(你可以找到一个关于如何使用它的一个很好的例子here),在python中(以防你考虑使用它)有一个名为{{3}的库}。