usermod działał jak urok. Czy jest jakiś sposób na ustawienie domyślnej bash po dodaniu nowego użytkownika, czy też muszę za każdym razem uruchamiać polecenie?
Jeśli używasz adduser, powinien ustawić domyślnie bash. Domyślnie jest skonfigurowany w /etc/adduser.conf. W przeciwnym razie podaj powłokę jawnie za pomocą useradd.
jordanm
5
Edytujesz, /etc/passwdgdzie ostatni wpis jest domyślną powłoką. Zrób to /bin/bash.
Alternatywnie, możesz zmienić, zmienić domyślne ustawienie systemowe, aby /bin/shnie być bash.
Yo, o co chodzi z przegłosowaniem drive-by? Na przykład Ubuntu domyślnie /bin/shjest /bin/dash. A dla tego, co jest warte, pozostałe dwie odpowiedzi są identyczne i osiągają ten sam cel na różne sposoby. Cokolwiek.
Dirk Eddelbuettel
4
Ręczne edytowanie /etc/passwdjest bardzo odradzane. Błąd edycji może zepsuć loginy wszystkim użytkownikom, wymagając naprawy nośnika odzyskiwania lub rozruchu w trybie pojedynczego użytkownika. Istnieją narzędzia takie jak usermodzmiana /etc/passwd.
jordanm
1
Nonsens. Działa tutaj Linux od '94. Nigdy nie odpadł /etc/passwd.
Dirk Eddelbuettel
2
Dobrze słyszeć, że byłeś bardzo ostrożny. Nie każdy ma. Kolejna uwaga na temat twojej aktualizacji, uruchamiająca się /bin/bashtak /bin/shsamo jak jej uruchomienie --posix, co może mieć niepożądane skutki.
jordanm
Słuchaj, jestem programistą / opiekunem Debiana od 1995 roku. Kiedyś domyślnie używaliśmy bash, z różnych powodów przeszliśmy na prostsze powłoki. I zostały z wykorzystaniem /bin/bashjako swojej skorupy te wszystkie lata na wszystkich maszynach. Potrzebujesz bardziej konkretnego argumentu.
Dirk Eddelbuettel
2
Musisz edytować swój profil użytkownika, możesz to zrobić bezpośrednio, edytując /etc/passwdplik lub możesz użyć usermodpolecenia, aby zrobić to za Ciebie. Składnia, której szukasz, wygląda mniej więcej tak:
Domyślna powłoka systemowa /bin/shw najnowszych wydaniach Ubuntu jest skonfigurowana tak, aby była /bin/dash. Po prostu uruchamiając następujące polecenie:
sudo dpkg-reconfigure dash
możesz zmienić to z powrotem na stare domyślne /bin/bash.
Dzięki temu możesz osiągnąć pożądany efekt posiadania bashinteraktywnej powłoki bez zmiany jakichkolwiek ustawień użytkownika (nie chshlub usermod), i będzie działać dla wszystkich użytkowników, którzy aktualnie ustawili powłokę na /bin/sh.
Jest tylko jedna mała wada: czas uruchamiania Ubuntu może się nieznacznie wydłużyć, ponieważ dashwymaga mniejszej ilości pamięci do załadowania i nieco szybszej pracy (nic dziwnego - jest tak ograniczony pod względem funkcji). Myślę jednak, że trudno będzie zmierzyć ten efekt, szczególnie w środowisku hostingowym.
Czasami denerwujące jest także wyświetlanie skryptów powłoki, które nie działają poprawnie, ponieważ używają niektórych bashzaawansowanych funkcji, które nie są obsługiwane przez dash. Korzystanie z tego przepisu sprawi, że tak się nie stanie.
Aby uzyskać więcej informacji, zobacz wiki Ubuntu na ten temat .
powinieneś rozdzielić przypadki użycia: /bin/shjest używany jako interpreter skryptów powłoki kompatybilnych z POSIX - niekoniecznie najlepsza powłoka interaktywna; jeśli chcesz bashbyć powłoką systemową, powinieneś ustawić preferowaną powłokę logowania za pomocą chshlub odpowiednich adduserwywołań. użycie dpkg-reconfigurejest złym wyborem, jeśli użytkownik A chce zsh, a użytkownik B chce bash i obaj nalegają na ustawienie / bin / sh jako domyślnej powłoki.
umläute
jeśli użytkownik A jest wyraźnie skonfigurowany zsh, a użytkownik B bashbędzie go miał. Jeśli userC jest skonfigurowany sh, będzie miał bash, co i tak jest aktualnym domyślnym Ubuntu dla nowych użytkowników
mvp
Jasne, ale rozwiązanie zaproponował coś podobnego dpkg-reconfigure zshdo zestawu zshjako / bin / sh, a następnie dpkg-reconfigure dashdo zestawu dashjak / bin / sh, który jest swego rodzaju impasu; mówię głównie, że lepiej ustawić powłokę logowania na powłokę, której chcemy używać, niż przechodzić przez obręcze, aby uczynić / bin / sh dobrą powłoką logowania.
umläute
Powiedziałem tylko, że dpkg-reconfigure dashmoże to shwskazywać bash, a nie okaleczyć dash. Wszystkie pozostałe pociski pozostaną nienaruszone.
mvp
1
W przypadku, gdy próbujesz użyć konta współdzielonego (z dowolnego powodu) i nie możesz zmienić domyślnej powłoki, możesz uruchomić
ssh -t <user@hostname> bash -l
Jeśli chcesz uchronić swoje środowisko przed jakąś inną powłoką, możesz najpierw uruchomić tę powłokę; na przykład
Odpowiedzi:
Jako zwykły użytkownik możesz zmienić domyślną powłokę logowania za pomocą
chsh
polecenia. Oto przykład:Inną opcją jest użycie usermod jako root:
źródło
adduser
, powinien ustawić domyślnie bash. Domyślnie jest skonfigurowany w/etc/adduser.conf
. W przeciwnym razie podaj powłokę jawnie za pomocąuseradd
.Edytujesz,
/etc/passwd
gdzie ostatni wpis jest domyślną powłoką. Zrób to/bin/bash
.Alternatywnie, możesz zmienić, zmienić domyślne ustawienie systemowe, aby
/bin/sh
nie być bash.źródło
/bin/sh
jest/bin/dash
. A dla tego, co jest warte, pozostałe dwie odpowiedzi są identyczne i osiągają ten sam cel na różne sposoby. Cokolwiek./etc/passwd
jest bardzo odradzane. Błąd edycji może zepsuć loginy wszystkim użytkownikom, wymagając naprawy nośnika odzyskiwania lub rozruchu w trybie pojedynczego użytkownika. Istnieją narzędzia takie jakusermod
zmiana/etc/passwd
./etc/passwd
./bin/bash
tak/bin/sh
samo jak jej uruchomienie--posix
, co może mieć niepożądane skutki./bin/bash
jako swojej skorupy te wszystkie lata na wszystkich maszynach. Potrzebujesz bardziej konkretnego argumentu.Musisz edytować swój profil użytkownika, możesz to zrobić bezpośrednio, edytując
/etc/passwd
plik lub możesz użyćusermod
polecenia, aby zrobić to za Ciebie. Składnia, której szukasz, wygląda mniej więcej tak:źródło
Domyślna powłoka systemowa
/bin/sh
w najnowszych wydaniach Ubuntu jest skonfigurowana tak, aby była/bin/dash
. Po prostu uruchamiając następujące polecenie:możesz zmienić to z powrotem na stare domyślne
/bin/bash
.Dzięki temu możesz osiągnąć pożądany efekt posiadania
bash
interaktywnej powłoki bez zmiany jakichkolwiek ustawień użytkownika (niechsh
lubusermod
), i będzie działać dla wszystkich użytkowników, którzy aktualnie ustawili powłokę na/bin/sh
.Jest tylko jedna mała wada: czas uruchamiania Ubuntu może się nieznacznie wydłużyć, ponieważ
dash
wymaga mniejszej ilości pamięci do załadowania i nieco szybszej pracy (nic dziwnego - jest tak ograniczony pod względem funkcji). Myślę jednak, że trudno będzie zmierzyć ten efekt, szczególnie w środowisku hostingowym.Czasami denerwujące jest także wyświetlanie skryptów powłoki, które nie działają poprawnie, ponieważ używają niektórych
bash
zaawansowanych funkcji, które nie są obsługiwane przezdash
. Korzystanie z tego przepisu sprawi, że tak się nie stanie.Aby uzyskać więcej informacji, zobacz wiki Ubuntu na ten temat .
źródło
/bin/sh
jest używany jako interpreter skryptów powłoki kompatybilnych z POSIX - niekoniecznie najlepsza powłoka interaktywna; jeśli chceszbash
być powłoką systemową, powinieneś ustawić preferowaną powłokę logowania za pomocąchsh
lub odpowiednichadduser
wywołań. użyciedpkg-reconfigure
jest złym wyborem, jeśli użytkownik A chce zsh, a użytkownik B chce bash i obaj nalegają na ustawienie / bin / sh jako domyślnej powłoki.zsh
, a użytkownik Bbash
będzie go miał. Jeśli userC jest skonfigurowanysh
, będzie miałbash
, co i tak jest aktualnym domyślnym Ubuntu dla nowych użytkownikówdpkg-reconfigure zsh
do zestawuzsh
jako / bin / sh, a następniedpkg-reconfigure dash
do zestawudash
jak / bin / sh, który jest swego rodzaju impasu; mówię głównie, że lepiej ustawić powłokę logowania na powłokę, której chcemy używać, niż przechodzić przez obręcze, aby uczynić / bin / sh dobrą powłoką logowania.dpkg-reconfigure dash
może tosh
wskazywaćbash
, a nie okaleczyćdash
. Wszystkie pozostałe pociski pozostaną nienaruszone.W przypadku, gdy próbujesz użyć konta współdzielonego (z dowolnego powodu) i nie możesz zmienić domyślnej powłoki, możesz uruchomić
Jeśli chcesz uchronić swoje środowisko przed jakąś inną powłoką, możesz najpierw uruchomić tę powłokę; na przykład
źródło
-l
opcja?Ani dla mnie,
chsh
aniusermod
nie pracowałem, ale odkryłem, że możesz to zrobić za pomocą PuTTY.Idź do
Connection > SSH
i ustawićRemote command
siębash
.Zauważ, że nie będziesz w stanie
exit
ustawić domyślnej powłoki, po prostu zamknie połączenie.źródło