su 在 /etc/passwd 中默默地失败并显示 bash

su 在 /etc/passwd 中默默地失败并显示 bash

每当我在 Debian 机器上以普通用户身份登录时尝试使用 su 进入 root 权限su时,它都会默默失败,将我转回原来的用户和 shell。在搜索这个问题时,我遇到了一些解决方案,这些解决方案解释了如果我尝试登录的用户在 中具有无效的 shell /etc/passwd,则应该会发生这种行为,但情况似乎并非如此,文件的第一行是:root:x:0:0:root:/root:/bin/bash

我可以su到root的唯一方法是:

su -s /bin/sh

由于问题似乎出在bash安装本身,因此我尝试以 root 身份登录时重新安装bashapt-get install --reinstall bash但错误仍然存​​在。如何才能使用 bash 登录 root su

我只是注意到,如果在输入 root 密码后按 Enter 和转储回原始用户之间的时间间隔内,我尝试按ctrl+ csu工作,并且我在 bash 中以 root 身份登录。

root如果我使用 shell登录并/bin/bash从那里运行,它会返回一个分段错误错误。

我尝试跑步/bin/bash -x。它似乎永远运行打印/opt/spark//bin:/opt/spark//bin:/opt/spark//bin。当使用ctrl+强制停止时c,它会bashroot用户一起运行,就好像什么也没发生一样。strace /bin/bash似乎表明该命令尝试/root/.bashrc一遍又一遍地打开,直到出现段错误。

答案1

您的问题源于文件中的无限循环~/.bashrc

export SPARK_HOME=/opt/spark/ 
export PATH=$PATH:$SPARK_HOME/bin 
source ~/.bashrc

当放入 ~/.bashrc 文件中时,您将成功 su 到用户并运行您的 shell,但您永远不会收到提示。

最小的修复方法是注释掉该source行。

相关内容