我的系统中挂载了3个samba共享,但是突然间,其中一个在未经我允许的情况下被卸载了。也许是在我的crontab中运行的数百个脚本中的一个,但我不知道是哪个。
我已经检查了所有/var/log
目录寻找umount
字没有成功,然后我想记录命令umount何时执行以及哪个进程正在运行它。
可能是syslog,可能是另一个日志,可能是邮件到我的邮箱....
谢谢你。
我有这个软件:
mount: mount-2.12q
mount.cifs version: 1.14-3.5.4
卸载不仅可以通过调用umount二进制文件来实现,许多程序都可以这样做。查看手册(man syscalls
),搜索"umount"。也就是说,您必须挂钩相应的syscall
,并查看谁调用它。我不确定,但很可能通过直接调用相应的方法来断开内核内部的连接,因此功能可能会绕过主要用于用户空间交互的系统调用接口。在这种情况下,您将不得不对内核本身使用一些调试技术,这对于找到您的问题可能有点多!
您可以成功地在已经运行的进程(man strace
)上使用strace,例如smbd,并查看该进程是否调用umount,这是很有可能的。
无论如何,如果您可以从源代码重新编译内核,您可以在用于卸载设备的函数中添加一些printk
消息,以查看是哪个进程卸载了设备(这将是我在没有其他方法(包括strace
)的情况下使用的方法)。
由于挂载是文件系统中的一个更改,因此inode-observer的增量可能是一个适合您的解决方案。另一个选项可能是audited .