我希望 PHP 在需要 shell 时在给定路径上使用可执行文件,而不是在需要 shell 的每种情况下使用默认的 /bin/sh(例如 mail() 函数在 UNIX 平台上启动 sendmail,system()函数,反引号运算符等)。由于我使用 PHP 作为 apache 模块,因此我尝试更改 /etc/passwd 中 www-data 用户的 shell,因为 webserver 以该用户身份运行。那没有帮助。我还尝试使用 SetEnv 在 apache 配置中设置 SHELL 变量,但它也没有帮助。我想这样做,因为我想审核 PHP 完成的所有 shell 调用,以记录和/或拒绝/接受它们。禁用像 system() 这样的 PHP 函数不是一个选项,因为现有(无法修改)解决方案使用它。我已经用 C 编写了那个“受限外壳”,
是的,我已经问过这个与 mail() 函数相关的问题,但我意识到我需要一个非常通用的解决方案,而且它不仅与 mail() 相关,而且问题是一般的 shell 使用,在许多不同的情况。我也考虑过在 apparmor 中覆盖路径名的可能性,但我认为这是不可能的。为 apache/PHP 提供自定义 chroot“监狱”的解决方案只是为了提供不同的 shell,这对我来说似乎是一个巨大的过度杀伤情况:(
提前非常感谢!