Jak zmienić domyślną powłokę użytkownika w systemie Linux
Powłoka, czyli interfejs wiersza poleceń, jest kluczowym elementem systemu operacyjnego Linux, zapewniającym użytkownikom potężny sposób interakcji z systemem.
Każdy użytkownik systemu Linux jest powiązany z domyślną powłoką, która określa interpreter poleceń, którego używa podczas interakcji z systemem.
Zmiana domyślnej powłoki użytkownika może być konieczna z różnych powodów, takich jak osobiste preferencje lub potrzeba określonych funkcji oferowanych przez inną powłokę.
W tym artykule przyjrzymy się procesowi zmiany domyślnej powłoki użytkownika w systemie Linux. Powłoka to program, który akceptuje i interpretuje polecenia; istnieje kilka powłok typu open source, takich jak bash, sh, ksh, zsh, fish, i wiele innych mniej znanych powłok dostępnych w systemie Linux.
Powłoka Bash w systemie Linux
Bash (/bin/bash) to popularna powłoka w większości, jeśli nie we wszystkich dystrybucjach Linuksa i zwykle jest to domyślna powłoka dla kont użytkowników.
Istnieje kilka powodów zmiany powłoki użytkownika w systemie Linux, w tym:
- Aby zablokować lub wyłączyć normalne logowanie użytkowników w systemie Linux przy użyciu powłoki nologin.
- Użyj skryptu lub programu opakowującego powłokę do rejestrowania poleceń użytkownika przed wysłaniem ich do powłoki w celu wykonania. Tutaj określasz opakowanie powłoki jako powłokę logowania użytkownika.
- Aby sprostać wymaganiom użytkownika (chce korzystać z określonej powłoki), zwłaszcza z uprawnieniami administracyjnymi.
Podczas tworzenia kont użytkowników za pomocą narzędzi useradd lub adduser flaga --shell
może zostać użyta do określenia nazwy powłoki logowania użytkownika innej niż określona w odpowiednich plikach konfiguracyjnych.
Dostęp do powłoki logowania można uzyskać z interfejsu tekstowego lub poprzez SSH ze zdalnego komputera z systemem Linux. Jeśli jednak zalogujesz się za pomocą graficznego interfejsu użytkownika (GUI), możesz uzyskać dostęp do powłoki z emulatorów terminali, takich jak xterm, konsola i wiele innych.
Wyświetl listę dostępnych powłok w systemie Linux
W systemie Linux plik /etc/shells jest powszechnie używany do przechowywania listy zainstalowanych w systemie prawidłowych powłok logowania. Ten plik pomaga w określeniu, które powłoki są dostępne dla użytkowników i mogą zostać ustawione jako powłoki domyślne za pomocą poleceń takich jak chsh.
Aby wyświetlić listę dostępnych powłok w systemie Linux, możesz użyć następującego polecenia:
cat /etc/shells
Przykładowy wynik:
/etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen
Zanim przejdziesz dalej, pamiętaj, że:
- Użytkownik może zmienić własną powłokę na dowolną, która jednak musi być wymieniona w pliku /etc/shells.
- Tylko root może uruchomić powłokę, która nie jest wymieniona w pliku /etc/shells.
- Jeśli konto ma ograniczoną powłokę logowania, tylko root może zmienić powłokę tego użytkownika.
Znajdź bieżącą powłokę w systemie Linux
Przed zmianą domyślnej powłoki użytkownika ważne jest, aby określić aktualną powłokę, uruchamiając następujące polecenie echo, które wyświetla bieżącą powłokę dla zalogowanego użytkownika.
echo $SHELL
/bin/bash
Dane wyjściowe pokazują, że użytkownik aktualnie używa powłoki Bash (/bin/bash).
Zmiana domyślnej powłoki w systemie Linux
Omówmy teraz trzy różne sposoby zmiany domyślnej powłoki użytkownika systemu Linux.
1. Narzędzie usermod
Komenda usermod służy do modyfikowania szczegółów konta użytkownika, przechowywanych w pliku /etc/passwd oraz opcji -s
lub --shell
służy do zmiany powłoki logowania użytkownika.
W tym przykładzie najpierw sprawdzimy informacje o koncie użytkownika tecmint, aby wyświetlić jego domyślną powłokę logowania, a następnie zmienimy jej powłokę logowania z /bin/sh na /bin/bash jako następuje.
grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd
Teraz domyślna powłoka użytkownika „tecmint” zostanie zmieniona na bash.
2. narzędzie chsh
Polecenie chsh służy do interaktywnej zmiany domyślnej powłoki logowania użytkownika za pomocą opcji -s
lub –shell, jak pokazano.
grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd
Zamień „/bin/sh” na rzeczywistą ścieżkę do powłoki, którą chcesz ustawić. Na przykład, aby ustawić powłokę na sh, użyj „/bin/sh”.
Należy pamiętać, że zmiany w domyślnej powłoce zwykle zaczynają obowiązywać po następnym logowaniu.
Obie metody modyfikują powłokę określoną w pliku /etc/passwd, który można edytować ręcznie, jak w trzeciej metodzie poniżej.
3. Zmień powłokę użytkownika w pliku /etc/passwd
W tej metodzie wystarczy otworzyć plik /etc/passwd przy użyciu dowolnego ulubionego edytora tekstu z wiersza poleceń i zmienić powłokę konkretnego użytkownika.
sudo vi /etc/passwd
OR
sudo nano /etc/passwd
Znajdź linię odpowiadającą użytkownikowi, dla którego chcesz zmienić domyślną powłokę. Na przykład, jeśli linia wygląda tak:
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash
Ostatnie pole, /bin/bash, reprezentuje domyślną powłokę (w tym przypadku Bash).
Aby zmienić wartość pola powłoki na żądaną powłokę, po prostu określ ścieżkę do powłoki (/bin/zsh), jak pokazano.
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh
Po zakończeniu edycji zapisz i zamknij plik.
Jak zainstalować inną powłokę?
Podobnie jak inne pakiety oprogramowania, popularne powłoki, takie jak Zsh i Fish, można łatwo zainstalować z repozytorium dystrybucji, jak pokazano.
Zainstaluj Zsh Shell w systemie Linux
Aby zainstalować Zsh w systemie Linux, użyj następującego polecenia odpowiedniego dla konkretnej dystrybucji Linuksa.
sudo apt install zsh [On Debian, Ubuntu and Mint]
sudo yum install zsh [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh [On Gentoo Linux]
sudo apk add zsh [On Alpine Linux]
sudo pacman -S zsh [On Arch Linux]
sudo zypper install zsh [On OpenSUSE]
Zainstaluj Fish Shell w systemie Linux
Aby zainstalować Zsh w systemie Linux, użyj następującego polecenia odpowiedniego dla konkretnej dystrybucji Linuksa.
sudo apt install fish [On Debian, Ubuntu and Mint]
sudo yum install fish [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish [On Gentoo Linux]
sudo apk add fish [On Alpine Linux]
sudo pacman -S fish [On Arch Linux]
sudo zypper install fish [On OpenSUSE]
Nie zapomnij przeczytać powiązanych tematów:
W tym artykule opisaliśmy różne sposoby zmiany powłoki użytkownika w systemie Linux. Aby podzielić się z nami swoimi przemyśleniami, skorzystaj z sekcji komentarzy poniżej.