
나는 다른 모든 시스템과 마찬가지로 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
머신이 아직 부팅 중입니다.