我无法以 root 身份进行 su 或 sudo -i,也无法以 root 身份进行 ssh。但它们都可以与其他用户一起使用。

我无法以 root 身份进行 su 或 sudo -i,也无法以 root 身份进行 ssh。但它们都可以与其他用户一起使用。

截图

无法以 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.

但与其他用户一样

但它可以sussh像其他用户一样。

[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 的这个;并将其删除。它可能位于.bashrcroot 用户的主目录中(您的/etc/passwd说明主目录是/root,因此编辑/root/.bashrc)。还有,/etc/bash.bashrc但这exit会影响所有用户,所以我们可以排除它。

请注意,如果您不是唯一的管理员,那么可能是另一个管理员故意将exitroot 置于其中.bashrc,以防止用户使用 root 的 shell。通过sudo访问权限,您可以恢复此操作,但请确保您没有干扰其他人对事物应如何运作的总体想法。

答案2

CentOS 默认禁用 root 权限的 SSH(这是理所当然的)。您的权限sudo由 控制,/etc/sudoers因此很可能未在此处提及您的用户和组。

相关内容