【问题标题】:Is it possible to use server side PHP scripts for Specific Linux user accounts是否可以为特定 Linux 用户帐户使用服务器端 PHP 脚本
【发布时间】:2011-11-04 06:02:26
【问题描述】:

我选择不在 SeverFault b/c 上发布此内容,该站点似乎仅适用于最有经验的服务器管理员。我在MetaStackOverflow开始讨论它

不久前,我向question 询问了您在执行服务器端 PHP 脚本(在我的情况下,来自 javascript/HTML)时登录的用户,它是 www-data。

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

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

【问题讨论】:

  • 如果您出于安全原因尝试这样做,那么您就错了。想象一下,如果坏人欺骗您的系统并获得具有超级用户权限的用户..

标签: php file-permissions user-accounts


【解决方案1】:

PHP 确实具有安全模式,这会导致 PHP 以拥有正在运行的脚本的任何人身份运行,但我认为这不是你想要的,因为安全模式并不能很好地工作,无论如何它应该被删除来自未来的 PHP 版本

还有一个 Apache 扩展可用于在特定用户下运行 PHP 脚本,但我认为它的开发在不久前就停止了。

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

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

请注意,这只是我个人的猜测,我从未尝试过以特定用户身份从 Apache 运行 PHP 脚本,只是从命令行运行。

【讨论】:

  • 命令行脚本听起来很有希望,但如果有人以 root 身份运行他们的脚本,这不是一个严重的安全问题吗?
  • 是的,它会,这就是为什么您要使用 Linux 提供的标准工具集来以您想要运行脚本的用户身份运行脚本。
  • 您能否提供一个链接,或者至少提供此用户规范的名称? PHP 手册页没有提及此类
  • php.net/manual/en/function.exec.php#56274 建议了一些从 exec 中使用 sudo 的技术,您可以使用 sudo 运行您的工作脚本以使其以您想要的用户身份运行。小心密码泄露等。
  • @GirdonM 我想你在想suPHP btw。
【解决方案2】:

由于没有人以答案的形式提出这个建议,我会继续这样做。解决方案是suPHP

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

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2012-10-08
    • 2021-10-03
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2017-06-18
    相关资源
    最近更新 更多