我一直在尝试为我的多用户文件服务器找出一个好的权限方案。我目前有大约 5 个用户,每个用户都将文件存储在他们的主目录中。这些文件也可以被计算机上的各种应用程序访问,例如运行 ownCloud 的 Web 服务器和 BitTorrent Sync 应用程序。这些应用程序各自在自己的用户帐户下运行。我正在寻找一种权限方案来实现以下目标:
- 任何用户都不能访问其他用户的主目录(除了我,作为管理员)
-应用程序用户帐户应该具有对所有用户帐户的完全访问权限(我们假设用户访问隔离在应用程序本身内正确实现,否则这将违反规则 1)
- 由应用程序用户帐户创建的文件仍应可由在其主目录下创建的用户访问
现在,我能想到的最好办法是将所有应用程序添加到 www 组,然后将用户主目录创建为 :www 770,但这看起来确实不是一个好的解决方案。我的另一个想法是使用特定于用户的组(即与用户同名的组),然后创建主目录为:770,然后将应用程序用户名分别添加到每个用户的组中。另外,可以使用粘性位,但我不太确定它们是如何工作的。我可能应该指定这是一个 FreeNAS 服务器,因为我知道粘性位在 BSD 与 Linux 上的工作方式有点不同。
有什么想法吗?作为本地 Windows 用户,这是我可以使用 ACL 在 5 分钟内完成的事情之一,但这就是生活......
答案1
提供例如网络服务器(或任何外部可访问的服务器)满的对用户文件的访问(读、写和执行)是不是从安全角度来看这是一个好主意。作为一项规则,您应该限制其对文件的读取访问权限和对目录的读取/执行权限。事实上,FreeBSD 上的默认设置是others
读访问用户文件。这会让你的生活变得更轻松,但违背了你的第一点。
更好的解决方案是在jail
并创建一个cron
作业(以root身份运行),使用egrsync
将用户可通过网络访问的文件镜像到监狱中的目录。
对于像 bittorrent 这样的东西,我还会创建一个目录,bittorrent 客户端可以在其中读取和写入内容。将该目录设置为torrents
具有读/写访问权限的组,并使所有用户成为该组的成员。
编辑:
如果您在监狱内安装并将nullfs
目录的组权限设置为读/写,这听起来是一个不错的选择。监狱应该提供隔离。
我用过一个nullfs
和的组合unionfs
使文件可用,但将修改放在其他地方。因此,您可以将来自 torrent 的传入内容放入uploads
目录中,而无需触及该目录中的内容files
。