【问题标题】:Another file permissions problem另一个文件权限问题
【发布时间】:2010-08-14 14:47:20
【问题描述】:

我有一个分类网站,当用户发布新的分类时,他们可能会选择上传图片。

我的 php 代码获取选择的图像,将其上传到图像文件夹,并相应地命名。

这里的问题是,我必须将图像文件夹设置为 777 才能正常工作。

我的问题是,权限应该设置为什么?如果不是 777,有什么想法为什么它不起作用?

如果您需要更多信息,请告诉我...

谢谢

更新

我有一个具有 root 访问权限的用户 (danny)... 图片上传到的文件夹以及发挥作用的“image_upload.php”文件归用户“danny”所有。然后我只是尝试将它们设置为 chmod 764,但是当我这样做时,我遇到了问题。

看,我似乎必须为“公共”设置 r+w+e 权限才能正常工作。

不知道为什么……

再次感谢

【问题讨论】:

    标签: php javascript linux security image


    【解决方案1】:

    忘记启示录吧,777 是野兽的真实号码 :-)

    您应该几乎永远需要以这种方式设置权限。当然,您的图像是在 php 等单个用户 ID 下的目录中创建的。

    如果是这种情况(应该是),您只需将该用户添加到该目录的特定组并允许组写入访问,764 最有可能,尽管最后一位可能会根据其他需要而改变.

    您可能可以通过更改上传脚本来确定哪个用户正在运行:

    system ("id >/tmp/id.txt")
    

    或任何在 PHP 中用于运行命令行工具的等价物。

    然后查看/tmp/id.txt 文件以获取详细信息。你会有类似的东西:

    uid=1000(php) gid=1000(phpgrp) groups=1000(phpgrp)
    

    一旦找到 (php),找出该 images 目录的组:

    pax> ls -ald images
    drwxr-xr-x 4 pax paxgrp 4096 2010-06-14 16:38 images
    

    这将是上述记录中的paxgrp。然后确保将php 用户添加到paxgrp 组。这通常可以在/etc/group 中通过更改来完成,例如:

    paxgrp:x:1027:bob,george
    

    进入:

    paxgrp:x:1027:bob,george,php
    

    然后确保目录权限允许组(但世界)写入。


    而且,根据您的更新,谁拥有您的 PHP 文件实际上并不重要,只是谁在 运行它,这可能不是danny at全部。

    否则,我可以删除硬盘上的 任何 文件,因为 rm 归根用户所有 :-)

    确定该用户的最快方法是更改​​该文件,使其按照我的建议输出id 信息。

    【讨论】:

    【解决方案2】:

    以及为什么它不起作用的任何想法?

    除了权限之外,请确保指定正确的设置:

    • file_uploads
    • upload_max_filesize
    • memory_limit
    • max_execution_time
    • post_max_size

    见:

    还要确保:

    • 您在form 中指定了enctype="multipart"
    • print_r($_FILES);检查文件数组

    【讨论】:

    • 好的,谢谢。我会这样做,虽然大部分都完成了......但我不明白为什么上传工作的权限必须是 777。
    【解决方案3】:

    这里的答案很好,我只是想添加另一种可能性。您提到用户“Danny”具有 root 访问权限,并且此 Danny 拥有文件/目录。使用非 CLI PHP 脚本,Web 服务器用户应该拥有该脚本,然后您不需要公众能够读写和执行(老实说,如果您做得对,您应该能够设置权限700 并且仍然可以 - 尽管它通常不会受到限制)。

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 2014-10-13
      • 2011-09-17
      • 2018-10-30
      • 2017-04-12
      • 2013-08-27
      • 1970-01-01
      相关资源
      最近更新 更多