背景:虚拟专用服务器
我有一个虚拟专用服务器,我希望在其上托管多个网站,并提供对另一个 Web 开发人员的访问。我不在乎对他施加太多限制,尽管我不介意将他将开发的站点与我将开发的服务器上的其他站点隔离开来。
问题:保持控制
我想要的主要是确保我将来保留对服务器的控制权。我想保留创建/提升/降级和其他不涉及网络软件的管理功能的能力。例如,如果我让他成为管理员,他可以 sudo su - 并成为 root 并从我那里删除 root 控制权。
我需要他不能:
- 取消其他管理员权限
- 更改root密码
- 控制其他安全/管理功能
我希望他仍然能够:
- 安装软件(通过 apt-get)
- 重启阿帕奇
- 访问mysql
- 配置mysql/apache
- 重启
- 编辑 Web 开发配置类型文件
/etc/
其他标准设置将被愉快地考虑
我从来没有真正设置过一个好的 sudoers 文件,所以简单的示例设置会非常有用,即使它们只是与我在上面希望的设置有点相似。
编辑:我还没有最终确定权限,所以标准的、有用的 sudo 设置当然是一个选项,上面的列表更多的是我希望我能做的,我不知道那个设置可以完成。不过,我确信人们之前已经以某种方式解决了这类问题,我想使用一些经过测试的东西,而不是我自己开发的东西。
根据您希望允许他执行的应用程序的数量,一个选项是允许他执行命令,甚至无需 sudo。这可能会阻止您授予他 root 访问权限,同时仍然允许他执行他的任务:为此,请在 sudoers 文件中为每个应该允许他执行的应用程序添加如下一行:
编辑:虚拟机解决方案肯定是最安全的选择
如果您没有被 Debian/Ubuntu 困住(并且您有能力更改/选择您的操作系统),那么 FreeBSD 的 Jails 就是考虑到这一点而构建的,并且已经投入生产多年:
http://www.freebsd.org/doc/handbook/jails.html
不幸的是,考虑到你给他的特权,真的没有一个好的方法可以创建一个万无一失的配置来阻止他试图阻止你的访问。能够编辑 /etc 中的任意文件,能够安装软件几乎可以肯定意味着该人将有能力绕过您使用 sudo 设置的任何内容。
真正的问题又回到了物理访问上。如果您对系统有物理访问权限,那么他真的无能为力,您无法通过简单地从 livecd 重新启动系统并进行修复来轻松绕过。
我相信现在大多数人通过设置 VM 并在 VM 内提供访问权限来解决此类问题。如果他们做错了什么或配置错误,那么修复问题通常需要重新启动。