是否有像 fanotify 这样的设施,但用于 exec() 操作?类似于MacOS 中的 kauth,但在用户空间中。
fanotify 似乎只通知(并允许/拒绝)文件打开/关闭/读取/写入。
我已经看到可以通过其他方式(也在此处)通知 fork 和 exec 的代码,但是没有办法允许或拒绝 exec。此外,这种方法似乎也有缺点,因为并非所有内核都使用 netlink/proc 连接器编译,并且它可能会被事件淹没。
也许您正在寻找SELinux,这是一个 Linux 内核模块,它提供了细粒度安全策略的实施,例如谁或什么可以执行某个文件。
看起来 Linux 终于在内核 5.0(例如 Ubuntu 19.04 中提供)中添加了这个功能来进行 fanotify。
详情请参阅man 2 fanotify_mark
。相关标志是FAN_OPEN_EXEC
和FAN_OPEN_EXEC_PERM
。
我相信“流程事件连接器”是您正在寻找的。该界面将允许您接收 fork、exec 和 setuid/setguid 事件的通知。
在 LWN ( https://lwn.net/Articles/157150/ ) 上阅读更多内容,在http://netsplit.com/the-proc-connector-and-socket-filters上阅读一篇很棒的博客文章(不是我的)。