我可以
auditctl -a always,exit -S all -F pid=1234
要记录由pid 1234完成的所有系统调用,并且:
auditctl -a always,exit -S all -F ppid=1234
对于它的孩子们,但是我又该如何照顾他们的孙子及其子孙(当前和将来)?
我不能依靠确实改变的(e)uid /(e)gid。
(请注意,使用strace
也不是一种选择)
您可能会使用的技巧(再次,我不知道auditd的细节,现在也不能尝试):启动最高父级时指定一个特定的环境变量,并对所有设置了此变量的进程auditctl?
—
Olivier Dulac 2014年
@OlivierDulac,以某种方式标记过程(由孩子继承)是我想到的一件事。但是审核规则可以匹配的事物列表非常少(甚至没有sid,pgid ...)。也许是SELinux的,但是我不了解SELinux的第一件事。也许进程名称空间?
—
斯特凡Chazelas
也许最高的父级可以在其自己的进程组中?(en.wikipedia.org/wiki/Process_group)
—
奥利弗杜拉克
我认为也许可以在特定的容器中运行您的程序,如果可以的话。如果我正确理解了该错误线程,则应该在≥3.13的内核上工作。除此之外,除了SELinux和audit UID之外,我没有看到任何其他方法。AUID是否适用于您的用例?
—
吉尔斯(Gillles)“所以-别再邪恶了”
strace -s
^^,但后来我看到谁在问,立即知道“他已经知道了!”)... Stephane,可以吗?也许:1)使用ps的“ tree”选项构建pid列表,2)在树中列出的所有pid上启动auditctl(s)?(即,您可以同时使用多个“ pid = ....”吗?还是多个auditctl?)或“哑巴”方式:对所有内容进行auditctl,并在“ pid | pid | pid”上使用某种egrep它们出现在每一行上吗?)(caveat:我无权访问linux atm,所以我不知道信息的显示方式)