我真正想要做的是允许“www-data”用户能够以其他用户身份启动 php-cgi。我只是想确保我完全理解安全隐患。
服务器应支持共享托管环境,其中各种(可能不受信任的)用户都可以通过 chroot FTP 访问服务器来存储其 HTML 和 PHP 文件。然后,由于 PHP 脚本可能是恶意的并读取/写入其他人的文件,因此我想确保每个用户的 PHP 脚本都以该用户的相同用户权限运行(而不是以 www-data 的身份运行)。
长话短说,我在我的/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 组中的用户在哪里。这会带来哪些安全隐患?
然后我应该可以像这样修改我的 Lighttpd 配置:
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 服务器实例。
答案1
我建议使用php-fpm(使用一台服务器管理所有用户,但如果使用操作码缓存,通常不安全),或者使用运行和spawn-fcgi。
然后从 lighttpd 配置中删除生成选项 (bin-path、max-procs、bin*-environment)
答案2
答案3
你似乎在重新发明轮子(却没有意识到有缺陷的轮子的危险)
SuPHP 可以解决您的问题,而且据我所知,它可以与 lighttpd 一起工作。