【问题标题】:Permission in creating folder by cronjob and maniuplate it in website side通过 cron 作业创建文件夹并在网站端对其进行操作的权限
【发布时间】:2014-10-22 21:05:42
【问题描述】:

我有一个使用 cronjob 运行并创建一些文件和文件夹的文件,但是当以网站模式进入该文件夹时,我无法在该文件夹中创建文件或任何内容。
我认为cronjob所有者创建的文件夹是root,但是当我们想在网站模式下访问它时,我们是apache所有者,无法操作它。
创建具有 0777 权限的文件夹时,它工作正常。任何人都知道通过不将文件夹权限从 0775 更改为 0777 来解决此问题的方法吗? 谢谢。

【问题讨论】:

    标签: php linux security permissions


    【解决方案1】:

    如果您创建文件夹的 php 脚本是由 root 运行的,那么您可以 exec() chown 命令将文件夹所有者更改为 apache

    chown -R username:group /directory
    

    【讨论】:

      【解决方案2】:

      您可以将您在 cron 作业中创建的文件夹的所有者更改为您的网络用户。

      chown -R apache:apache /path/to/folder
      

      编辑: 如果您要这样做,则始终存在让网络用户能够创建文件等的安全风险。

      【讨论】:

        【解决方案3】:

        这可以通过以 Apache 所有者身份运行 cronjob 或设置创建文件的文件夹以将组所有权传播到所有创建的文件/文件夹来解决。

        以其他用户身份运行 cronjob:

        crontab -eu apache-user
        

        这将以运行 Apache 的同一用户身份运行作业,因此无需更改权限。如果文件不应该在网站前面写入,这并不理想。

        显然您需要将“apache-user”更改为运行 Apache 的用户。示例:Ubuntu 上的 www-data,CentOS 上的 apache。

        将文件夹设置为继承群组所有权,以便群组可以访问文件夹中创建的所有文件:

        chmod g+s folder-you-are-writing-to/
        

        并确保将 Apache 组设置为组:

        chgrp apache-user folder-you-are-writing-to/
        

        【讨论】:

          猜你喜欢
          • 2016-02-01
          • 2019-09-19
          • 2018-04-25
          • 2015-05-02
          • 2011-09-14
          • 2018-05-13
          • 1970-01-01
          • 2011-11-27
          相关资源
          最近更新 更多