【问题标题】:File permissions文件权限
【发布时间】:2011-03-29 02:43:30
【问题描述】:

大家好,我有一个关于文件权限的问题。

我创建了一个日志文件,可以说“logfile.log”,它捕获某些错误,现在为了使其可写,我将其权限设置为 777。但是当我这样做时,任何人都可以读取它通过他们的浏览器。

我将如何解决这个问题?

谢谢

【问题讨论】:

  • 把它放在不在网络服务器路径上的地方? IE:把它放在 PHP 可以访问的 /var/log/mywebserver/logfile.log 中,但不能访问 apache 网络服务器? ~~也就是说,你有没有尝试过这种方法?
  • 我什至不知道我可以将任何文件放在网络服务器之外的主机中,感谢您的提示!
  • ~ 好吧,这取决于您的服务器是如何设置的……您使用的是托管提供商吗?你应该和他们核实一下有什么可用的。但他们可能不会抱怨在 /var/log 上为您打开日志文件(如果它是托管的)。 (提示:添加@drachenstern 会使我更快地看到您的评论,就像我如何将@chicane007 放在此评论的开头,只是一个欢迎您如何提示...欢迎来到 StackOverflow...) : 你见过serverfault.com 吗?
  • @drachenstern 感谢您的欢迎!我还有一个问题想问您,您认为驻留在网络服务器上的 PHP 文件的正确“默认”文件权限设置是什么?它是否应该由所有者严格阅读,仅此而已?
  • 取决于您所追求的...我也鼓励您在serverfault.com 上提出这个问题,因为我认为该问题在该社区中得到了最好的回答。这个社区是关于使用代码编写应用程序的,一个是关于管理服务器的。但要回答您的问题,最好的默认设置是允许网络服务器用户(例如 apache 或 apacheuser,但不是 root 用户)读取大多数文件、写入一些文件并执行更少的文件。但这是每个文件的决定。大多数其他用户只读或根本不阅读(他们可以在线阅读,对吗?);)

标签: php security file-permissions


【解决方案1】:

您的日志文件不应位于您的网络服务器提供的目录中。

此外,模式 777 使您的日志文件可写入系统上的任何人,并使其可执行。更理智的模式是 644,或者 600 更偏执一点(实际上是两位)。

【讨论】:

  • 好的,我把这个文件放在网络服务器目录之外,但似乎只有 777 不会写入那个文件,知道为什么会发生这种情况吗?如果我尝试 644 或 600,文件就不会被写入...谢谢!
  • 这不应该发生。对于运行 PHP 的用户,日志文件的目录是否可写和可执行?
  • 是的,目录被设置为所有者可写、可读和可执行的,只有当它设置为“其他人”可写时,才能写入其自身的文件,无论所有者或组是可写是无关紧要的......
  • FYI 对于任何其他有此问题的人....阿帕奇网络服务器。因此,它以用户名“nobody”运行,您拥有的任何文件都需要相应地设置权限,以允许其他用户写入这些文件。如果你实现了 php-cgiwrap,那么你所有的 php 都将作为你的实际用户名运行,而不是“nobody”,这将允许 php 修改你拥有的文件,而无需设置像 777 这样的开放权限。
  • @chicane007 ~ 原因是我在上面的评论中回复,然后再阅读这个答案。它与访问这些文件的帐户的权限有关。最好按照您的需要配置您的 PHP,因此请使用 serverfault 并让这些人帮助您...
猜你喜欢
  • 2015-06-02
  • 2012-08-06
  • 2011-04-21
  • 2012-07-31
  • 2011-08-12
相关资源
最近更新 更多