我想在文件执行时记录信息,并希望跟踪该信息。当通过 ssh 终端执行文件时,记录时间戳和 IP 地址等信息的最佳方法是什么,而不是在文件中编写 php 脚本以将其记录在文本文件或数据库中。
答案1
有审计系统,在 Linux 中。首先下载并安装审计包,请确保 auditd 守护进程已启动,然后您可以通过审计控制命令,它附带审计包。一个典型的命令是
auditctl -a exit,always -w /path/to/file
这- 总是有出口选项指示内核在最后检查(出口)每个系统(总是) 是否对相关文件进行了任何类型的修改。然后,审计事件将记录在/var/log/audit/audit.log(至少对于我使用的发行版而言,YMMV)。
答案2
这取决于您的目的,但创建包装脚本很容易 - 例如在 BASH 中记录执行时间。
您可能很难获取 IP 地址,因为一旦用户登录,BASH 就不会保留 IP 地址的记录。您可能能够通过解析“who”并获取与用户关联的 IP 地址来获取此信息,但这可能会对用户做出错误的假设。
您还可以设置一个特殊用户或 shell,记录用户的操作并限制他们。或者,您可以修改“prompt”脚本($PS1 变量)以记录发出命令的时间。
最后,根据您的发行版(和痛苦耐受力),您可能能够使用 SELinux 或 Apparmour 来记录某些文件的执行时间。