在Debian,CentOS和FreeBSD上,如何使用sudo
Beryl
・9 分钟阅读
使用sudo用户访问服务器,并且在root级别执行命令是Linux和Unix系统管理员非常使用的做法,使用sudo
用户通常通过禁止直接访问服务器的root访问,以防止未经授权的访问。
在本教程中,我们会介绍禁用直接root访问,创建sudo用户和设置,和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:将新用户添加到wheel组(可选)
组是一个用户组,它限制能够su
到root的人的数量,会sudo
用户添加到wheel
组是完全可选的,但是,建议这样做。
注意:在Debian中,sudo
组通常被发现而不是wheel
,但是,你可以使用groupadd
命令手动添加wheel
组,在本教程中,我们会使用sudo
的组。
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 file设置正确
file设置正确
为了让sudo users
能够有效地使用sudo
命令,确保/etc/sudoers
中的sudoers
文件正确设置是很重要的,为了完成这一点,我们会查看/etc/sudoers
的内容,并且在适当的地方编辑它们。
Debian
vim/etc/sudoers
或者
visudo
CentOS
vim/etc/sudoers
或者
visudo
FreeBSD
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
在某些系统中你可能找不到%wheel
而不是%sudo
; 在这种情况下,这会是你开始修改的行。
如果在Debian或CentOS和FreeBSD中以>%sudo- >code >开头的行没有注释掉前缀为,这意味着sudo已经设置,并且启用,
,然后你可以移动到下一步。
步骤5:允许既不属于wheel的用户执行sudo 命令
可以通过简单地会这些用户添加到/etc/sudoers
,以允许用户不在用户组中执行sudo
命令:
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
步骤7: 测试
重新启动SSH服务器后,注销并作为sudo user
登录,然后尝试执行一些测试命令:
sudo uptime
sudo whoami
下面的任何命令都会允许sudo user
成为root
。
sudo su -
sudo -i
sudo -S
备注:
whoami
命令在与sudo
耦合时会返回root
,- 在执行
sudo
命令时,提示你输入用户密码,除非显式指示系统不提示系统提示sudo users
,请注意,这不是建议的做法,
可选:允许sudo
不输入用户密码
如前所述,这不是建议的实践,本教程仅包含在本教程中的演示目的。
为了允许sudo user
执行sudo
命令而不提示它密码,请按如下方式在/etc/sudoers
中使用NOPASSWD: ALL
后缀访问行:
%sudo ALL=(ALL:ALL) ALL NOPASSWD: ALL
注:你需要重新启动SSHD服务器以应用更改。
步骤8:禁用直接根目录访问
现在你已经确认你可以使用你的sudo user
,这是第八步和最后一步,禁用直接root访问。
首先,使用你喜欢的文本编辑器打开/etc/ssh/sshd_config
,并且找到包含以下字符串的行,它可能带有一个#
字符。
PermitRootLogin
无论/etc/ssh/sshd_config
中选项的前缀或值如何,你都需要会该行更改为以下内容:
PermitRootLogin no
最后,重启SSHD服务器。
注意:不要忘记通过尝试会SSH作为root
来测试你的更改,如果你不能这样做,这意味着你已经成功完成了所有必要的步骤。
这就是我们的教程。