哪个命令可以让我知道我的网络摄像头是否被使用?
lsof /dev/video0是不够的。应监视主次编号为 81 和 0 的所有块设备。
LoggedFS配置文件的语法是什么?
官方文档只有loggedfs命令的使用说明和配置文件示例。好的,它是 XML,但是所有可能的标签和属性是什么?它们是什么意思?
我有一个配置文件,想了解哪些可执行文件正在使用它(如果有)。我想知道谁是这个文件的读者。
如果我watch有一些间隔,我会想念它,因为读取发生得如此之快:
watch -d -n 1 "lsof /home/me/my.conf"
Run Code Online (Sandbox Code Playgroud)
如果我尝试执行该程序,我很确定在 的支持下使用它strace,它会由于strace引入的额外延迟而失败。
strace -o /tmp/$(date +%s)_myprog.trace myprog
Run Code Online (Sandbox Code Playgroud)
我怎样才能可靠地证明myprog没有读取这个文件?
我想知道什么程序调用了特定的可执行文件,包括该可执行文件何时通过 shebang 行用作解释器。
这与了解哪个程序访问特定文件并不完全相同。例如,auditctl -w /usr/bin/myprogram告诉我程序正在由……本身执行,因为审计事件是在成功execve调用后生成的。
一种选择是用包装程序替换可执行文件,就像这样......
#!/bin/sh
logger "$0: executed by uid=$(id -u) ruid=$(id -ur) cmd=$(ps -o args= -p $PPID)"
exec "$0.real" "$@"
Run Code Online (Sandbox Code Playgroud)
但这需要移动实际文件,这是破坏性的(文件不能是只读的,它与包管理器所做的修改相冲突,等等)。如果将程序用作脚本的解释器,则它不起作用,因为 shebang 不嵌套。(在那种情况下,auditctl -w /usr/bin/interpreter确实给出了一个有用的结果,但我想要一个适用于这两种情况的解决方案。)如果/bin/sh是 bash,它也不适用于 setuid 程序,因为 bash 会删除特权。
我如何监视特定可执行文件的执行,包括将可执行文件用作 shebang 解释器,特别是记录有关调用进程的有用信息(不仅是 PPID,而且至少是进程名称或父可执行文件路径,理想情况下还有调用用户和参数)?最好不要用包装器替换文件。特定于 Linux 的解决方案很好。