2 votes

sudo avec dash donne une mauvaise substitution

J'ai essayé d'accéder à un système nouvellement installé via Emacs' Tramp comme je le fais avec tous mes autres systèmes :

C-x C-f /ssh:server|sudo:root@server:/etc/network/interfaces

Cette commande a expiré. Après quelques recherches, j'ai découvert que sudo y dash semblent incompatibles, bien que mon sudoers est assez simple :

# 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

Lorsque j'utilise un Shell normal comme Bash, la commande suivante fonctionne correctement :

env SHELL=/bin/bash sudo -u root -s -H

Mais lorsque j'utilise le tiret, auquel /bin/sh est lié, la commande suivante est exécutée

env SHELL=/bin/sh sudo -u root -s -H

génère une boucle sans fin

/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
...

qui ne peut être arrêtée que par kill -9 .

Je souhaite faire apt-get purge dash mais le système d'exploitation insiste pour le conserver.

Comment résoudre ce problème ?

0voto

ceving Points 251

Je l'ai fait :

cd /bin
rm sh
ln -s bash sh
apt-get purge dash
apt-mark hold dash

La machine démarre toujours.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X