如何找到哪个进程导致文件失去权限?

如何找到哪个进程导致文件失去权限?

昨天,我们的一台服务器出现了问题,结果发现该文件/etc/init.d/nfs-kernel-server已失去其权限,它们被报告为只是------------.将权限设置回与其他文件相同的权限解决了问题,我现在想调试发生的情况。无论如何,是否可以获取文件权限何时更改的日志,为什么?

答案1

此类操作没有默认日志,您需要提前设置。

您可能会考虑使用auditd,并将其配置为在您发现的文件中查找其权限已更改的更改。然后,您可以找到有关哪些用户和进程更改了哪些文件的信息。

例如,您可以临时执行以下操作:

auditctl -w /etc/init.d/nfs-kernel-server -k nfs-kernel-server

您还可以将其添加到/etc/audit/audit.rules长期使用:

cat > /etc/audit/audit.rules << 'EOF'
-w /etc/init.d/nfs-kernel-server
EOF

之后,您需要启动并启用auditd。在大多数 systemd 发行版上,可以像这样完成:

systemctl enable auditd
systemctl start auditd

对于非 systemd 系统,您需要查阅文档,但它可能是名为“auditd”的服务。

之后,您可以在/var/log/audit/audit.log或auditd 配置为记录的任何位置查阅日志。您将看到如下结果:

type=SYSCALL msg=audit(1349582090.742:414): arch=c000003e syscall=268 success=yes exit=0 a0=ffffffffffffff9c a1=17be0f0 a2=1ff a3=4000 items=1 ppid=2859 pid=3069 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="chmod" exe="/usr/bin/chmod" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
type=CWD msg=audit(1349582090.742:414):  cwd="/root"
type=PATH msg=audit(1349582090.742:414): item=0 name="/var/www/html/1" inode=6171184 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:httpd_sys_content_t:s0

相关内容