是否可以为特定的Linux用户帐户使用服务器端PHP脚本?


Is it possible to use server side PHP scripts for Specific Linux user accounts

我选择不在SeverFault上发表这篇文章,因为这个网站似乎只适合最有经验的服务器管理员。我在MetaStackOverflow上发起了一场讨论

一段时间后,我问了一个问题,你登录什么用户当你执行服务器端PHP脚本(在我的情况下,从javascript/HTML),它是www-data。

我想知道是否可以作为另一个用户连接,即。约翰。史密斯。我想建立一个网站,其中图片/图像/文字的权限…是取自linux而不是SQL数据库(或者如果它们在数据库中,那么它们反映了实际的linux文件权限。

如果这是不可能的,或者相当于服务器异端,是否有其他解决方案,比如默认将每个用户添加到www-data组

PHP确实有安全模式,它会导致PHP以拥有脚本的人的身份运行,但我认为这不是你想要的,而且安全模式并不真正工作得很好,因为它将从PHP的某些未来版本中删除

还有一个Apache扩展,可以用来在特定用户下运行PHP脚本,但我认为它的开发已经停止了一段时间。

PHP也可以作为命令行脚本运行,在这种情况下,您可以像在linux中那样指定运行脚本的用户。

我想你可以有一个"存根"PHP脚本,运行在www-data下,并在用户用浏览器访问它时执行。该脚本将确定登录用户的身份,然后它可以使用exec()启动另一个PHP脚本来执行实际工作。您应该能够在您想要的用户下执行脚本。

请注意,这只是我的推测,我从来没有尝试过从Apache运行PHP脚本作为一个特定的用户,只有从命令行。

由于没有人以答案的形式提出这个问题,我将继续做下去。解决方案是supp。

suPHP是一个执行PHP脚本的工具,权限为他们的主人。它由一个Apache模块(mod_suphp)和一个setuid组成root二进制文件(suphp), Apache模块调用它来更改执行PHP解释器进程的uid。