在linux系统中,sudo是允许普通用户以超级管理员权限执行命令的工具,而sudo密码就是执行sudo命令时需要输入的验证凭证,用来确认当前操作是经过授权的合法操作。

sudo密码的本质
sudo密码默认情况下就是当前执行sudo命令的普通用户自己的登录密码,并不是独立的专属密码。当普通用户被加入到sudo权限组后,执行需要高权限的操作时,系统会要求输入该用户的密码来验证身份。
比如当前登录的普通用户是test,且test已经拥有sudo权限,那么执行sudo apt update命令时,需要输入的密码就是test用户的登录密码,而不是root账户的密码。
sudo密码和root密码的关系
很多用户会混淆sudo密码和root密码,两者的区别如下:
- sudo密码是普通用户的登录密码,用于验证普通用户的高权限操作请求
- root密码是linux系统超级管理员账户的独立密码,直接登录root账户或者切换为root用户时需要使用
- 部分linux发行版默认不设置root密码,仅通过sudo来赋予普通用户管理权限,这种情况下root账户无法直接登录,只能通过sudo -i命令切换,此时切换时输入的还是普通用户的密码
忘记sudo密码怎么重置
如果忘记了拥有sudo权限的普通用户密码,需要先切换到root用户重置该普通用户的密码,步骤如下:
步骤1:切换到root用户
如果知道root密码,直接执行以下命令切换:
su - # 输入root密码后回车即可切换到root用户
如果不知道root密码,需要重启系统进入单用户模式,不同发行版进入单用户模式的方式略有差异,一般是在开机引导界面按e键编辑启动项,在linux开头的行末尾添加init=/bin/bash,然后按ctrl+x启动,启动后默认就是root权限。
步骤2:重置普通用户密码
切换到root用户后,执行以下命令重置目标用户的密码:
passwd test # 按照提示输入新密码,再次确认新密码即可 # test是忘记密码的拥有sudo权限的普通用户名,替换为实际用户名
步骤3:重启系统生效
密码重置完成后,执行reboot命令重启系统,之后使用该普通用户执行sudo命令时,输入新设置的密码即可通过验证。
sudo权限的配置方式
只有被加入到sudo权限组的用户才能使用sudo命令,配置sudo权限可以通过修改/etc/sudoers文件实现,操作如下:
# 使用visudo命令编辑sudoers文件,该命令会自动检查语法错误,避免配置出错 visudo
在打开的文件中找到%sudo ALL=(ALL:ALL) ALL这一行,这是sudo权限组的配置,只要用户属于sudo组就拥有sudo权限。如果需要给单个用户添加sudo权限,可以在文件末尾添加如下内容:
# 给test用户添加所有主机的所有权限 test ALL=(ALL:ALL) ALL
如果需要设置sudo命令免密码执行,可以添加如下配置:
# test用户执行所有sudo命令都不需要输入密码 test ALL=(ALL:ALL) NOPASSWD: ALL
常见问题说明
1. 输入sudo密码时为什么看不到输入内容?
这是linux系统的安全设计,输入密码时终端不会显示任何字符,包括星号,输入完成后直接按回车即可,只要密码正确就能通过验证。
2. 为什么输入正确的用户密码还是提示sudo密码错误?
这种情况一般是当前用户没有被加入到sudo权限组,需要按照上面的sudo权限配置方式给用户添加权限后再尝试。