februarie 27, 2022

schimbarea Shell-ului implicit în Linux

Prezentare generală

un shell interactiv citește comenzi de la intrarea utilizatorului pe un terminal tty. Numim shell-ul interactiv după conectarea cu succes a unui utilizator shell-ul implicit sau shell-ul de conectare.

în acest tutorial, vom discuta despre cum să schimbați shell-ul implicit al unui utilizator.

Introducere în comanda chsh

comanda chsh este livrată împreună cu pachetul util-linux — un pachet standard care este disponibil pe toate distribuțiile Linux.

folosind comanda chsh cu opțiunea-l, putem enumera shell-urile instalate în sistemul curent:

$ chsh -l/bin/sh/bin/bash/bin/zsh/usr/bin/zsh/usr/bin/git-shell

o utilizare mai obișnuită a comenzii chsh este schimbarea shell-ului implicit al unui utilizator.

vom aborda modul de a face acest lucru în secțiunile ulterioare.

Ce Shell Folosesc În Prezent?

după o autentificare reușită, vom fi cu shell-ul nostru implicit.

înainte de a vorbi despre schimbarea shell-ului implicit, să învățăm mai întâi câteva modalități de a afla ce shell folosim în prezent.

o modalitate este de a citi mediul de sistem $ SHELL, care stochează comanda shell care rulează în prezent:

kent$ echo $SHELL/bin/zsh

după cum arată exemplul de mai sus, shell-ul de funcționare al utilizatorului meu actual de conectare este Zsh.

alternativ, putem cunoaște shell-ul curent de funcționare explorând informațiile sale de proces. Linux stochează PID-ul shell-ului care rulează în variabila specială$$:

kent$ echo $3492

în exemplul de mai sus, procesul cu PID 153492 ar fi procesul shell curent. Putem obține informații detaliate despre proces folosind comanda ps cu opțiunea-p:

kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh

ieșirea ne spune că Zsh este shell-ul nostru curent.

schimbarea Shell-ului implicit al utilizatorului curent

dacă dorim să schimbăm shell-ul implicit al utilizatorului curent de conectare, putem executa comanda chsh cu opțiunea-s< NEW_SHELL >.

să schimbăm shell-ul implicit al utilizatorului curent în Bash:

kent$ chsh -s /bin/bashChanging shell for kent.Password: Shell changed.

merită menționat faptul că, după ce am schimbat cu succes shell-ul implicit, shell-ul care rulează în prezent nu va fi schimbat. De exemplu, am setat Bash ca shell implicit al utilizatorului kent, dar shell-ul curent este încă Zsh:

kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh

shell-ul implicit nou modificat va intra în vigoare data viitoare când ne conectăm cu utilizatorul kent.

comanda implicită shell este esențială pentru autentificarea utilizatorilor. Dacă comanda este nevalidă, vom avea probleme la conectarea cu utilizatorul.

prin urmare, pe măsură ce schimbăm shell-ul implicit, comanda chsh va verifica dacă comanda shell dată este validă.

să vedem ce se va întâmpla dacă vom trece o cale nevalidă la comanda chsh:

kent$ chsh -s /bin/bashhhhChanging shell for kent.Password: chsh: "/bin/bashhhh" does not exist

am învățat comanda chsh poate lista shell-urile instalate în prezent în sistem.

comanda chsh va refuza să schimbe shell-ul implicit dacă shell-ul dat nu se află pe lista de shell-uri valide a sistemului:

kent$ chsh -s /usr/bin/catChanging shell for kent.Password: chsh: "/usr/bin/cat" is not listed in /etc/shells.Use chsh -l to see list.

în exemplul de mai sus, am încercat să setăm comanda /usr/bin/cat ca shell implicit al utilizatorului kent.

calea de comandă cat este validă. Cu toate acestea, nu este pe lista shell. Prin urmare, chsh avortat cu mesajul de eroare corespunzător și indiciu.

schimbarea Shell-ului implicit al altor utilizatori

până acum, am învățat cum să folosim comanda chsh pentru a schimba shell-ul implicit al utilizatorului de conectare curent.

de asemenea, putem schimba shell-ul implicit al altor utilizatori folosind comanda chsh, dar avem nevoie de permisiunea root pentru a face acest lucru.

sintaxa este destul de simplă:

root# chsh -s NEW_SHELL USERNAME

de data aceasta, ne conectăm ca utilizator root și schimbăm shell-ul implicit al utilizatorului kent în / bin / sh:

root# chsh -s /bin/sh kent Changing shell for kent.Shell changed.

acum, să ne conectăm din nou cu utilizatorul kent și să verificăm dacă shell-ul implicit a fost modificat cu succes:

sh-5.1$ echo $SHELL/bin/sh

după cum arată ieșirea de mai sus, shell-ul implicit al utilizatorului kent este acum /bin/sh.

editarea fișierului /etc/passwd

am învățat să folosim comanda chsh pentru a schimba shell-ul implicit al unui utilizator. Alternativ, putem face acest lucru și editând fișierul /etc/passwd.

în Linux, fișierul/etc / passwd este un fișier text simplu. Stochează informațiile contului de utilizator, care sunt necesare în timpul autentificării utilizatorului:

-rw-r--r-- 1 root root 2.1K Mar 12 10:27 /etc/passwd

dacă ne uităm la steagurile sale de permisiune, vom vedea că toți utilizatorii îl pot citi, dar numai utilizatorul root are voie să scrie la /etc/passwd.

să verificăm conținutul din fișierul/etc / passwd:

kent$ cat /etc/passwdroot:x:0:0:root:/root:/bin/zshbin:x:1:1:bin:/bin:/bin/false...kent:x:1000:1000::/home/kent:/bin/zshguest:x:1001:1001::/home/guest:/bin/zsh...cups:x:209:209:cups helper user:/:/sbin/nologin...

fiecare linie din fișier înregistrează informațiile despre cont ale unui utilizator. Câmpurile dintr-o înregistrare sunt separate de două puncte.

o înregistrare conține datele contului utilizatorului, cum ar fi numele de utilizator, UID, GID și directorul principal, printre altele. Ultimul câmp indică shell-ul implicit al utilizatorului.

dacă schimbăm câmpul shell implicit din fișierul /etc/passwd, acesta va intra în vigoare atunci când utilizatorul se va conecta la sistem data viitoare.

un avantaj al editării fișierului /etc/passwd este că putem schimba shell-ul implicit al mai multor utilizatori într-o singură fotografie. Uneori, acest lucru ar putea fi destul de convenabil.

cu toate acestea, ar trebui să ținem cont de faptul că atunci când salvăm fișierul /etc/passwd, nu se va întâmpla nicio validare sau verificare pe shell-urile implicite modificate.

prin urmare, trebuie să ne asigurăm că am dat căi valide de comandă shell. În caz contrar, utilizatorul va avea o problemă la conectarea la sistem data viitoare.

concluzie

în acest articol rapid, am învățat cum să schimbăm shell-ul implicit al unui utilizator prin exemple.

comanda chsh este destul de simplă pentru sarcină. Mai mult, poate verifica dacă shell-ul dat este valabil în sistem.

dacă dorim să schimbăm shell-ul implicit al unui alt utilizator decât cel actual de conectare, trebuie să executăm comanda chsh cu permisiunea utilizatorului root.

mai mult, dacă ne putem conecta ca utilizator root, putem schimba și shell-ul implicit al mai multor utilizatori editând direct fișierul /etc/passwd.

Lasă un răspuns

Adresa ta de email nu va fi publicată.