Mój serwer został naruszony przez kogoś, kto używał powłoki Zsh. Czuję się bardziej komfortowo przy użyciu powłoki bash, ponieważ takie są ustawienia domyślne Ubuntu i OS X (dwa główne systemy operacyjne, których używam). Ale te pytania dotyczą serwera Ubuntu. Mam 4 strony działające na tym serwerze, używam byobu, używam tmux, używam ruby / ruby na szynach, node.js, apache, kilka demonów. Jeśli zmienię bieżącą powłokę roota z zsh na bash, czy mogą wystąpić jakieś negatywne skutki uboczne, które mogą wynikać z tego przełączenia? Na przykład, czy procesy zostaną zabite, ponieważ ich proces nadrzędny (powłoka) został przełączony?
command-line
bash
zsh
JohnMerlino
źródło
źródło
Odpowiedzi:
Zmiana powłoki, via
sudo chsh --shell=/bin/bash $USER
zmieni pole powłoki w/etc/passwd
. Ta wartość jest sprawdzana tylko podczas logowania, gdy system nie ma pojęcia, której powłoki użyć.Nie ma to wpływu na uruchamianie procesów, niezależnie od tego, czy zostały uruchomione
zsh
,bash
apache
czyevil_overlord's_program
nieźródło
login
Program działa w procesie, jak wszystko. Kiedy wpuszcza cię, tworzy kolejny proces z twoim UID itp. I uruchamia / bin / bash (z / etc / passwd). Powłoka bash odczytuje ze STDIN (skonfigurowane przezlogin
) i rozwidla / wykona wbudowane polecenia, czeka na ich zakończenie i zapętla więcej poleceń. Pomysł „kontrolowania terminala” nie jest użyteczny w systemach Unix / Linux.Odpowiedź z przepełnienia stosu ( przejście z zsh na bash ):
źródło
Otwórz terminal i użyj następującego polecenia:
źródło
which bash
podałby bezwzględną ścieżkębash
, więc byłoby tak samo, gdyby/bin/bash
tobash
było miejsce.W systemie Mac OS Catalina
Zmień na zsh:
Zmień na bash:
źródło