sudo mit Bindestrich ergibt eine falsche Ersetzung

sudo mit Bindestrich ergibt eine falsche Ersetzung

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 sudoer dashanscheinend inkompatibel ist, obwohl meiner sudoersziemlich 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.

verwandte Informationen