我正在尝试创建一个守护进程来监视用户bash_历史记录用于手动修改的文件。换句话说,如果用户打开文件并修改它,守护进程将通知此操作以采取安全措施,但当历史记录自行更新时,什么也不会发生。
我尝试的解决方案是使用inotify等待:
while true; do
inotifywait -e close_write,move,delete ~/.bash_history && notify
done
在哪里通知是一个将执行特定通知过程的脚本。
我相信这对于大多数文件来说都可以正常工作,但在这种情况下却不行,因为通知每次历史记录更新时都会执行。
这样可以吗,还是我应该使用其他应用程序?
答案1
这是不可能的inotify
。没有配置可以探测文件是否被用户或进程更改,也没有配置可以仅监视“附加到文件”。
和即使存在通过一个“附加到文件”inotify 事件,一名用户可以bash_history
通过创建虚假条目来注入数据echo >>
,从而失去监控的所有含义。
您可以按照以下建议来强化您的历史文件,我认为这是您可以做的最好的事情: