将www-data添加到/ etc / sudoers以作为其他用户运行php-cgi的安全性影响

我真正想要做的就是让'www-data'用户能够以另一个用户的身份启动php-cgi。 我只是想确保我完全理解安全性的含义。

服务器应该支持共享主机环境,其中各种(可能不受信任的)用户通过chroot来访问服务器的FTP来存储他们的HTML和PHP文件。 然后,由于PHP脚本可能是恶意的,读/写别人的文件,所以我想确保每个用户的PHP脚本以相同的用户权限运行(而不是以www数据运行)。

长话短说,我在/etc/sudoers文件中添加了以下行,并且想通过社区运行它作为完整性检查:

 www-data ALL = (%www-data) NOPASSWD: /usr/bin/php-cgi 

这一行应该允许www-data像这样运行一个命令(没有密码提示):

 sudo -u some_user /usr/bin/php-cgi 

…其中some_user是组www-data中的用户。 这有什么安全影响?

这应该允许我像这样修改我的Lighttpdconfiguration:

 fastcgi.server += ( ".php" => (( "bin-path" => "sudo -u some_user /usr/bin/php-cgi", "socket" => "/tmp/php.socket", "max-procs" => 1, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "4", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "bin-copy-environment" => ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" => "enable" )) ) 

…让我为每个用户产生新的FastCGI服务器实例。

我build议使用php-fpm (pipe理所有用户使用一个服务器,但通常不安全,如果您使用操作码caching),或使用runit和spawn-fcgi产生后端。

然后从lighttpdconfiguration(bin-path,max-procs,bin * -environment)中删除产卵选项

在执行CGI进程之前,Apache有一个安全地允许服务器更改用户的扩展。 这就是所谓的SuEXEC

有很多需要检查,平衡和消毒,或包装将不会执行或更改用户。 这是因为有很多东西可能会出错,反过来又危及系统的安全。 我会认真的build议不要做你正在做的事情。

我以前从来没有运行Lighttpd,只是因为经过适当的调整,configuration,testing和基准testing。它可以performance得非常好。

但是, 我发现这是一个SuEXEC的实现,但是对于Lighttpd来说。

这里是一些关于如何使用它的附加文档 。

祝你好运。

你似乎在重新发明车轮(不知道车轮故障的危险)

SuPHP是你的问题的答案,据我所知可以使用lighttpd。