gpt4 book ai didi

php - 通过 PHP 使用 sudo 执行 shell 命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:54 24 4
gpt4 key购买 nike

到目前为止,我的搜索显示了在尝试从 PHP 中执行 sudo 命令时会产生的潜在安全漏洞。

我当前的问题是我需要通过 PHP 的 exec() 函数在我的工作 Web 服务器上以 sudo 的形式运行 bash 脚本。我们目前拥有不到 200 个网站。将执行此操作的网站被限制为只能从我办公室的 IP 地址访问。这会消除任何可用解决方案带来的任何潜在安全问题吗?

其中一种方法是将 apache 用户添加到 sudoers 文件,我认为这将适用于整个服务器,因此仍然会在所有其他网站上造成问题。

有没有什么解决方案在我们办公室限制访问的网站上使用时不会构成安全威胁?

提前致谢。

编辑:简要背景

下面是我要实现的目标的简要说明。我工作的公司为旅游相关业务开发网站等。在创建新网站时,我需要设置一个托管包,其中包括:为新站点创建目录结构,创建一个包含在 httpd.conf 中的 apache 配置文件,添加一个新的 FTP 用户,创建一个新的与网站 CMS 一起使用的数据库等等。

目前我在服务器上有一个 bash 脚本,它创建目录结构、添加用户、创建 apache 配置文件并优雅地重新启动 apache。这只是一部分,我想要做的是在 PHP 脚本中使用这个 shell 脚本,以一种易于使用的方式自动化整个网站生成过程,为其他同事提供一般效率。

最佳答案

您至少有 4 个选项:

  1. 将 apache 用户添加到 sudoers 文件(并限制它运行一个命令!)
    • 在这种情况下,您的 php-apps 中的一些安全漏洞也可能会运行脚本(例如,如果它们可以包含调用 php - 或者甚至通过使用另一个也调用脚本的 url mod_rewrite 来绕过对您的 ip 的限制)
  2. s 位标记脚本
    • 危险,不要这样做。
  3. 运行另一个仅绑定(bind)到本地接口(interface)且无法从外部访问的 Web 服务器
    • 这是我的首选解决方案,因为调用 php 的链接可以通过来自主网络服务器的链接访问,并且安全性可以单独处理。您甚至可以为此服务器创建一个新用户。一些简单的服务器可以完成这项工作,例如 python 和 perl 的服务器模块。甚至没有必要在您的 php 安装中启用 exec!
  4. 运行守护进程(例如 inotify,以监视文件事件)或读取某些文件或数据库条目的 cronjob,然后运行命令
    • 这可能太复杂并且有缺点,即守护程序无法检查哪个脚本生成了条目。

关于php - 通过 PHP 使用 sudo 执行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com