CentOS 配置 Sudo
使用 sudo 用户访问服务器并在根级别执行命令是 Linux 和 Unix 系统管理员中非常常见的做法。使用 asudo 用户通常通过禁用对其服务器的直接根访问来防止未经授权的访问。
在本教程中,我们将介绍禁用直接 root 访问,创建 sudo 用户以及在 CentOS 上设置 sudo 组的基本步骤。
1. 步骤 1:安装 sudo
yum install sudo -y
2. 步骤 2:添加 sudo 用户
一个 sudo 用户是 Linux 机器上的普通用户帐户。
adduser mynewusername
3. 步骤 3:将新用户添加到 wheel 组(可选的)
wheel 组是一个用户组,只有属于 wheel 组的用户才可以用 su 登录为 root,添加你的 sudo 用户到 wheel 组是完全可选的,但建议。
在 CentOS 中,属于的 wheel 组的用户可以执行su
直接上升到 root。同时,sudo 用户将会使用sudo su
。基本上除了语法之外没有什么真正的区别成为 root,而属于这两个组的用户可以使用 sudo 命令。
usermod -aG wheel mynewusername
4. 步骤 4:确保你的 sudoers 文件设置正确
确保这一点很重要 sudoers 文件位于 /etc/sudoers 正确设置为了允许 sudo users 有效使用 sudo 命令。为了达到这个目标,我们将会看到内容 /etc/sudoers 并在适用的地方进行编辑。
vim /etc/sudoers
开始审查和编辑下面这行:
# Allow members of group sudo to execute any command
这一节 /etc/sudoers 经常看起来像这样:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
在某些系统中,你可能找不到 %wheel 代替 %sudo; 在这种情况下,这将是你将开始修改的行。
如果行开始 %sudo 在 Debian 或 %wheel 在 CentOS 中没有注释掉(前缀为#),这意味着 sudo 已经被设置并启用了。然后,你可以转到下一步。
5. 步骤 5:允许不属于的用户 wheel 也不是 sudo 组执行 sudo 命令
可以允许不在用户组中的用户执行 sudo 只需将它们添加到命令中即可 /etc/sudoers 如下:
anotherusername ALL=(ALL) ALL
6. 步骤 6:重新启动 SSHD 服务器
为了应用你所做的更改 /etc/sudoers,你需要重新启动 SSHD 服务器,如下所示:
CentOS 6
/etc/init.d/sshd restart
CentOS 7
systemctl restart sshd.service
7. 步骤 7:测试
重新启动 SSH 服务器后,请注销,然后重新登录 sudo user,然后尝试执行一些测试命令,如下所示:
sudo uptime
sudo whoami
任何以下命令将允许 sudo user 成为 root。
sudo su -
sudo -i
sudo -S
笔记:
该 whoami 命令将返回 root 当加上 sudo。 执行时将提示你输入用户密码 sudo 命令,除非你明确指示系统不提示 sudo users 为他们的密码。请注意,这不是推荐的做法。 可选:允许 sudo 而不输入用户的密码
如前所述,这不是推荐的做法,仅在演示目的中包含在本教程中。
为了让你的 sudo user 执行 sudo 命令,而不被提示输入密码,后缀为访问行 /etc/sudoers 同 NOPASSWD: ALL 如下:
%sudo ALL=(ALL:ALL) ALL NOPASSWD: ALL 注意:你需要重新启动 SSHD 服务器才能应用更改。
8. 步骤 8:禁用直接 root 访问
现在你已经确认可以使用你的 sudo user 没有问题,现在是第八步的禁用直接根访问的时间。
首先打开/etc/ssh/sshd_config
使用你喜欢的文本编辑器,并找到包含以下字符串的行。它可能有一个前缀#字符。
PermitRootLogin
无论前缀或该选项的值 /etc/ssh/sshd_config 你需要将该行更改为以下内容:
PermitRootLogin no
最后,重新启动你的 SSHD 服务器。
注意:不要忘了通过尝试将 SSH 更改为服务器来测试你的更改 root。如果你无法这样做,这意味着你已成功完成所有必要的步骤。
我们的教程结束了。