公司内部网的 Apache 目录权限

公司内部网的 Apache 目录权限

我有一个公司内部网,最近我将其从 Novell 迁移到 Linux。我正在尝试设置用户权限,但快要疯了。

有几十个部门,每个部门在 Web 根目录中都有一个专用目录。还有用于 css、模板、图像等的共享目录。

我希望所有用户对整个站点都有只读访问权限,并且对其部门的目录只有读写访问权限。

我已经尝试过的:

  • 为每个目录设置一个用户组,并根据需要将用户分配到该组。遇到权限和所有权继承问题。

  • 创建了一个测试用户,然后在测试用户的主目录中创建了一个 htdocs 文件夹。然后创建一个链接,将其重命名为部门名称,并将该链接放入主 htdocs 目录中。读取权限完美,但使用 Dreamweaver 或 FTP 客户端从 htdocs 根目录时,我无法列出该目录的内容。

我觉得我遗漏了一些简单但关键的信息。选择性地设置对 htdocs 子目录的读写权限不可能这么困难。

对于习惯使用 Novell 和 IIS 的非经验用户有什么建议吗?

答案1

假设销售部有 Sue 和 Sam,人力资源部有 Harry 和 Hermione。

  • 创建用户 sue、sam、harry、hermione
  • 创建人力资源和销售小组。
  • 将 sue 和 sam 添加到小组销售。
  • 将哈利和赫敏添加到 hr 组。
  • /var/www/htdocs在†中创建 hr 和 sales 文件夹
  • 将文件夹 hr 的组更改为组 hr
  • 同上销售
  • 设置组位,以便在销售和人力资源中创建的文件继承组
  • 设置权限以便组可以写入,其他人只能读取
  • 为了方便起见,从赫敏和哈利的主目录创建到 hr​​ 的软链接
  • 销售人员也一样。
  • 根据需要编辑 Apache 配置(例如 sales.example.com 的基于名称的虚拟服务器)

有用的命令(参见手册页)

  • 建立目录
  • chown
  • 群组添加
  • 用户添加
  • 群组模式

† 或者 Apache 的文档根目录

答案2

Linux 中的文件权限可以追溯到 Linux 所起源的旧 Unix 根源。也许可以参考以下指南TuxFiles.org 上的这个或者本材料来自 TLDP可以帮助您了解基本的权限结构。

您最可能需要熟悉的工具是chown修改模式. 或者 GUI 替代方案(如果您的服务器上安装了 GUI)。

答案3

与传统的 UNIX 权限模型相比,ACL 可能更能满足您的需求。

为所有文件夹创建一个只读访问权限组,然后为每个部门创建一个组。然后使用setfacl(“设置文件 ACL”)为只读组授予对所有文件夹的读取权限,并为每个组授予对其部门文件夹的写入权限。

不幸的是,您需要查找 的语法setfacl。我不太熟悉它。为了帮助您入门,下面是我的 cronjob,它使服务器上的 apache 用户能够完全访问每个用户主目录中的 public_html 目录:

#!/bin/sh
HOME_DIR="/home"
WWW_DIRNAME="public_html"
WWW_USER="www-data"
setfacl -Rm "u:${WWW_USER}:rwX,d:u:${WWW_USER}:rwX" "$HOME_DIR/*/$WWW_DIRNAME"

我将其放入 cron 作业中,以便我放入 public_html 目录的任何文件都很快可供 apache 访问。

答案4

按照群组的想法,为所有群组创建所需的所有目录。

使 Web 根目录下的所有内容归 www-data 或 apache 所有,或者您的 Web 服务器以任何用户身份运行,以便它具有访问权限。这将使所有内容归 Web 服务器所有,并成为 Web 服务器组的一部分:

前任:chown -R www-data:www-data /var/www

然后更改每个组文件夹的组:

前任:chown -R www-data:group1 /var/www/group1

一旦所有文件夹都有正确的组,您就可以为它们添加组读/写访问权限:

前任:chmod -R g+rw /var/www/*

相关内容