2015-07-20 148 views
2

有没有办法访问php的proc_open函数的命令历史记录?我试图查看是否有任何存储的命令出于安全目的。proc_open for php的命令历史记录

+0

不是我所听说过的。 PHP不会自动保留任何正常操作的日志,只是错误和警告。 – Barmar

回答

2

PHP's proc_open()不保留任何形式的历史,也不保留exec()。然而,当你在你的代码中使用它的时候,你可以把它包装起来;但是,您必须编写自己的历史记录处理。即使shell_exec()似乎没有跟踪历史。但是,如果我们稍微忽略PHP,我们可以使用Linux的Audit Subsystem来跟踪系统上执行的所有命令。一个名为auditd的守护进程会执行此日志记录,您可以通过auditctl进行配置。 Here是关于审核子系统的更多信息,设置和使用它。

要记录执行的命令,和它们的参数,使用方法:

auditctl -a exit,always -S execve 

日志应/var/log/audit.log显示出来,或任何你的发行地方审计日志。

auditctl有许多选项可以指定记录哪些程序以及记录哪些用户的活动。

您可以使用-F euid=<UID OF PHP USER>-F uid=<UID OF PHP USER>将此限制为PHP/Apache用户。

+0

我很欣赏有关如何保存命令历史记录的信息,但我的安全问题是不想保存它。是否有任何文件说明它不跟踪历史? – Bwata

+0

@Bwata不,因为没有理由期待它会。 Shell历史文件只跟踪键入到交互式shell中的命令,而不是直接或间接在系统上运行的每个命令。 – duskwuff