允许用户 chgrp 到 www-data 的安全方法

允许用户 chgrp 到 www-data 的安全方法

我有一个小型网络服务器,一些朋友用它来托管个人网站。有时他们需要创建一个文件夹用于上传文件,网络服务器可以向其中写入文件(www-data)。有没有一种安全的方法可以让普通用户(不在 sudoers 中)设置他们不属于的特定组?

对我来说,这似乎是一个危险的选项,但我可能不得不允许。所以我对安全的方法很感兴趣。编写自己的脚本并允许用户 sudo 它可能不安全。我想尝试使用最佳实践,而不仅仅是允许 sudo chgrp,除非这真的很安全。

一些要求 * 只能更改服务器特定区域中的文件 * 只能更改两个特定组 * 不能被黑客入侵以允许权限提升或其他安全问题。

以特定用户身份运行 PHP FastCGI 可能是一个很好的解决方案,但我如何确保安全可靠地设置?

答案1

如果您的用户网站在虚拟主机中是分开的,那么在大多数情况下,一种简单而安全的方法是使用 apache2-mpm-itk,它允许将每个单独的虚拟主机限制为特定的系统用户/组。

安装 apache2-mpm-itk 后,在 apache 配置的一部分添加以下行:

<虚拟主机 foobar.com:80>
        ...
        <IfModule mpm_itk_module>
        分配用户 ID 用户 ID 组 ID
        </IfModule>
</虚拟主机>

这样,vhosts 中的 php/perl/python 脚本也可以以常规用户和权限运行。

答案2

你可以做一件事,而且我就是这么做的,那就是使用执行指定每个人的 PHP 脚本在他们自己的用户或组帐户下运行。

要做到这一点,您还需要将 PHP 作为 FastCGI 模块运行,并在 Apache 下运行 mod_fcgid(提示:您也可以使用 Apache 的 Worker MPM)。安装有点棘手 - 您需要包装器脚本(您可能能够使用 suphp 来解决这个问题,但我还没有尝试过)。

我让 PHP (和所有 CGI 进程) 以 身份运行www-data:<username>。然后,如果用户希望能够将 PHP 上传到他们自己的文件夹,他们只需自己设置组写入标志即可。

或者只需运行 PHP,<username>:<username>他们甚至不需要这样做。

相关内容