web文件权限设置

web文件权限设置

我无法找到在 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 组。(这取决于您的发行版。)然后确保该组对文件/目录具有写访问权限。

相关内容