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 身份登錄時重新安裝bash
,apt-get install --reinstall bash
但錯誤仍然存在。我怎樣才能使使用 bash 登錄到 root 成為可能su
?我只是注意到,如果在輸入 root 密碼後按 enter 和被轉儲回我的原始使用者之間的時間跨度內,我嘗試按
ctrl
+c
,su
工作並且我在 bash 中以 root 身份登錄。如果我
root
使用 shell 登錄並/bin/bash
從那裡執行,它會返回一個分段錯誤錯誤。我試著跑步
/bin/bash -x
。它似乎永遠執行列印/opt/spark//bin:/opt/spark//bin:/opt/spark//bin
。當被迫用ctrl
+停止時c
,它會bash
與root
使用者一起執行,就好像什麼都沒發生一樣。strace /bin/bash
似乎表明該命令試圖/root/.bashrc
一遍又一遍地打開,直到它出現段錯誤。
您的問題源於
~/.bashrc
文件中的無限循環:export SPARK_HOME=/opt/spark/ export PATH=$PATH:$SPARK_HOME/bin source ~/.bashrc
當放置在您的 ~/.bashrc 文件中時,您將成功地 su 到使用者並執行您的 shell,但您永遠不會得到提示。
最小的解決方法是註釋掉該
source
行。