组合网络/网络共享:文件所有权和权限

Combined network- / webshare: file ownership and permissions

我正在使用 pyd.io 和 netatalk 的组合,让我的远程存储在家里和任何地方都可用。到目前为止(阅读)一切正常,但现在——在第一次尝试上传东西时——我遇到了一个让我头疼的问题。

目录 /mnt/data 通过 afpd (netatalk) 共享给普通用户 pi(是的,我从 Raspberry 开始)。因此,文件所有权是 pi:pi,权限是 755。效果很好:我可以在本地读写,也可以通过 netatalk 从 mac 读写。

同一目录通过 pyd.io 通过 apache2 共享。读取工作完美,但是,写入不是,因为 apache 在用户 www-data:www-data 下运行。如果我 chmod 到 777 用于测试目的,新文件将在 www-data:www-data 所有权下创建(当然)。但是,它们无法通过 netatalk 为用户 pi 写入。

我真的不知道如何解决这个问题,因为将两者结合起来(运行 pi 下的 apache 或类似的)似乎非常不安全。

我通过以下步骤解决了这个问题:

  1. 创建新组(在我的例子中 shared-data
  2. www-datapi添加到群组
  3. 将共享文件夹的权限更改为 664
  4. 使新文件夹的权限相同chflags g+s -R /path
  5. 使新文件的权限与 setacl
  6. 相同
  7. 使 pyd.io 使用 664
  8. 创建新文件和文件夹
  9. 编辑 /usr/local/etc/afp.conf 中的 netatalk 共享:添加 file perm = 0664directory perm = 0664
  10. 重新启动 apache 和 netatalk