为什么我不能以 su 身份转为 root?

为什么我不能以 su 身份转为 root?

我曾经sudo passwd root成功设置了root的密码,然后我尝试su到root,但是失败了,没有任何反应。

ubuntu@VM-44-117-ubuntu:~$ sudo su root
ubuntu@VM-44-117-ubuntu:~$

您可以看到用户名没有改变。

然后我尝试使用,su root但用户名仍然没有改变。

ubuntu@VM-44-117-ubuntu:~$ su root
Password: 
ubuntu@VM-44-117-ubuntu:~$ 

我怎样才能使 su 正确运行?

答案1

默认采用“根”部分。因此:

doug@s15:~$ sudo su
[sudo] password for doug:
root@s15:/home/doug# exit
exit
doug@s15:~$

当然,我 (doug) 是 sudo 成员,因此被允许成为 root:

doug@s15:~$ groups
doug adm cdrom sudo dip plugdev lxd lpadmin sambashare libvirtd

不过,您也可以指定要切换到的用户名。例如:

doug@s15:~$ sudo su root    
root@s15:/home/doug# exit
exit
doug@s15:~$ sudo su richard
richard@s15:/home/doug$ exit
exit

更多信息请参阅蘇曼页。

现在,综上所述,您系统上的行为确实看起来很奇怪。如果我取消用户 richard 的 sudo 权限:

doug@s15:~$ sudo deluser richard sudo
Removing user `richard' from group `sudo' ...
Done.

然后,在另一个终端中,以 richard 身份登录并尝试使用 su,我得到:

richard@s15:~$ groups
richard adm cdrom dip plugdev lxd lpadmin sambashare libvirtd
richard@s15:~$ sudo su
[sudo] password for richard:
richard is not in the sudoers file.  This incident will be reported.
richard@s15:~$

那么为什么你什么都没得到?(这是你最初的问题)?
你的计算机是虚拟的,并且托管在其他地方吗?托管网站经常会为 root 等做一些奇怪的事情。你的 su 版本符合这个要求吗?:

-rwsr-xr-x 1 root root 40128 May 16  2017 /bin/su

答案2

您可以完全避免这种情况,而不会损害系统的安全性。如果您需要 root shell:

sudo -s

现在,您以 root 身份进入 shell。正常注销即可返回。诚然,在某些情况下,让 root 拥有密码似乎很不错,例如当您需要运行 rsync 之类的服务来设置或恢复联网计算机上的内容时。在这些情况下,我通常会让服务拉动而不是推送。例如,

sudo rsync -a you@remotehost:/root_owned_dirs/ /root_owned_dirs/

如果两边都需要 root 权限,我会尝试在暴露在外界最少的机器上设置 root 密码,然后从暴露较多的那一边拉取。这样,如果我很着急,错误就会出现在较难攻击的系统上。

在这种情况下:

sudo passwd root

设置密码,然后

su

并且您有一个 root 身份的 shell。

我的秘密议程改掉愚蠢的习惯运行“sudo su”。字面意思是,

“哦,计算机,请授予我比现在更大的权限,这样我就可以向你请求更大的权限。”

这不是糟糕的,太傻了。

答案3

尝试这个:

就像你之前做的那样:

$ sudo su
[sudo] password for doug:

这将提示您输入 root 的新密码:

root@s15:/home/doug# passwd
[[new password for root]]

像之前一样退出

$ exit

现在尝试使用上面提供的密码以 root 身份登录

$ su

相关内容