1

我的系统中安装了 3 个 samba 共享,但突然间,其中一个在未经我许可的情况下被卸载。也许是在我的 crontab 中运行的数百个脚本之一,但我不知道是哪一个。

我已经查看了所有/var/log目录寻找umount单词但没有成功,然后我想记录命令 umount 何时执行以及哪个进程正在运行它。

也许是系统日志,也许是另一个日志,也许是一封邮件到我的邮箱......

非常感谢。

我有这个软件:

mount: mount-2.12q
mount.cifs version: 1.14-3.5.4
4

2 回答 2

0

由于挂载是文件系统中的更改,因此 inode-observer incron 可能是您的解决方案。另一种选择可能是 auditd。

于 2011-10-25T11:14:01.610 回答
0

卸载不仅通过调用 umount 二进制文件进行,许多程序也可能这样做。请参阅手册页 ( man syscalls) 并搜索 umount。这就是说,您必须挂钩相应的syscall并查看谁调用它。我不确定,但很可能可以通过直接调用相应的方法在内核内部断开连接,因此功能可能会绕过主要用于用户空间交互的系统调用接口。在这种情况下,您将不得不在内核本身上使用一些调试技术,这对于发现您的问题可能有点多!

您可能在已经运行的进程 ( man strace) 上使用 strace 成功,例如 smbd,并查看该进程是否调用 umount,这很有可能。

无论如何,如果您可以从源代码重新编译内核,您可能会printk在用于卸载设备的函数中添加一些消息,以查看是哪个进程执行了它(这将是我在没有其他strace帮助的情况下使用的方法,包括 , )。

于 2011-10-25T08:51:32.820 回答