Ale*_*lan 9 php permissions vps file-permissions apache-2.2
我对 Web 开发比较陌生,所以请耐心等待。
我主要是 iPhone 开发人员,但最近使用共享主机为其他人创建了一个站点。我可以在该站点上用 PHP 写入文件,而无需考虑权限。
我正在为我正在制作的新应用程序部署 Web 服务,但进展并不顺利。这里最重要的区别是我使用的是其他人的服务器,并且只有 FTP/DB 访问权限。
基本上,我有很多 PHP 文件构成了我的 CMS,如下所示:
mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php
Run Code Online (Sandbox Code Playgroud)
然后这些脚本编辑数据库或文件。他们可以很好地与数据库交互,但是,我的脚本无法写入文件系统。例如,他们可能会尝试写入以下文件:
mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt
Run Code Online (Sandbox Code Playgroud)
这在我的 MAMP 安装(本地)上运行良好,但是一旦部署到服务器,每次尝试写入时 PHP 都会出现错误......
无法打开文件“../data/img/someimage.png”进行写入。
所以我给运行服务器的人发了电子邮件,他回来说:
它在公共许可下工作吗?(777)
而且,确实如此 - 但我对使用公共权限非常谨慎,因此立即再次禁用它。我给他发邮件说“我怎样才能让我的 PHP 脚本使用标准用户权限来编写”,他说:
把它公开,就没事了
我认为这是域解析中某处的 ip 冲突,但我并不担心。
然后我给他发电子邮件说“这肯定是不安全的”或类似的话,他回复如下:
现实情况是,有数百万个网站,包括我管理的几个网站,它们在各种文件夹中都有 777 个,这只是一种生活方式。
谁能给我一些我可以给他的解决方案的想法?或者我可以做些什么来避免使用 777?我真的不喜欢我的网站/服务上的任何文件夹都可以公开写入的想法。
我非常感谢您的建议,因为我对 Web 服务器知之甚少。
Sve*_*ven 18
Leave it as public, it'll be fine
I reckon it's an ip conflict somewhere in the domain resolution,
but I'm not worried about it.
Run Code Online (Sandbox Code Playgroud)
这家伙是个白痴,这完全是胡说八道。访问权限与IP地址或域解析无关,他只是随便说说而已。
鉴于此“管理员”的素质,我建议将您的网站托管在其他地方,因为该网站的管理很可能非常糟糕且不安全。只是777对某事授予权限以使其有效,这肯定表明他对自己在做什么有点不了解。
真正需要哪些访问权限取决于系统的使用和配置方式,如果不知道这一点,很难告诉您一些事情。
Ril*_*ndo 13
您需要运行脚本的用户读取、执行和写入目录,所以它应该是:
7 = (r)ead,(w)rite,e(x)ecute
属于同一组的其他用户应该可以执行目录中的 php 文件,但不能写入(原因很明显);他们不一定需要阅读 PHP 文件。因此,我们只需要提供执行权限:
1 = e(x)ecute
对大众也是一样。事实上,这就是需要查看php和静态文件的外部用户所需要的:
1 = e(x)ecute
所以最低限度应该是:
711
我用自己的配置确认了上述设置,所以它应该可以工作;但是,这是在默认网络用户下。如果您使用 www 以外的登录名上传,则文件和目录可能位于不同的用户下。在这种情况下,默认 Web 用户可能无法读取或写入您拥有的文件。此时,您可能需要将默认 Web 用户添加到您的组中(系统管理员必须这样做),然后为属于该组的用户授予读取、写入和执行权限:
771
这可能会奏效。要么,要么让系统管理员将这些文件的用户和组所有权更改为默认的 Web 服务器用户(但不是权限!)。如果这仍然不起作用,权限的示例输出(类似于“目录中的 ls -la”)将帮助我们进一步解决此问题。也就是说,只要您只需要向公众授予执行权限(或“其他”),从安全的角度来看你应该没问题。
| 归档时间: |
|
| 查看次数: |
732 次 |
| 最近记录: |