
我嘗試透過 Emacs 的 Tramp 存取新安裝的系統,就像存取所有其他系統一樣:
C-x C-f /ssh:server|sudo:root@server:/etc/network/interfaces
該命令超時。經過一番調查後,我發現這sudo
似乎dash
不相容,儘管我的sudoers
很簡單:
# grep -P -v '^(#.*)?$' /etc/sudoers
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
當我使用像 Bash 這樣的普通 shell 時,以下命令可以正常工作:
env SHELL=/bin/bash sudo -u root -s -H
但是當我使用 /bin/sh 連結到的破折號時,以下命令
env SHELL=/bin/sh sudo -u root -s -H
產生無限循環
/bin/sh: 0: Bad substitution
/bin/sh: 0: Bad substitution
/bin/sh: 0: Bad substitution
/bin/sh: 0: Bad substitution
/bin/sh: 0: Bad substitution
...
只能透過 來阻止kill -9
。
我希望這樣做apt-get purge dash
,但作業系統堅持保留它。
如何解決這個問題?
答案1
我做到了:
cd /bin
rm sh
ln -s bash sh
apt-get purge dash
apt-mark hold dash
機器仍在啟動。