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