无法以 root 身份运行
sudo -i
并且su
无法以 root 身份工作。
[atguigu@hadoop103 ~]$ sudo -i
[atguigu@hadoop103 ~]$ su
Password:
ssh
以 root 身份登录并立即关闭。
[atguigu@hadoop103 ~]$ ssh root@hadoop103
root@hadoop103's password:
Last login: Mon Jan 18 18:37:57 2021
Connection to hadoop103 closed.
但与其他用户一样
但它可以su
或ssh
像其他用户一样。
[atguigu@hadoop103 ~]$ ssh atguigu@hadoop103
Last login: Mon Jan 18 17:38:44 2021 from xxx
su
其他用户。
[atguigu@hadoop103 ~]$ su atguigu
Password:
[atguigu@hadoop103 ~]$ exit
exit
[atguigu@hadoop103 ~]$
我的/etc/sudoers
有根。它喜欢。
root ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD:ALL
/etc/passwd
具有根字段喜欢
[~]$ cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ps:我的环境是CentOS7。
答案1
您/etc/passwd
指定/bin/bash
为 root 的命令解释器。如果是/sbin/nologin
或/bin/false/
,症状将相同。但事实并非如此。
运行sudo /bin/bash -x
。您可能会看到+ exit
。root 的 Bash 的启动脚本之一包含exit
,因此 shell 退出。
sudo /bin/bash --norc
应该会跳过这些文件。它应该会给你一个提升的 shell。
下一步是找到exit
阻止您正常启动 shell 的这个;并将其删除。它可能位于.bashrc
root 用户的主目录中(您的/etc/passwd
说明主目录是/root
,因此编辑/root/.bashrc
)。还有,/etc/bash.bashrc
但这exit
会影响所有用户,所以我们可以排除它。
请注意,如果您不是唯一的管理员,那么可能是另一个管理员故意将exit
root 置于其中.bashrc
,以防止用户使用 root 的 shell。通过sudo
访问权限,您可以恢复此操作,但请确保您没有干扰其他人对事物应如何运作的总体想法。
答案2
CentOS 默认禁用 root 权限的 SSH(这是理所当然的)。您的权限sudo
由 控制,/etc/sudoers
因此很可能未在此处提及您的用户和组。