0

我正在创建一个 Web 应用程序 (php),用于处理在实时服务器上创建 Drupal 站点。

该系统能够创建新站点并对现有站点进行一些维护。而且,由于这是一个网络托管环境,每个文件夹可能属于不同的用户。

为了正确地做到这一点,我需要让apache用户像其他用户一样运行一些命令。

我为创建新文件(并与git/ drush/etc 交互)所做的事情类似于:

$some_command = `echo "PASSWD" | sudo -u USER -S do_something 2>&1; echo $?;`;

我已经在sudoers文件上有一组命令,apache用户可以作为git用户运行。

我现在的问题是我需要让apache任何可能在服务器上拥有托管帐户的用户运行。

我的想法是在文件上创建一个apache ALL=(ALL) ALL条目。sudoers我仍然会留下所有要求用户密码的命令。

考虑到这一点,采用这种方法是否明智?如果没有,也许我可以将“全部允许”策略仅应用于拥有托管帐户的用户。如果是这样,我如何将政策范围缩小到一

谢谢


编辑:我虽然为此使用suPHP,因为它允许 apache 作为其所有者运行每个 PHP 脚本。但是我仍然需要以另一个用户身份运行一些其他命令(如在别人的主文件夹/public_html 中创建文件),所以它似乎不是一个选项。

4

1 回答 1

1

根据我们在评论中的讨论,我建议安装类似suPHP这样的东西,以便您的每个用户的脚本都归其实际用户所有,而不是 Apache。

我认为您遇到此问题是(可能)因为您希望能够从 Web 界面执行其他用户网站的管理功能。如果您有一个像apache其他用户一样可以运行脚本的通用用户,那么允许该用户自动sudo许可是一个坏主意,因为它很容易被利用来获得未经授权的访问。

为了解决这个问题,请确保您以具有修改其他人文件的权限的特殊管理员用户身份运行您的管理功能。还要确保chown您以适当的用户身份创建的任何文件,以便他们可以读/写它们。只要没有其他用户可以访问该管理员帐户或以他们的身份运行 PHP 脚本,您应该会更安全。

如果您从控制台运行管理功能,那么它应该更容易,否则只需设置一个 suPHP 用户来从 Web 运行您的主功能并使用良好的帐户凭据。

做这样的事情会更安全,并且应该允许你做你需要的一切,而不会打开不必要的东西。

于 2012-08-13T05:50:29.863 回答