【发布时间】:2012-10-09 15:48:07
【问题描述】:
有没有办法禁用shell_exec,除了某些可以列入白名单的命令?
我想我可以随时进入并将这些命令放入mod_sec,这是我不想运行的主要命令。但是这样的配置是不够的。我想禁用shell_exec,但允许shell_exec 仅使用某些命令运行,确切地说是两个。
我正在运行 CentOS、Cpanel 和 PHP 5.2.17。
【问题讨论】:
-
系统管理员 (root) 通常可以配置用户 shell 中可用的命令。 PHP 将使用运行它的用户创建 shell,所以我看不出有什么理由不应该这样做。到目前为止,您尝试过什么?
-
如果您只想允许 2 个特定命令,为什么不对其进行硬编码并抽象出调用它们的机制,这样您就不会将用户输入直接传递给
shell_exec()? CentOS、cpanel 和 PHP 5.2.17 闻起来像老式的 WHM 安装,对于这样的东西可能很难配置,除非您是服务器管理员,否则您将无法自己完成。 -
SE Linux 的 HTTPD 上下文也可能有用:en.wikipedia.org/wiki/Selinux
-
到目前为止,除了 php.ini 中的
disable_functions之外,我还没有尝试过任何东西。这就是为什么我想知道是否有可能只为整个服务器启用某些命令。我是 root,旧的 WHM 安装不,PHP 有点旧,因为 5.3 仍然存在我们尚未升级的错误。但是 WHM 和 Apache 都是最新的。我在谷歌上到处搜索,但没有找到任何东西。 -
不,
disable_functions是关于 PHP 函数的,而不是您可以通过 通过shell_exec访问的函数。这些命令在操作系统(或者更准确地说是要创建的 shell 环境)的控制之下。我不知道存在一个现成的解决方案,您可以使用它来扩展 PHP,以便可以在 PHP 中配置这样的功能。
标签: php linux shell-exec