我们刚刚部署了几个 Linux 服务器。每个系统管理员在服务器上都有自己的帐户(即:jsmith),并使用证书通过 SSH 进行连接,该证书将放入其主目录中的“authorized_keys”文件中。连接到服务器后,如果他们想要发出提升权限的命令,他们将执行以下操作:
sudo ifconfig
然后他们将输入 root 密码。
我现在想知道的是管理 root 密码的最佳做法。我应该定期更改密码吗?我该如何与系统管理员共享新密码?
**当然我会禁用 SSH 中的 root 登录。
答案1
如果他们使用 sudo,那么它会要求输入他们的密码而不是 root 密码,因此不需要更改 root 密码。只需确保在 /etc/sudoers 文件中为他们提供适当的权限即可。
答案2
使用 sudo 时,您无需担心 root 密码。也许,我建议通过发出以下命令来禁用 root 密码
sudo passwd -l root
不过,在执行此操作之前,请确保您拥有具有所有权限的相关系统用户。
你可以通过以下方式获取 root 控制台
sudo -i
以下是我用来配置服务器的一个小脚本。
#!/bin/bash
set -e
addgroup sysadmin
adduser newuser
usermod -a -G sysadmin newuser
chmod u+w /etc/sudoers
echo "\n# Added by <YOUR-NAME>\n%sysadmin ALL=(ALL) ALL" >> /etc/sudoers
chmod u-w /etc/sudoers
su newuser -c "mkdir /home/newuser/.ssh"
su newuser -c "chmod 0700 /home/newuser/.ssh"
su newuser -c 'echo "<YOUR-SSH-KEY>" >> /home/newuser/.ssh/authorized_keys'
su newuser -c "chmod 0644 /home/newuser/.ssh/authorized_keys"
您可以根据需要进行修改。使其具有交互性,使用用户变量等。:)
享受!
答案3
有一种情况您确实需要 root 密码:如果文件系统在启动时 fsck 失败,通常会提示您输入 root 密码以获取 shell 提示,以便修复损坏。此时,常规用户帐户和 SSH 都不可用。如果系统管理员不知道 root 密码,那么唯一的其他选择就是从备用媒体启动。
答案4
我关于 sudo 的笔记:(请注意 - 我的笔记只是我从我们自己的谷歌中收集的。我发布它们是因为它可能对新手、像我这样的学习迟缓的人有所帮助;).. 如果您说信息不正确,或者只是从 wiki 复制,或者抄袭,等等,请通过评论让我知道,我很乐意删除我的帖子,而不是您的反对票)
来自维基页面:
- 与 su 命令不同,用户通常向 sudo 提供自己的密码而不是 root 密码。
- sudo 能够记录每次运行的命令。如果用户试图在未列入 sudoers 文件中的情况下调用 sudo,则会向用户显示错误,表明该尝试已记录在系统日志中。
- sudo 可能配置为需要 root 密码,或者根本不需要密码
- 必须以 root 身份使用“visudo”命令编辑此文件。来自 wiki - visudo 是一个命令行实用程序,允许以安全的方式编辑 /etc/sudoers 文件。它默认使用 vi 编辑器的界面打开 /etc/sudoers(尽管可以通过将 shell 的 EDITOR 环境变量设置为不同的文本编辑器来更改此设置),使用锁定防止同时进行多个编辑,执行健全性检查并检查解析错误。
- runas 命令在 Microsoft Windows 中提供了类似的功能,但无法将当前目录、环境变量或长命令行传递给子进程。虽然它支持以其他用户身份运行子进程,但不支持简单的提升权限。Hamilton C shell 中包含一个真正的 Windows su 和 sudo,可以传递所有状态信息并以提升权限或以其他用户身份(或两者)启动子进程。
- 有多个 sudo 前端可用于 GUI 环境,特别是 kdesudo 和 gksudo
来自手册页:
获取不可读目录的文件列表:
%sudo ls /usr/local/protected
要在文件系统保存的 ~yazza 未以 root 身份导出的机器上列出用户 yazza 的主目录:
%须藤-u yazza ls〜yazza
以用户 www 身份编辑 index.html 文件:
%sudo -u www vi ~www/htdocs/index.html
要关闭机器:
%sudo shutdown -r +15“快速重启”