Wyszukiwanie w witrynie

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.