我正在设置一个服务器,其他人可以通过 ssh 使用 sudo 访问该服务器。他们可以安装东西并根据需要进行更改,但我仍然需要管理服务器、安装补丁和软件更新等。
我想知道如果我保留 root 密码,以便我可以随时做我需要做的事情,我是否可以以某种方式禁止使用 sudo 的人使用 sudo 更改它。
答案1
你必须这样想。如果你给了他们 root 密码,或者获取该密码的路径,你实际上是在问“除了我突然不想让他们知道 root 密码的情况外,我怎么才能给他们 root 密码”。答案是“你不能。计算机不是那样工作的。”
答案2
你可以有选择地允许使用 sudo 的某些命令,但你必须小心不要允许允许 shell 访问、写入符号链接或数十个其他问题之一的程序。以下是有关安全 sudo 脚本的页面:http://www.kramse.dk/projects/unix/security-sudo-script_en.html
您总是可以希望他们不知道 chattr 命令 ;-)
答案3
我认为这里的答案取决于您是试图阻止他们恶意更改密码以将您拒之门外,还是仅仅因为他们忘记了您需要访问权限而粗心地获取密码。在前一种情况下,您将遇到很多麻烦。我不知道在什么情况下您会授予用户对盒子的 root 访问权限但仍然担心这一点,但您能做的最好的事情就是尝试限制他们通过 sudo 访问命令,正如其他人提到的那样,这充其量是比较棘手的。在后一种情况下,解决方案似乎是为自己创建一个具有 sudo 权限的用户。没有人会意外更改您帐户的密码,因此您不必担心有人犯了错误,甚至出于正当理由更改密码而忘记告诉您,因为您随时可以使用您的帐户登录并将其改回。
答案4
有以下几种选择:
- 你可以使用聚丙烯酰胺(可插入式身份验证模块)允许您以 root 身份登录,无论他们设置了什么密码。有很多可用模块,所以我就把这个留着吧。
- 通过打开创建“第二个 root 用户”密码文件 /etc/passwd并添加一个与 root (0) 具有相同 UID 的新用户。然后在/etc/shadow文件。这将允许您以 root 身份登录,即使他们更改了“root”的密码 - 您的登录仍然有效。
- 创建一个定期运行的 shellscript,以检查 root 用户的哈希值是否/etc/shadowroot 匹配您想要的那个。如果不是,则哈希值会改回原样。
正如其他人指出的那样,给予 root 访问权限将允许他们在系统上为所欲为,如果他们真的想锁定你,他们可以。但是上面的选项会使他们更难或更不透明。