sudo在Linux和Unix系统管理员中,使用用户访问服务器并在根目录执行命令是非常普遍的做法。sudo为了防止未经授权的访问,用户的使用通常是通过禁用对服务器的直接根访问来实现的。

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

先决条件

  • 新安装的Linux服务器与您的首选分配。
  • 安装在服务器上的文本编辑器,无论是nano,vi,vim,emacs。

第1步:安装sudo

Debian的

apt-get install sudo -y

CentOS的

yum install sudo -y

FreeBSD的

cd /usr/ports/security/sudo/ && make install clean
要么
pkg install sudo

第2步:添加sudo用户

sudo用户是Linux或Unix机器上的一个普通用户帐户。

Debian的

adduser mynewusername

CentOS的

adduser mynewusername

FreeBSD的

adduser mynewusername

第3步:将新用户添加到轮组(可选)

轮组是一个用户组,它限制了能够su生根的人数。将您的sudo用户添加到wheel组中是完全可选的,但是这是可取的。

注意:在Debian中,sudo经常会发现这个组,而不是wheel。但是,您可以wheel使用该groupadd命令手动添加组。为了本教程的目的,我们将使用sudoDebian组。

wheel和之间的区别sudo

在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

第4步:确保您的sudoers文件安装正确

确保sudoers文件位于/etc/sudoers正确设置以便sudo users有效使用该sudo命令非常重要。为了做到这一点,我们将/etc/sudoers在适用的情况下查看其内容并进行编辑。

Debian的

vim /etc/sudoers
要么
visudo

CentOS的

vim /etc/sudoers
要么
visudo

FreeBSD的

vim /etc/sudoers
要么
visudo

注意:visudo命令将/etc/sudoers使用系统首选的文本编辑器

(通常是vi或vim)

打开。

在这一行下面开始阅读和编辑:

# 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或%wheelCentOS和FreeBSD 开头的行没有被注释掉

(前缀为#)

,这意味着sudo已经被设置并被启用。然后可以转到下一步。

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

sudo通过简单地添加它们,可以允许处于两个用户组中的用户执行命令,/etc/sudoers如下所示:

anotherusername ALL=(ALL) ALL

第6步:重新启动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

第七步:测试

重新启动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/sudoersNOPASSWD: ALL如下:

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

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

第8步:禁用直接root访问

现在您已经确认可以使用您的sudo user问题了,现在是第八步也是最后一步了,禁止直接访问root。

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

PermitRootLogin

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

PermitRootLogin no

最后,重新启动你的SSHD服务器。

注意:不要忘记通过尝试将SSH连接到服务器来测试您的更改root。如果您不能这样做,这意味着您已经成功完成了所有必要的步骤。