我已经设置了两个具有完全相同映像的虚拟机(debian-11.3.0-amd64-netinst - 无头)。
我在这些机器上唯一接触过的东西是:
- 根密码
- 系统密码
- 安装 sudo 命令
- 更改的 IP 地址
- 更改 SSH 端口
- 安装了 UFW,更改了 SSH 端口并激活了 OpenSSH 和 WWW Full
在我首先创建的机器上,一切正常:我可以通过用户 SSH 连接到它sysad
,然后使用su root
root 密码来获得 root 访问权限(默认情况下禁用 ssh root 登录)。
在我创建的第二台机器上(具有完全相同的图像),我可以通过 SSH 与用户连接,sysad
但su root
会抛出“身份验证失败”。
journalctl
告诉我基本上同样的事情:
pam_unix(su:auth): authentication failure...
我检查了两个系统的组和 uid,配置完全相同。另外,我 100% 确定密码。 Su + root 密码直接在机器上执行(通过虚拟机管理程序)时有效。我还多次手动输入密码,甚至尝试通过在用户名字段中输入密码以查看明文形式来检查错误的字符集。
有人知道我在这里缺少什么吗?
答案1
您提到您专门安装了sudo
,但随后您解释了您su
用于获取root访问权限。尽管这两个命令实现了相同的最终结果,但它们并不相同。
两者之一但不是两者:
sudo -s # Ask for root access, usually authenticate with the caller's password
su # Ask for root access, authenticate with the target's (root) password
另一种可能性是,您的源用户名位于能够使用其中一个命令的必要组中,但您需要注销并再次登录才能激活它。
不仅可以在命令中检查组成员身份/etc/group
,还可以使用该命令检查组成员身份id
。
答案2
除了提到的内容之外,
/etc/sudoers
通过做看到visudo
(至少在我熟悉的 RHEL 7 中)有一行%wheel
要求用户成为车轮组才能成功su
root。我目前根据记忆不确定这对sudo
其他命令之前的命令的使用有多大影响。
您还可以考虑编辑/etc/ssh/sshd_config
和取消注释,并PermitRootLogin YES
允许您直接以 root 身份在虚拟机之间进行 SSH,从而方便访问,而不是直到您弄清楚您的su
设置sudo
。
xxx 一般来说,/etc/pam.d
如果这都是默认且未修改的,则不会影响您正在做的事情(至少对于我在 RHEL 下熟悉的内容,我认为 Debian 也是如此)xxx
更新:/etc/pam.d/su
这是RHEL 7.9 的默认设置
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
我错误地没有在下面说什么/etc/pam.d
。/etc/pam.d/su
首先,您需要检查您的文件;知道至少在 RHEL 7.9 中还有 和su-l
。sudo
sudo-i