首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是PHP安全模式GID?

什么是PHP安全模式GID?
EN

Stack Overflow用户
提问于 2008-08-11 15:12:53
回答 3查看 4.8K关注 0票数 8

根据PHP安全模式文档 on safe_mode_gid:

默认情况下,安全模式在打开文件时进行UID比较检查。如果您想将其放松到GID比较,那么打开safe_mode_gid。是使用UID (FALSE)还是GID (真)检查文件访问。

对于运行在web服务器上的PHP脚本,UID (用户标识符)检查和GID (组标识符)检查有什么不同?

EN

回答 3

Stack Overflow用户

发布于 2008-08-11 16:05:07

这只会让你在你的web服务器设置上有更多的灵活性。使用safe_mode_gid,您应该能够为系统上的每个用户运行单独的PHP/httpd进程,但只要它们都作为同一个组(GID)运行,并且共享文件属于这个组,那么每个进程就可以读取一些共享文件。

票数 2
EN

Stack Overflow用户

发布于 2008-08-11 15:30:23

安全模式UID检查用于防止用户访问其他人文件。GID用于防止一组用户访问其他组文件。

票数 1
EN

Stack Overflow用户

发布于 2010-09-23 11:48:18

大多数答案都不完全正确或详细..。不要忘记safe_mode检查脚本所有者是否与要访问的文件所有者匹配。它与httpd用户:group无关。

例如,httpd可以以apache:daemonsome_user:users拥有的脚本和要写入some_other_user:users的文件的形式运行。

如果不激活safe_mode_gid,脚本将无法访问该文件,因为用户不匹配。

这是一个常见的现象,当脚本创建一个文件夹,然后尝试在这个文件夹内创建文件。

文件夹创建成功是因为父文件夹与创建父文件夹的脚本拥有相同的用户(很可能是由“some_user”上传的)。

但是,创建的文件夹现在由httpd用户拥有,比方说apache:daemon

如果safe_mode是活动的,您将无法在这个文件夹中创建一个文件,因为脚本所有者(some_user)与文件夹所有者(apache)不匹配。

即使激活了safe_mode_gid,它也不能工作,因为脚本组是“用户”,而文件夹组是“守护进程”。

最好的解决方案是为ftp用户和httpd设置相同的组。不要忘记,您也必须允许对“可写”文件夹中的组进行写访问,这也不太安全,因为由于您的所有用户都在同一个组中,因此httpd进程可以访问其他用户文件,因为您激活了safe_mode_gid

实际上,您应该将safe_mode_gid + open_basedir组合起来,并将用户的主页设置为open_basedire值,以避免出现这种情况。

HTH

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

https://stackoverflow.com/questions/7851

复制
相关文章

相似问题

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