我的服务器管理员希望我在目录上设置公共写入权限

Modified on: Mon, 26 Aug 2019 01:00:02 +0800

我对网络开发比较陌生,所以请耐心等待。

我主要是一名iPhone开发人员,但最近为其他人使用共享主机做了一个网站。我可以在该网站上用PHP写文件,而不必考虑权限。

我正在为我正在制作的新应用程序部署Web服务,但实际上并不顺利。这里最重要的区别是我正在使用其他人的服务器,并且只能访问FTP / DB。

基本上,我有一大堆PHP文件构成了我的CMS,如下所示:

mysite.com/admin/manage_news.php mysite.com/admin/manage_events.php

然后这些脚本编辑数据库或文件。他们可以很好地与DB交互,但是,我的脚本无法写入文件系统。例如,他们可能会尝试写入以下文件:

mysite.com/data/img/event_1.png mysite.com/data/somefile.txt

这在我的MAMP安装(本地)上工作正常,但是一旦部署到服务器,PHP每次尝试写入时都会发出错误......就像这样:

  

无法打开文件“../data/img/someimage.png”进行写作。

所以我给那个正在运行服务器的人发了电子邮件,他回来说:

  

是否符合公众许可? (777)

并且确实如此 - 但我对使用公共权限非常谨慎,因此请立即禁用它。我通过电子邮件向他说“如何使用标准用户权限编写我的PHP脚本”,他说:

  

将其公之于众,

  
  

我认为在域名解析中某处存在IP冲突,但我并不担心。

然后我给他发了电子邮件说“肯定这是不安全的”或者其他类似的东西,他回复了以下内容:

  

现实情况是,有数百万个网站,包括我管理的几个网站上有777个网站,这只是一种生活方式。

有人能给我一些我可以给他的解决方案吗?或者我可以做些什么以避免使用777?我真的不喜欢我的网站/服务上任何文件夹的想法是公开可写的。

我非常感谢您的建议,因为我对网络服务器知之甚少。

作者:,Alex Coplan

最佳答案

让我们分解

您需要运行脚本的用户在目录上读取,执行和写入,因此它应该是:

7 =(r)ead,(w)rite,e(x)ecute

属于同一组的其他用户应该能够在目录中执行php文件,但不能写入它(出于显而易见的原因);他们不一定需要阅读PHP文件。因此,我们需要提供执行权限:

1 = e(x)ecute

对公众而言。事实上,对于需要查看php和静态文件的外部用户来说,这就是所需要的:

1 = e(x)ecute

所以最低限度应该是:

711

我用自己的配置确认了上面的设置,所以它应该可以工作;但是,这是默认的Web用户。如果您使用www以外的登录名进行上传,则文件和目录可能位于不同的用户之下。在这种情况下,默认Web用户可能无法读取或写入您拥有的文件。此时,您可能需要将默认Web用户添加到您的组(sysadmin必须这样做),然后为属于该组的用户提供读取,写入和执行权限:

771

这可能会奏效。要么是,要么让sysadmin将这些文件的用户和组所有权更改为默认的Web服务器用户(但不是权限!)。如果仍然不起作用,权限的示例输出(类似“目录中的ls -la”)将帮助我们进一步解决这个问题。那就是说,只要您只需要向公众提供执行权限(或者“其他”),从安全的角度来看,你应该没事。

作者:,Rilindo

相关问答

添加新评论