【问题标题】:group and owner permissions are wrong when php uploads filesphp上传文件时组和所有者权限错误
【发布时间】:2011-12-03 10:23:01
【问题描述】:

不确定这是 php 配置还是 linux 文件权限问题。我遇到的问题是,当文件通过 php 使用 move_uploaded_file() 上传到 group 设置为 ubuntuowner 的目录时设置为 www-data,上传的文件 ownergroup 权限更改为 www-data,这会导致以下问题我的 python 脚本进来并在上传的文件上执行它的任务。

示例:

move_uploaded_file($tempFile,$targetSAVE);

--$targetSAVE 目录设置为:

group: ubuntu
owner: www-data
permissions: 0755

--php上传的文件改变ownergroupwww-data

new file changes to:
  group: www-data  <-- need this set to *ubuntu*
  owner: www-data
  permissions: 0755

--python脚本需要上传文件的组设置为ubuntu

如何配置 php 以将上传文件的所有权或组设置为 ubuntu 或者如果这是一个 linux 文件权限问题,我该如何解决?

所有目录和子目录都设置为: 组:ubuntu 所有者:ubuntu 权限:0755 除了文件上传到的目录,设置为:

group: ubuntu
owner: www-data
permissions: 0755 

【问题讨论】:

    标签: php linux permissions


    【解决方案1】:

    我想我会在 PHP 脚本的末尾添加一个 chirp 指令,如果这适用于您的情况。 http://us.php.net/manual/en/function.chgrp.php

    查看 /etc/passwd 以获取“ubuntu”用户的数字 ID。

    文档中的注释:“只有超级用户可以任意更改文件的组;其他用户可以将文件的组更改为该用户所属的任何组。”

    【讨论】:

      【解决方案2】:

      发生这种情况是因为 PHP 以运行 Web 服务器的用户身份运行。实际上,您系统上的所有网站都将以此用户/组身份运行,因此都可以读取彼此的文件和由 php 脚本创建的目录。

      安装 Apache mod suPHP 可能是解决此问题的最简单方法。这将允许您以特定用户和组的身份在虚拟主机中运行 php 脚本。您也可以将 PHP 作为 CGI 运行并使用 Apache suEXEC,但设置 suPHP 有点复杂。

      或者,您应该能够将脚本中的文件 chown 到适当的用户/组,但结果是一旦您更改了这些文件的所有权,Web 服务器将无法再读取/编辑这些文件。

      【讨论】:

        【解决方案3】:

        找到了解决办法。在拉出我的头发并尝试所有其他反应之后,结果证明这很简单,这就是有效的方法。

        chown -R ubuntu:www-data /var/www/
        chmod -R 775 /var/www/
        

        之后,python 脚本从 php.ini 完美执行。

        【讨论】:

          猜你喜欢
          • 2018-05-20
          • 2011-10-06
          • 2017-06-17
          • 2018-09-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-02
          • 2013-02-05
          • 2017-01-19
          相关资源
          最近更新 更多