怎样在 Debian, CentOS 和 FreeBSD 上使用 sudo

怎样在 Debian, CentOS 和 FreeBSD 上使用 sudo

在 Linux 和 Unix 系统管理员中,使用拥有 sudo 权限的用户访问服务器并使用 root 级权限执行命令是非常常见的行为。sudo 用户的使用通常是通过禁止对用户服务器的直接 root 访问来进行的,以防止未经授权的访问。

在本教程中,我们将介绍在 CentOS, Debian 和 FreeBSD 上禁用直接 root 访问,创建 sudo 用户以及设置 sudo 组的基本步骤。

先决条件

  • 一台全新安装首选发行版 Linux 的服务器。
  • 服务器上安装了 nano, vi, vim, emacs 等任一文本编辑器。

步骤一:安装 sudo

Debian

apt-get install sudo -y

CentOS

yum install sudo -y

FreeBSD

cd /usr/ports/security/sudo/ && make install clean

或者:

pkg install sudo

步骤二:添加 sudo 用户

sudo 用户是 Linux 或 Unix 机器上通用的用户账户。

在 Debian,CentOS,FreeBSD 系统中添加 sudo 用户的命令是相同的:

adduser mynewusername

步骤三:添加新用户到 wheel 组(可选的)

wheel 组是一个用户组,它限制了能够 su 到 root 的用户数。将 sudo 用户添加到 wheel 组中完全是可选的,但是建议这样做。

注意:在 Debian 中,sudo 通常会找到而不是 wheel。但是,您可以使用 groupadd 命令手动添加 wheel 组。就本教程而言,我们将在 Debian 使用 sudo 组。

wheelsudo 之间的不同

在 CentOS 和 Debian 中,wheel 组的用户能执行 su 和直接切换到 root。同时,sudo 用户首先使用 sudo su。本质上,除了用于成为 root 的语法外,没有什么实际区别,并且属于这两个组的用户都可以使用该 sudo 命令。

Debian

usermod -aG sudo mynewusername

CentOS

usermod -aG wheel mynewusername

FreeBSD

pw group mod wheel -m mynewusername

步骤四:确保 sudoers 文件设置正确

重要的是要确保正确设置其中的 sudoers 文件 /etc/sudoers,以便 sudo users 有效使用该 sudo 命令。为此,我们将查看其中的内容 /etc/sudoers 并在适用的地方对其进行编辑。

在 Debian,CentOS,FreeBSD 系统中编辑 sudoers 文件的方法是相同的:

vim /etc/sudoers

或者

visudo

注意:visudo 命令将使用系统的默认文本编辑器(通常是 vi 或 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

在一些系统,可能发现 %sudo 的代替 %wheel;在这种情况下,这就是您要开始修改的行。

如果没注释掉 Debian 中的 %sudo 或 CentOS 和 FreeBSD 中的 %wheel 开头的行(以 开头),则意味着 sudo 已经设置并启用。然后,您可以转到下一步。

步骤五:允许既不属于 wheel 也不属于该 sudo 组的用户执行 sudo 命令

只需将两个用户添加到 /etc/sudoers 文件中,就可以允许这两个用户组中的用户执行 sudo 命令:

anotherusername ALL=(ALL) ALL

步骤六:重新开启 SSHD 服务

为了应用对 /etc/sudoers 文件所做的更改,您需要按以下方式重新启动 SSHD 服务器:

Debian

/etc/init.d/sshd restart

CentOS 6

/etc/init.d/sshd restart

CentOS 7

systemctl restart sshd.service

FreeBSD

/etc/rc.d/sshd start

步骤七:测试

在重新开启 SSHD 服务后,注销,然后以 sudo user 身份重新登录,然后尝试执行一些测试命令,如下所示:

sudo uptime
sudo whoami

以下任何命令都将使 sudo user 成为 root

sudo su -
sudo -i
sudo -S

注意:

  • sudo 结合使用时,该 whoami 命令将返回 root
  • 执行 sudo 命令时,系统将提示您输入用户的密码,除非您明确指示系统不提示用户 sudo users 输入密码。请注意,这不是推荐的做法。

可选:允许 sudo 不输入用户密码

如前所述,这不是推荐的做法,本教程中包含此内容仅用于演示目的。

为了让你的 sudo user 执行 sudo 命令,而不会提示输入它们的密码,在 /etc/sudoers 文件中接入行中有 NOPASSWD: ALL 后缀,如下:

%sudo   ALL=(ALL:ALL) ALL   NOPASSWD: ALL

注意:您需要重新启动 SSHD 服务才能应用更改。

步骤八:禁用直接 root 访问

既然您已经确认可以无问题地使用您的 sudo user,那么现在是最后的第八步,禁用直接 root 访问。

首先,使用您喜欢的文本编辑器打开 /etc/ssh/sshd_config 并找到包含以下字符串的行。它可能以 # 字符为前缀。

PermitRootLogin

无论 /etc/ssh/sshd_config 中的前缀或选项值如何,都需要将该行更改为以下内容:

PermitRootLogin no

最后,重新启动 SSHD 服务。

注意:不要忘记尝试通过 SSH 进入服务器来测试更改 root。如果您无法执行此操作,则表示您已成功完成所有必要步骤。