【问题标题】:Can I use php's fwrite with 644 file permissions?我可以使用具有 644 文件权限的 php 的 fwrite 吗?
【发布时间】:2010-05-19 20:35:16
【问题描述】:

我正在尝试设置自动 .htaccess 更新。这显然需要尽可能安全,但是现在我能做的最好的文件权限是 666。

我可以做些什么来设置我的服务器或 php 代码,以便我的脚本的 fwrite() 命令可以在 644 或更好的情况下工作?例如,有没有办法将我的脚本设置为以所有者身份运行?

编辑:
我意识到我实际上只是遇到了权限问题,您应该可以使用fwrite 644 权限没问题。请参阅下面的答案。

【问题讨论】:

    标签: php .htaccess file-permissions fwrite


    【解决方案1】:

    apache 进程应始终以apache:apache 运行 - 如果您必须在可执行(即 DocumentRoot)目录中启用写入权限,请创建一个组、添加 apache 并设置组写入权限(因此 664)。

    最好让.htaccess 由 cron 脚本从数据库读取配置数据进行更新,因为如果您的代码中的漏洞允许恶意用户向这些目录写入新文件,则不赞成授予 apache 对可执行目录的写入权限目录。

    【讨论】:

    • +1 用于 cron。但如果他在共享服务器上,将 apache 设置为组几乎会使他的文件处于原始风险的 99%。
    • 我对使用 cron 作业不太熟悉...例如,当管理员点击我的 php 页面上的“更新 .htaccess”按钮时,我是否能够执行 cron 脚本?还是只能将它们设置为按时间间隔执行,例如每小时、每天、每月等?顺便说一句,我在专用主机上。
    • 是的,cron 是一个“基于时间的作业调度程序”。您可以将 cron 设置为每分钟(或两分钟)运行一次,并使用指令代码(更安全)或要放入 .htaccess 的实际代码(不太安全)检查 db 表中的条目。 cron 示例:en.wikipedia.org/wiki/Cron
    【解决方案2】:

    您不能更改进程的所有者。如果您在共享服务器上,请查看他们是否有 suPHP 作为选项。

    【讨论】:

      【解决方案3】:

      这些建议很棒,但我最终意识到我的问题的答案是是的 - 你根本不需要做任何事情...... 只要所有者您尝试写入的文件/目录的用户与运行脚本的用户相同。 我的错误是我不小心让我的文件所有权不正常,因此需要更高的权限 666 和 777 才能写入到我的文件。这是有道理的,因为 Wordpress 可以使用标准权限写入 .htaccess。

      现在我设置了一个以user1 运行的文件正在写入user1:user1 拥有的文件,并且没有任何问题。目录设置为 755,.htaccess 文件设置为 644。

      【讨论】:

        猜你喜欢
        • 2018-03-05
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 2017-04-27
        • 2014-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多