
Ich habe versucht, auf ein neu installiertes System über Emacs' Tramp zuzugreifen, so wie ich es mit allen meinen anderen Systemen mache:
C-x C-f /ssh:server|sudo:root@server:/etc/network/interfaces
Bei diesem Befehl ist die Zeit abgelaufen. Nach einigen Nachforschungen habe ich herausgefunden, dass sudo
er dash
anscheinend inkompatibel ist, obwohl meiner sudoers
ziemlich einfach ist:
# 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
Wenn ich eine normale Shell wie Bash verwende, funktioniert der folgende Befehl einwandfrei:
env SHELL=/bin/bash sudo -u root -s -H
Wenn ich aber den Bindestrich verwende, mit dem /bin/sh verknüpft ist, erscheint der folgende Befehl
env SHELL=/bin/sh sudo -u root -s -H
erzeugt eine Endlosschleife
/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
...
was nur dadurch gestoppt werden kann kill -9
.
Ich möchte das tun apt-get purge dash
, aber das Betriebssystem besteht darauf, es beizubehalten.
Wie kann ich das beheben?
Antwort1
Ich tat es:
cd /bin
rm sh
ln -s bash sh
apt-get purge dash
apt-mark hold dash
Die Maschine bootet noch.