Uruchomienie chsh nie zmienia powłoki

19

Chcę zmienić moją powłokę z bash na zsh.

Próbowałem uruchomić następujące podczas logowania jako użytkownik zol:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

Co może być nie tak? Jak mogę to naprawić?

Zolomon
źródło
Czy próbowałeś uruchomić „chsh” bez żadnych argumentów jako zol?
George M
Czy używasz czegoś takiego jak ldap / nis itp.?
Ulrich Dangel
O wiele ważniejsze: dlaczego nie daje ci więcej informacji? Ta wiadomość może być dobra dla doświadczonego sysopa, ale dla większości ludzi jest wręcz niegrzeczna. Mam 5 lat przed tym samym problemem i ludzie zastanawiają się, dlaczego Linux nie spędził ostatnich 20 lat na komputerze.
flurbius
Oczekiwałeś, że twoja skorupa zmieni się natychmiast? Zmienić powłokę logowania się chsh, co oznacza, będziesz musiał zalogować się ponownie.
Kusalananda

Odpowiedzi:

17

Modyfikacje konta użytkownika nie zostaną zapisane, jeśli otworzyłeś / etc / passwd (vim / etc / passwd) podczas próby zmiany informacji.

Alternatywnie: spróbuj z usermod (as zol):

$ usermod -s /bin/zsh 

lub

$ sudo usermod -s /bin/zsh zol

Jeśli to nie zadziała, edytuj /etc/passwdręcznie.

sudo vipw
# set zol's shell to /bin/zsh
:wq
fromnaboo
źródło
6
użyj vipwzamiast, vimponieważ ustawiają one odpowiednie blokady plików.
Ulrich Dangel
„Modyfikacje konta użytkownika nie zostaną zapisane, jeśli otworzyłeś / etc / passwd” - ale dlaczego?
Thanatos,
To też nie działa. Kiedy ponownie uruchamiam maszynę wirtualną z systemem Linux (centos7), teraz jest OK!
WeizhongTu
1

Kiedy uruchomić „chsh -l”, jeśli chcesz zobaczyć:

/usr/bin/zsh
/bin/zsh

Następnie użyj:

chsh -s /usr/bin/zsh

Ostrzeżenie: Komendy zostały uruchomione na Fedorze 25, W Ubuntun opcja „-l” z jest wyłączona.

lourencoccc
źródło
-ljest dla mnie nieważną opcją. Jestem na Ubuntu 16.04
byxor
Niestety nie podam informacji o dystrybucji, w której działają polecenia. W moim przypadku testowałem na Fedorze 25. Próbuję na Ubuntu i sprawdzam, czy opcja „-l” jest wyłączona.
lourencoccc
Niezależnie od tego chsh -sdziałało idealnie. Dzięki.
byxor
Opcja jest ważna na Manjaro, ale nadal odmawia zmiany powłoki.
Flurbius
0

Jeśli widzisz chsh: Shell not changed., może to oznaczać, że skorupa została już zmieniona.

Sprawdź, która powłoka jest na liście:

cat /etc/passwd | grep `cd; pwd`

Jeśli jest to poprawne, wyloguj się i zaloguj ponownie, aby zmiana zaczęła obowiązywać.

Kod Bling
źródło
0

Właśnie na to wpadłem. Bez względu na to, co zrobiłem, zalogowanie się i wylogowanie nie zmieniłoby mojej powłoki, ale była ona wymieniona w / etc / shells i / etc / passwd.

w końcu dotarło do mnie: Może jestem zalogowany podczas innej sesji?

Więc zrobiłem

# who

i potwierdziło, że rzeczywiście miałem inne otwarte sesje z innych komputerów:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

Potem zrobiłem:

pkill -KILL -u dom

Zostałem natychmiast wylogowany i po ponownym zalogowaniu: Voila! Shell został zmieniony

Dom
źródło