我有一些小朋友用来托pipe个人网站的小型networking服务器。 偶尔他们需要为web服务器(www-data)写入的上传文件build立一个文件夹。 是否有一个安全的方式允许一个调节性用户(不是sudoers)设置一个他们不是成员的特定组?
对我来说,这似乎是一个危险的select,但我可能必须允许。 所以我对安全的方式感兴趣。 编写我自己的脚本,并允许用户sudo它可能不安全。 我想尝试使用最佳实践,而不仅仅是允许sudo chgrp,除非这确实是安全的。
一些要求*只能更改服务器的特定区域中的文件*只能更改两个和特定组*不能被黑客攻击,以允许特权升级或其他安全问题。
以特定用户身份运行PHP FastCGI可能是一个很好的解决scheme,但是如何确保安全且安全地设置?
如果你的用户的网站是在虚拟主机中分离的,在大多数情况下,一个简单而安全的方法是使用apache2-mpm-itk,它允许将每个单独的虚拟主机约束到一个特定的系统用户/组。
在安装apache2-mpm-itk之后,在apacheconfiguration的一部分添加这些行:
<virtualhost foobar.com:80> ... <IfModule mpm_itk_module> 分配用户ID用户ID </ IfModule>configuration </虚拟主机>
这样,vhost中的php / perl / python脚本也可以用普通的用户和权限运行。
我们可以做的一件事是使用suexec来指定每个人的PHP脚本在他们自己的用户或组帐户下运行。
为此,您还需要将PHP作为FastCGI模块运行,并在Apache下运行mod_fcgid(提示:您也可以使用Apache的Worker MPM)。 安装有点棘手 – 你需要包装脚本(你可以使用suphp解决这个问题,但是我没有尝试过)。
我拥有它,以便PHP(和所有CGI进程)以www-data:<username>
。 然后,如果用户希望能够将PHP上传到自己的文件夹,他们可以自己设置组写标志。
或者只是运行PHP作为<username>:<username>
,他们甚至不必这样做。