
Я попытался получить доступ к недавно установленной системе через Tramp в Emacs так же, как я делаю это со всеми остальными своими системами:
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
Но когда я использую dash, с которым связан /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
Машина все еще загружается.