我已经inheritance了一堆Linux(Ubuntu Precise)服务器,目前我们经常遇到一个文件夹的所有权变成“root”的问题。 我们运行傀儡,将所有权改变为应该使用的用户,但是其他的东西会稍后改变它。
我目前每隔30秒logging一次文件的权限,试图缩小时间,查看日志中是否有任何内容。这是一个大型的繁忙服务器,所以没有更多的信息,在日志中find任何东西都是不容易的。
当Linux文件/文件夹所有权发生变化并检测到负责的stream程时,Linux中是否有这种方法?
我认为你可以使用审计特定的文件/目录,或者你可以编写自定义规则根据您的要求
auditctl -w <path to the file you need to monitor> -p war -k test Where -w is for specifying file path -p is for permission access (read,write,execute and attribute change) -k key name,you can give name you can use to filter audit rule
那么你可以使用它来search它
ausearch -ts today -k test
例如,我用这个,创build这个文件/ tmp / test,然后写一些随机数据
auditctl -w /tmp/test -p warx -k test
然后执行这个命令
ausearch -ts today -k test --ts for start date -k is for key string
所以这个的输出
type=SYSCALL msg=audit(1407949301.821:63216): arch=c000003e syscall=191 success=no exit=-61 a0=eacca0 a1=3600005db7 a2=7fff15265180 a3=84 items=1 ppid=2384 pid=16921 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10096 comm="vim" exe="/usr/bin/vim" key="test"
所以,如果你检查输出的最后一行,它将显示命令执行是vim和uid = 0这是根
如果您希望在重新启动时使这些更改保持不变,请在/etc/audit/audit.rules中添加像这样的条目
-w /tmp/test -p warx -k test
并确保auditd服务已启动并正在运行
service auditd status
欲了解更多信息,你可以参考http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html
快速谷歌揭示在Linux内核inotify api。
Inotify(inode notify)是一个Linux内核子系统,用于扩展文件系统以注意对文件系统的更改,并将这些更改报告给应用程序
我找不到任何允许您使用inotify直接观看文件的应用程序。 但是有inotify-tools包允许你访问脚本中的api。
它本身并不告诉你谁改变了什么,但是你可以使用这个API来创build一个脚本来缩小它的范围。 例如,将它与lsof和ps结合起来
对不起,在标准的Linux系统中没有什么logging在这样的级别上。 你可能不得不写一个脚本,但是,即使这是一个命中或错过的命题。
嗯……你也许可以在文件上设置不可变的位来保护它,看看谁抱怨它不能改变:
chattr +i filename1 ... filenamen