首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何作为单独的用户运行PHP,特别是包括文件访问权限

问如何作为单独的用户运行PHP,特别是包括文件访问权限
EN

Stack Overflow用户
提问于 2020-06-06 03:28:27
回答 1查看 87关注 0票数 0

应用程序按用户生成数据。每个用户都具有唯一的用户id和相关联的唯一文件权限。用户文件存储在各个目录中,每个目录上都有关联的用户权限。

这些要求是提供安全的个人用户访问只通过门户用户的文件,假设PHP。正在考虑的一种设计是模拟门户环境中的目录结构和权限。如果可以以用户身份运行PHP,则可以使用系统权限访问安全性。(这会将安全实现的范围限制到登录过程,而不是应用程序。)

问:是否可以以用户身份运行PHP并假定用户的文件权限?

研究已经发现了一些类似的问题,但不是以单个用户的身份运行PHP的直接问题。

EN

回答 1

Stack Overflow用户

发布于 2020-06-06 03:57:17

从最好到最差,有几种解决方案:

  1. 使用FPM之类的工具来配置单独的进程池,这些进程池被配置为以每个用户的身份运行。只有在用户数量固定的情况下,
    • 才会成为otherwise.
    • Basically shared hosting.

的配置/管理噩梦

​

  1. 完全停止依赖操作系统级别的用户和权限强制,并将其构建到您的应用程序中。
  2. 使用PHP语言创建您自己的权限强制抽象层。
    • 基本上是#2,但没有了第一部分,这实际上使它更具complicated.

​

  1. 使用posix_seteuid()和posix_setegid()更改正在运行的进程的有效UID和GID。

“等等!”我听到你说,“最后一个选项似乎正是我需要的!为什么它是最糟糕的?”

因为为了更改进程的UID或GID,该进程必须首先以被允许这样做的用户身份运行。该用户是root用户。

以根用户身份运行PHP是一个巨大的安全漏洞,即使只是为了跳转到不同的UID/GID。即使是最小的bug或缺陷现在也已经结束了,如果你正在编写一个文件管理器,这一点就会成倍增加。

“这很好,”您反驳说,“这只供受信任用户内部使用,所以我不担心安全性。”

不是的。坏的。用卷起来的报纸砸你

绝不可能。信任。用户。

充其量他们永远不会故意破坏或损害你的应用程序,但是:

  1. 这种观点充其量是天真的。
  2. 宇宙正在不断制造新的和创新的idiot.
  3. Smart,形式善意的笨蛋喜欢寻找“解决办法”,这样他们就不必费心了,you.
  4. Compromised客户端机器是一个错误的threat.
  5. Assuming,你的内部网络不会受到损害,永远不会是一个错误。请参阅#4
  6. 安全审计员将您钉死在十字架上。

这份清单还在继续。

TL;DR:,除非您正在设置每个用户的vhosts/站点/应用程序。将文件存储在docroot之外,并使用选项#2通过PHP访问。如果有人抓到您以root身份运行PHP,您将会有一段很糟糕的时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62222849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档