我试图在我的 Ubuntu 服务器上执行一些 root 级别的操作。当我切换到 root 用户时,我发现用户名不同。我通常使用以下命令切换到 root 用户:
sudo su -
但提示显示为不同的用户:webadm-dev
。我检查了/etc/shadow
是否有人试图添加某个用户,但什么也没发现。我尝试切换到 root 用户(切换回登录用户后),如下所示:
sudo su - root
它变了。我退出并尝试再次运行我常用的命令:
sudo su -
用户名又改回了 root 用户。我无法理解这个命令的行为和这种奇怪的变化。请帮忙!
编辑1:根提示中的用户更改行为仅发生过一次,并且从未再出现过。
答案1
的行为sudo su -
如下:
- 这将打开一个登录 shell,因此
/etc/profile
,.profile
和.bashrc
将被加载,这将把用户带到 root 的主目录并使用 root 的环境。
正如问题评论中所讨论的,使用 root shell 的另一种方法是运行sudo -i
。 的行为sudo -i
如下:
sudo su -
它与 (模拟初始登录)选项几乎相同,它将-i
目标用户的密码数据库条目指定的 shell 作为登录 shell 运行。这意味着登录特定的资源文件(例如.profile
或.bashrc
).login
将被 shell 读取和执行。
sudo -i
优先使用的原因sudo su -
是该命令将以使用的用户身份而不是 root 身份进行记录,从而能够在多用户环境中轻松审核命令(谁运行了什么)。
关于问题的另一部分(为什么提示显示为不同的用户),目前尚不清楚为什么首先会显示这种行为。由于环境中安装了一些其他审计软件(网络ADM再具体一点)某物是该用户所为。该行为不可重现,并且更像是一种边缘情况。