我知道 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