Cum să schimbați Shell de utilizator implicit în Linux


Shell, sau interfața de linie de comandă, este o componentă crucială a sistemului de operare Linux, oferind utilizatorilor o modalitate puternică de a interacționa cu sistemul.

Fiecare utilizator dintr-un sistem Linux este asociat cu un shell implicit, care determină interpretul de comenzi pe care îl utilizează atunci când interacționează cu sistemul.

Modificarea shell-ului implicit al unui utilizator poate fi necesară din diverse motive, cum ar fi preferințele personale sau nevoia de caracteristici specifice oferite de un shell diferit.

În acest articol, vom explora procesul de schimbare a shell-ului implicit al unui utilizator în Linux. Shell-ul este un program care acceptă și interpretează comenzi; există mai multe shell-uri open source, cum ar fi bash, sh, ksh, zsh, fish, și multe alte shell-uri mai puțin cunoscute disponibile pe Linux.

Linux Bash Shell

Bash (/bin/bash) este un shell popular în majoritatea, dacă nu în toate distribuțiile Linux, și este în mod normal shell-ul implicit pentru conturile de utilizator.

Există mai multe motive pentru a schimba shell-ul unui utilizator în Linux, inclusiv următoarele:

  • Pentru a bloca sau a dezactiva conectările normale ale utilizatorilor în Linux folosind un shell nologin.
  • Utilizați un script sau un program shell wrapper pentru a înregistra comenzile utilizatorului înainte ca acestea să fie trimise la un shell pentru execuție. Aici, specificați shell wrapper-ul ca shell de conectare al unui utilizator.
  • Pentru a satisface cerințele unui utilizator (dorește să folosească un shell specific), în special cei cu drepturi administrative.

Când se creează conturi de utilizator cu utilitatile useradd sau adduser, indicatorul --shell poate fi folosit pentru a specifica numele shell-ului de conectare al unui utilizator, altul decât cel specificat în fișierele de configurare respective.

Un shell de conectare poate fi accesat dintr-o interfață bazată pe text sau printr-un SSH de la o mașină Linux la distanță. Cu toate acestea, dacă vă conectați printr-o interfață grafică de utilizator (GUI), puteți accesa shell-ul de la emulatoare de terminale cum ar fi xterm, konsole și multe altele.

Listați Shell-urile disponibile pe un sistem Linux

În Linux, fișierul /etc/shells este folosit în mod obișnuit pentru a stoca o listă de shell-uri de conectare valide instalate pe sistem. Acest fișier ajută la identificarea shell-urilor care sunt disponibile pentru utilizatori pentru a le seta ca shell implicit folosind comenzi precum chsh.

Pentru a vizualiza lista de shell-uri disponibile pe un sistem Linux, puteți utiliza următoarea comandă:

cat /etc/shells

Eșantion de ieșire:

/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

Înainte de a continua, rețineți că:

  • Un utilizator își poate schimba propriul shell cu orice: care, totuși, trebuie să fie listat în fișierul /etc/shells.
  • Numai root poate rula un shell care nu este listat în fișierul /etc/shells.
  • Dacă un cont are un shell de conectare restricționat, atunci numai rădăcina poate schimba shell-ul utilizatorului respectiv.

Găsiți Shell-ul curent în Linux

Înainte de a schimba shell-ul unui utilizator implicit, este important să determinați shell-ul curent rulând următoarea comandă echo, care afișează shell-ul curent pentru utilizatorul conectat.

echo $SHELL

/bin/bash

Rezultatul arată că utilizatorul folosește în prezent shell-ul Bash (/bin/bash).

Schimbarea Shell-ului implicit în Linux

Acum să discutăm trei moduri diferite de a schimba shell-ul implicit al utilizatorului Linux.

1. Utilitar usermod

Comanda usermod este utilizată pentru modificarea detaliilor contului unui utilizator, stocate în fișierul /etc/passwd și opțiunea -s sau --shell este folosit pentru a schimba shell-ul de conectare al utilizatorului.

În acest exemplu, vom verifica mai întâi informațiile contului utilizatorului tecmint pentru a vedea shell-ul de conectare implicit, apoi vom schimba shell-ul de conectare din /bin/sh în /bin/bash ca urmează.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd

Acum, shell-ul implicit pentru utilizatorul „tecmint” va fi schimbat în bash.

2. chsh Utility

Comanda chsh este utilizată pentru a schimba interactiv shell-ul implicit de conectare al utilizatorului, utilizând opțiunea -s sau –shell, așa cum se arată.

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd

Înlocuiți „/bin/sh” cu calea reală către shell pe care doriți să o setați. De exemplu, pentru a seta shell-ul la sh, ați folosi „/bin/sh“.

Este important să rețineți că modificările aduse shell-ului implicit au de obicei efect la următoarea autentificare.

Cele două metode mai presus de toate modifică shell-ul specificat în fișierul /etc/passwd pe care îl puteți edita manual, ca în a treia metodă de mai jos.

3. Schimbați User Shell în fișierul /etc/passwd

În această metodă, pur și simplu deschideți fișierul /etc/passwd utilizând oricare dintre editorii de text de linie de comandă preferati și schimbați shell-ul unui anumit utilizator.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd

Localizați linia corespunzătoare utilizatorului pentru care doriți să schimbați shell-ul implicit. De exemplu, dacă linia arată astfel:

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

Ultimul câmp, /bin/bash, reprezintă shell-ul implicit (în acest caz, Bash).

Pentru a schimba valoarea câmpului shell-ului în shell-ul dorit, pur și simplu specificați calea către un shell (/bin/zsh), așa cum se arată.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

Când ați terminat de editat, salvați și închideți fișierul.

Cum se instalează un alt Shell?

Similar cu alte pachete software, shell-urile populare precum Zsh și Fish pot fi instalate cu ușurință din depozitul distribuției dvs., așa cum se arată.

Instalați Zsh Shell în Linux

Pentru a instala Zsh pe Linux, utilizați următoarea comandă adecvată pentru distribuția dvs. Linux specifică.

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]    

Instalați Fish Shell în Linux

Pentru a instala Zsh pe Linux, utilizați următoarea comandă adecvată pentru distribuția dvs. Linux specifică.

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]    

Nu uitați să citiți aceste subiecte conexe:

În acest articol, am descris diferite moduri de a schimba shell-ul unui utilizator în Linux. Pentru a ne împărtăși orice gânduri, folosește secțiunea de comentarii de mai jos.