我无法找到在 UNIX 操作系统下设置 Web 文件的最佳方法。
我在 Centos OS 上运行 Apache,我将根目录放在 /var/www/html 下
以下是示例:
/var/www/html 750 ssh-user apache
/project_a 750 ssh-user apache
/normal_folder 750 ssh-user apache
/upload_folder 770 ssh-user apache
/project_b 750 ssh-user apache
我为所有者 (ssh-user) 设置了完全控制权,并为组用户 (apache 组) 设置了只读权限。对于上传文件夹,我设置了 770,哪个组用户可以在其中写入内容。
ssh-user 是什么?这是我使用 SSH 登录时使用的同一个用户。
这些设置很好,但有时我很烦,因为我需要通过执行以下操作重新设置文件权限
chmod 750 -R project_a
chown ssh-user:apache project_a
每次我使用 FTP 创建新文件/上传时,我都需要执行这些命令。
所以我的问题是:
- 我的文件所有权是否设置正确?
- 文件权限如何?
- 您使用任何工具来管理此文件权限吗?我听说 facl 可以优雅地做到这一点
- 有人用过 capistrano 吗?对文件权限和所有权有什么提示吗?
多谢你们!
答案1
我的文件所有权设置是否正确?/文件权限如何?
我们无法告诉你——这取决于你的政策。但我不会采用这种模式,因为它不允许多个用户管理文件。但如果你不考虑这一点,那么这可能是一种合理的方法。
如果您必须更改权限,那么“apache”可能不是 ssh-user 的主要组。您可以在更改任何文件之前尝试“sg apache”,或者您可以只在目录上设置粘滞位(强制使用目录的组所有权创建新文件),例如
chown -r ssh-user:apache project_a
chmod -R g+s project_a
我听说 facl 可以优雅地做到这一点
我已经看到太多使用 ACL 造成的混乱,因此建议将其用于文件系统权限。
然而,一个更简单的解决方案可能是仅将文件和目录设置为“其他人”(包括 apache)可读,而不必担心群组所有权。
还值得检查的是,你的 FTP 服务器是否允许你更改你的umask。
更好的是,不要使用 FTP。
答案2
如果您编写/修改文件上传脚本,以便它们设置适当的权限(如 777 或 750),那么可能会解决问题。
我们遇到了一个问题,即文件上传是通过 apache:apache 创建的,因此如果用户使用 SSH 登录,他们无法删除移动文件。为了解决这个问题,我们修改了上传脚本,以便它们在上传后也将文件的权限更改为 777,这样使用 SSH 的用户可以修改/删除/移动文件。
当然,所有这一切都建立在你拥有一个非常值得信赖的环境的基础上,否则 777 权限是一个非常糟糕的选择。
答案3
我会将我的用户和任何其他需要管理“web”文件的用户添加到 apache 或 www-data 组。(这取决于您的发行版。)然后确保该组对文件/目录具有写访问权限。