Jak zmienić domyślną powłokę dla WSZYSTKICH UŻYTKOWNIKÓW do bashowania?

38

Chcę, aby każdy nowy użytkownik domyślnie miał bash jako swoją powłokę.

Wiem, że aby zmienić własną powłokę na bash, użyłbyś polecenia „chsh -s / bin / bash”, ale jak mam automatycznie ustawić domyślną powłokę wszystkich przyszłych użytkowników na bash?

młynek do kawy
źródło

Odpowiedzi:

63

Dodaj użytkownika

adduserPlik jest domyślnie /etc/adduser.conf. Domyślna powłoka zdefiniowana przez DSHELLzmienną jest /bin/bashdomyślnie.

useradd

Najprawdopodobniej nie jest to potrzebne, ponieważ useradd jest narzędziem bardzo niskiego poziomu i prawie nigdy nie jest używane bezpośrednio.

Jeśli używasz useradd, edytuj /etc/default/useraddplik szkieletu (nie zapomnij jednak wykonać kopii zapasowej).

Ustaw SHELLzmienną na /bin/bashzamiast /bin/sh.

Teraz za każdym razem, gdy useradddodajesz nowego użytkownika, bashautomatycznie jest to jego domyślna powłoka.

Już istniejący użytkownicy

Jeśli chcesz zmienić powłokę już istniejących użytkowników, musisz edytować /etc/passwdplik (upewnij się, że masz kopię zapasową).

Oto opis kolumn

  1. Nazwa użytkownika
  2. opcjonalne zaszyfrowane hasło
  3. numeryczny identyfikator użytkownika
  4. numeryczny identyfikator grupy
  5. nazwa użytkownika lub pole komentarza
  6. katalog domowy użytkownika
  7. opcjonalny interpreter poleceń użytkownika

W tej kolejności oddzielone dwukropkami (:) w ten sposób.

root:x:0:0:root:/root:/bin/bash

Aby uzyskać więcej informacji o tym pliku, odwiedź stronę podręcznika man man 5 passwd.

Oktawian Damiean
źródło
4
Myślę, że bezpieczniejszym sposobem zmiany powłoki innego użytkownika byłoby coś takiego sudo -u $USER chsh -s $SHELL.
Jack O'Connor
1
@ JackO'Connor również powinieneś zamieścić to jako odpowiedź.
Octavian Damiean
Wydaje się, że nie działa to w Ubuntu 16.04. Czy ktoś zna poprawkę.
Harshdeep
26

Jak zauważył Octavian, sposób zmiany ustawień domyślnych zależy od sposobu tworzenia użytkownika. Próbowałem teraz utworzyć nowego użytkownika za pomocą moich ustawień Gnome i wydaje się /etc/default/useradd, że nastąpi , więc może to być najlepszy wybór. Dla istniejących użytkowników najbezpieczniejszym sposobem zmiany powłoki logowania innej osoby jest użycie usermod :

usermod -s /bin/bash $USERNAME

Jeśli nie jesteś rootem, musisz to zrobić sudo . Alternatywą jest sudo do użytkownika, którego chcesz zmodyfikować i po prostu uruchom polecenie chsh , w następujący sposób:

sudo -u $USERNAME chsh -s /bin/bash

Najlepiej unikać /etc/passwdręcznej edycji , ponieważ popełniony tam błąd może popsuć różne rzeczy.

Jack O'Connor
źródło
1

Jeśli naprawdę chcesz, aby wszyscy użytkownicy na serwerze mieli bash (co było faktycznie zadanym pytaniem), możesz uruchomić polecenie:

sudo dpkg-reconfigure dash

A następnie wybierz NIE myślnik. Jak wyjaśniono w tej odpowiedzi,

Jak mogę / bin / sh wskazać na / bin / bash?

To nie tylko ustawia bash jako domyślną powłokę, ale także poprawnie zmienia sh i strony man.

Mam nadzieję że to pomoże.

MontyThreeCard
źródło