
私は他のシステムと同じように、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 のような通常のシェルを使用する場合、次のコマンドは正常に機能します。
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
が、OS がそれを維持するように要求します。
これを修正するにはどうすればいいでしょうか?
答え1
やったよ:
cd /bin
rm sh
ln -s bash sh
apt-get purge dash
apt-mark hold dash
マシンはまだ起動中です。