我和几个朋友一起运行服务器已经有一段时间了,我们都共享服务器,尽管我才是真正支付服务器费用的人。
我以 root 用户身份运行我所有的东西。
(我知道,这是一个坏主意,可能会造成无法挽回的损失,但这对我来说在设置服务器时最容易做到,如果我想进入别人的文件,我不必担心权限问题,而且他们大多数方法都无法进入我的文件)
我不希望任何普通用户能够在不使用 root 帐户密码的情况下进入 root 用户或 /root 目录。我已su - root
禁用此功能,但仍然有sudo -i
、sudo -s
和只是的能力sudo cp -R /root ~/rootStuff
,我不希望他们能够进入实际的 root 帐户或目录,他们真正需要做的就是在自己的主目录中工作,以及每个人都可以定期访问的内容,、,/opt
等等/etc
。
我不想完全剥夺所有人的 sudo 权限,因为这意味着他们在服务器上要做的任何事情(例如正确安装软件包)都会涉及我,但如果这是最好的方法,我可以这样做。
这并不是说我不信任我服务器上的人,我很信任,他们是好朋友,我只是在 /root 中存储了一些非常敏感的东西。
他们真正需要能够使用 sudo 的命令只有apt
,也许以后还会有其他随机命令,但我到时候可以处理。
如果这有很大区别的话,服务器的版本是 18.04.3 LTS。此外,该服务器是托管公司的专用服务器,我只有 ssh,没有物理访问权限或视觉访问权限。
答案1
- 首先,使用 adduser 为您的朋友创建一个帐户。不要让您的朋友成为“sudo”组的成员。我们假设他的用户名是“bob”
授予对 sudo 特定命令的权限,如下所示:
- sudo visudo (或者如果你已经是 root 用户,则只需 visudo)
- 添加一行类似于“bob ALL=apt, apt-get”
这意味着用户 bob 从任何终端(全部)都可以使用 sudo 执行命令 apt 和 apt-get。
您还会bob ALL = (ALL) foo, bar
在网上看到很多这样的内容,这意味着让 bob 以所有用户的身份从所有终端运行。无论如何,我认为以任何其他用户身份使用 apt 没有任何用处。
如果您需要让您的朋友访问更多程序,您可以用逗号添加更多项目。
答案2
为每个人提供他们自己的 LXD 容器,然后将他们锁定在主机服务器之外。
容器看起来和感觉起来就像一个完整的系统(除非你深入研究内核),包括 SSH 和 apt。你的每个朋友都可以拥有自己的容器,安装/删除/自定义他们喜欢的任何东西。它只占用真实虚拟机的一小部分资源。