使用密码切换到非 root 时 su 身份验证失败

使用密码切换到非 root 时 su 身份验证失败

我知道 gqqtest 的密码,因为我可以通过 ssh 登录。

> psftp [email protected]
Using username "gqqtest".
[email protected]'s password:
Remote working directory is /home/gqqtest

现在我使用另一个帐户登录,进入 Ubuntu 后,我使用 su 切换到 gqqtest。

[email protected]:~$ su - gqqtest
Password:
su: Authentication failure
[email protected]:~$ sudo su - gqqtest
[sudo] password for gqq:
[email protected]:~$ exit
logout

只是为了验证,我尝试了一下sudo su - gqqtest并成功了。

为什么即使密码正确也不允许su我切换到非 root 身份?

我到处搜索过,例如。为什么 su 会因“身份验证错误”而失败?,它们都是处理root或者空密码。

$ type -a su; stat $(command -v su)
su is /usr/bin/su
su is /bin/su
  File: /usr/bin/su
  Size: 67816           Blocks: 136        IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 4200703     Links: 1
Access: (0754/-rwxr-xr--)  Uid: (    0/    root)   Gid: ( 1123/   wheel)
Access: 2021-02-02 15:53:54.794314648 +0800
Modify: 2020-07-21 15:49:28.000000000 +0800
Change: 2021-02-02 15:53:02.314466458 +0800
 Birth: -

答案1

由于某种原因,您su缺少 setuid 位。没有它,su就没有访问权限,需要进行身份验证并切换到另一个用户。如果是这样的话,我认为您的系统在很多方面都出现了问题,但这个特定问题可以使用以下方法解决:

sudo chmod u+s /usr/bin/su

相关内容