我正在尝试为 unixs 系统编写一个审计程序。首先,我想获取各种本机命令的所有输出,例如 ifconfig、df、route 等,具体取决于执行脚本的系统。
除了实现起来很复杂*之外,我认为我需要的所有命令都是从 /proc 文件系统获取信息。这样我就可以直接获取其结构,而不必担心命令兼容性。
但是,我在网上看到很多地方有人想找到一种方法来卸载 /proc 文件系统。为什么有人需要卸载这个分区?
*:因为 openbsd netstat 与 linux 的不一样,例如,我需要在那里添加一个开关。
答案1
卸载/proc
仅在重启或关机时发生。它是一个虚拟文件系统(仅驻留在 RAM 中),磁盘上没有任何内容。必须停止系统上运行的每个进程才能将其卸载。
在某些情况下,chroot
在系统上的某个位置设置了 ,并/proc
使用 参数将当前正在运行的系统挂载在其上-o bind
。这样, 中运行的进程就可以使用相同的设备和进程信息。chroot
当 chroot 中的所有进程都终止时,可以卸载已挂载文件系统的这个“副本”。这实际上是在实时系统上卸载的唯一方法/proc
,然后,它只是真实系统的副本。
对于您的审计程序,坚持使用每个系统上使用的二进制文件可能是明智之举。即使它们的输出(和使用标志)可能不同,它们已经知道如何遍历 /proc 中的不同条目,而这些条目在 *nix 的不同版本和风格之间会有很大差异。祝你好运!