【问题标题】:PHP chmod() won't change permissions to 0444PHP chmod() 不会将权限更改为 0444
【发布时间】:2011-08-04 07:00:55
【问题描述】:

我在管理控制面板中使用了一个脚本,允许用户轻松更改某些配置文件的写入权限,但我遇到了一个小问题。

有 2 个主开关,一个允许用户将文件更改为 'writable' => 0777,一个更改为 'protected' => 0444。第一个可以正常工作,但是第二个,当我运行它时,没有错误显示,就好像它已经成功更改了权限,但是在FTP中查看显示该文件实际上是0644,似乎无法成功更改为0444。有什么想法吗?

【问题讨论】:

  • 更改为 0444 对切换没有多大意义,因为您再也无法将其切换回来,因为您不再拥有写入权限。
  • PHP 可能没有权限将其更改为0444
  • 没有理由从所有者那里删除写入。如果存在,则存在一些严重的服务器配置问题。

标签: php security permissions chmod


【解决方案1】:

执行 PHP 的帐户必须拥有该文件才能修改权限。 “www-data”或“apache”是常见的用户帐户。

同时让一些敏感的东西全局可读或可写也是一个坏主意。使其可执行也是一个坏主意。你可能想要400 和chmod 500

【讨论】:

    【解决方案2】:

    我认为这种方法是错误的,php 将来总是需要写入权限才能更改任何内容,因此硬文件只读权限不是可行的方法。

    一种解决方案是使用数据库表或其他配置文件来跟踪哪些文件被锁定以及哪些文件可以更改(以及由谁更改......)。然后您可以添加 php 检查以查看某个用户是否可以更改某个文件。

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2016-01-16
      • 2016-01-20
      • 2017-05-08
      相关资源
      最近更新 更多