在我们的实验室,有几项服务由不同的博士生(比如我自己)负责。波动性很大,人们在研究工作之余还要做这些工作。到目前为止,这些服务都在不同的机器上运行,使用不同的操作系统设置,这很快就会导致管理混乱。
我们希望整合我们的服务设置。我们的主要想法是,负责服务的人不应该再干预底层系统。除了 NFS 和 kerberos 等核心系统外,典型的服务已经能够以非 root 身份运行。我说的是 apache、mysql、subversion、带有 openxchange 的邮件等等。重定向特权端口也不成问题(来源)。
剩下的就是服务及其有效负载的配置。我们设想的一个场景是每个服务都有自己的用户和主目录,可由相应的管理员访问。服务的备份和回退很容易,因为服务运行所需的一切都在一个地方。
- 是否有既定的方法来创建这样的设置?
- 是否存在一种独特的方法,可以让服务找到它们的文件(系统目录之外的文件),同时仍然使用相应的 debian 包?
- 我们的想法中是否存在一些我们可能忽略的问题?
- 您是否会说虚拟化就是解决我们问题的答案?(从我们的角度来看,这无助于我们将系统设置与服务设置严格分开。)
感谢您的任何建议!
答案1
我有时会想你到底想做什么,但最后我总是会选择 sudo。我认为在 Linux 中原生实现这个目标相当困难,也许可以使用 SElinux。看看这篇文章:
http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/
不太容易,但很有趣。也许使用 solaris 及其 rbac 可能性会更简单一些。将服务配置文件移动到其他目录上,当您必须更新软件包时,这会有点混乱。在这种情况下,也许最好的方法是重新打包软件并更改目标目录。
答案2
运行系统范围的 apache2 安装应该不会太难,每个用户在其自己的目录中都有域配置。
对于 mysql 来说也是如此,许多用户可以使用同一个 mysql 服务器,而不会发生冲突,并且如果需要,mysql 可以在用户自己的目录中以非特权方式运行。
不是很确定 svn,但我认为它是另一种可以以非特权方式运行的服务器的情况,或者是具有自定义用户配置的系统范围安装的情况。
邮件和 openexchange 可能是一个完全独立的问题。不熟悉 openexchange,但邮件服务器(如 postfix)可以在用户家中配置 chroot,并在非特权端口上运行。
对于 apache2 和自定义用户文件,您只需要一行:
Include /home/*/httpd/
在您的系统范围的 apache 配置中。这将允许用户拥有一个目录~/httpd/
,他们可以在其中放置他们自己的 VirtualHosts 的配置文件等。