【问题标题】:how to permission uploaded file correctly如何正确许可上传的文件
【发布时间】:2014-01-15 17:22:42
【问题描述】:

我有一个上传脚本,可以将 zip 文件上传到我网站上的目录,然后解压缩文件并为每个上传的文件创建一个目录。

drwxrwxrwx   7 Fabulous  admin    238 12 Jan 18:20 .
drwxrwxrwx  39 Fabulous  admin   1326 12 Jan 12:28 ..
-rwxr--r--@  1 Fabulous  admin  15364 12 Jan 18:21 .DS_Store
drwxr-xr-x   4 nobody    admin    136 12 Jan 18:20 2012_06
drwxr-xr-x   4 nobody    admin    136 12 Jan 18:20 2012_07
-rwxr--r--   1 Fabulous  admin   2904 31 Oct 16:11 index.php

我有另一个运行的 php 脚本,它复制由上传脚本创建的目录 2012_062012_07 中的文件。一切都通过浏览器正常工作。但是我正在尝试通过命令行使用 unix 命令行调用脚本来自动化该过程。

问题是如果我使用以下命令将目录的所有权更改为 Fabulous,则脚本会运行

cd upload

sudo chown -R Fabulous:admin .

但是,当我这样做时,我的上传脚本 index.php 不再具有将文件上传到上传目录的权限,除非我将所有权更改回无人值守。

错误信息

警告: 重命名(/htdocs/data_vis/upload/2012_06/Audit_Log.csv,htdocs/data_vis/data_out/2012_06_Audit_Log.csv):权限被拒绝 /htdocs/data_vis/rename_files_in_sdir_with_sdir_name_prefix.php 在第 27 行

欢迎对我应该做什么或通过许可或任何其他方法解决此问题的正确方法提出任何建议/建议或修复。提前致谢。

【问题讨论】:

    标签: php unix file-upload


    【解决方案1】:

    要么将它们都添加到一个组中,要么将文件归nobody所有,然后将组归Fabulous所有,你不需要它是管理员,root可以访问所有内容

    最简单的方法是使用粘性位来确保组保持不变

    如果 /path/to/dir 归正确的组所有

    chmod g+s /path/to/dir

    将使/path/to/dir 下的所有新文件夹(例如/path/to/dir/1)与/path/to/dir 属于同一组,而不是用户默认组

    https://superuser.com/questions/102253/how-to-make-files-created-in-a-directory-owned-by-directory-group

    那么您的 Web 应用程序和您的 cron 脚本都应该没问题,而无需修改代码

    【讨论】:

    • 你能举个例子吗?
    • 你对服务器有什么访问权限?
    【解决方案2】:

    我使用以下内容更改目录中文件的所有权,以便其他脚本可以使用这些文件。

    <?php
    
    // File name and username to use
    $file_name= "foo.php";
    $path = "/home/sites/php.net/public_html/sandbox/" . $file_name ;
    $user_name = "fred";
    
    // Set the user
    chown($path, $user_name);
    
    // Check the result
    $stat = stat($path);
    print_r(posix_getpwuid($stat['uid']));
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 2017-10-14
      • 1970-01-01
      • 2016-12-13
      • 2019-03-07
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2013-02-14
      相关资源
      最近更新 更多