【问题标题】:Shared directory for file upload across subdomains on linuxlinux上跨子域文件上传的共享目录
【发布时间】:2021-07-18 04:33:38
【问题描述】:

我有 2 个模块必须共享特定上传文件的公共目录。

instructor.example.com 和 registrar.example.com

所以我想知道的是,你们做了什么让他们有一个共同的文件上传目录,目录放在哪里?

因为来自 registrar.example.com 的用户必须能够访问讲师用户的目录,上传文件的特定目录。

例如将其命名为“instructor_registrar/{instructor-id}/ 因为我有强迫症。

我已经进行了研究,发现有 1 个人和我有类似的问题,但他们只是说“你可以把它放在任何地方”。所以我想知道我应该在哪里创建目录。

【问题讨论】:

    标签: php linux codeigniter file-upload subdomain


    【解决方案1】:

    这可以通过linux目录/文件权限来完成。

    假设:

    • 站点 1:在用户 siteuser1 和组 sitegroup1 下运行。该特定站点的所有目录和文件均归 siteuser1sitegroup1 所有。
    • 站点 2:在用户 siteuser2 和组 sitegroup2 下运行。该特定站点的所有目录和文件均归 siteuser2sitegroup2 所有。

    对于你的共享目录和文件,这样设置:

    • /shared_dir/fileA, fileB, fileC, ...

    • 该目录应归someusersomegroup 所有。

    • 将用户siteuser1siteuser2 放入somegroup

    • 这样设置权限:

      drwxr-x--- someuser somegroup /shared_dir/
      -rw-r----- someuser somegroup /shared_dir/fileA
      -rw-r----- someuser somegroup /shared_dir/fileB
      ...
      

    这样somegroup 组中的所有用户都可以访问这些文件。

    您可以将others 权限设置为 r--,但我不喜欢为目录或文件上的每个用户授予读取权限。


    编辑:

    对于共享目录的位置,站点特定目录之外的任何位置都可以。并且不要忘记在您的 Apache 配置中使用 <Directory ...> 部分声明它。

    假设您的网站文件位于/opt/apache/htdocs_instructor/opt/apache/htdocs_registrar 下,您可以使用/opt/apache/htdocs_shared

    【讨论】:

    • 谢谢。我只是决定不创建另一个用户,而是将讲师分配为与注册商相同的 root。我知道这样做有缺点,但感谢您帮助我。
    【解决方案2】:

    所以我想出了一个替代方案。 这就是我所做的。我在 1 个子域中有 2 个框架。

    /var/www/staff.example.com/instructor/
    /var/www/staff.example.com/registrar/
    

    我在里面创建了另一个目录:

    sudo mkdir /var/www/staff.example.com/uploads/shared_dir/
    

    并将隐私设置为 755

    sudo chmod -R 755 /var/www/staff.example.com/uploads/shared_dir/
    

    并将所有者设置为 root

    sudo chown -R $USER:$USER /var/www/staff.example.com/uploads/shared_dir/ 并将我的$upload_path 文件上传模型设置为

    $uploadpath = $_SERVER[DOCUMENT_ROOT'].'/uploads/shared_dir/';
    

    因为如果用户是新用户,我需要创建一个个人目录。我将所有文件设置在 apache 和所有组和用户拥有的 /var/www/ 中,并为 www-data 组的所有成员启用读写文件,以便在上传文件之前启用我的mkdir()

    mkdir($_SERVER['DOCUMENT_ROOT'].'/uploads/shared_dir/'.$_SESSION['user_id'], 0777, true);
    

    我不推荐,但这是我做的

    chown -R www-data:www-data /var/www/
    chmod -R g+rw /path/to/webserver/www
    

    这解决了我在根目录或框架之外上传文件的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-13
      • 2018-05-04
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2011-11-27
      相关资源
      最近更新 更多