február 27, 2022

Az alapértelmezett Shell megváltoztatása Linux alatt

áttekintés

egy interaktív shell beolvassa a parancsokat a felhasználói bemenetről egy tty terminálon. Az interaktív héjat a felhasználó sikeres bejelentkezése után alapértelmezett héjnak vagy bejelentkezési héjnak nevezzük.

ebben az oktatóanyagban megvitatjuk, hogyan lehet megváltoztatni a felhasználó alapértelmezett héját.

Bevezetés a chsh parancsba

a chsh parancsot az util-linux csomaggal együtt szállítjuk — egy szabványos csomag, amely minden Linux disztrón elérhető.

a chsh paranccsal a-l opcióval felsorolhatjuk az aktuális rendszerbe telepített héjakat:

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

a chsh parancs gyakoribb használata a felhasználó alapértelmezett héjjának megváltoztatása.

majd foglalkozni, hogyan kell csinálni, hogy a későbbi szakaszokban.

Melyik Héjat Használom Jelenleg?

a sikeres bejelentkezés után az alapértelmezett shell lesz.

mielőtt az alapértelmezett héj megváltoztatásáról beszélnénk, először tanuljunk meg néhány módszert, hogy megtudjuk, melyik héjat használjuk jelenleg.

ennek egyik módja a $SHELL rendszerkörnyezet olvasása, amely az éppen futó shell parancsot tárolja:

kent$ echo $SHELL/bin/zsh

ahogy a fenti példa mutatja, a jelenlegi bejelentkezési felhasználóm futó héja Zsh.

Alternatív megoldásként megismerhetjük az aktuális futó héjat a folyamatinformációk feltárásával. A Linux a futó héj PID-jét a speciális változóban tárolja $$:

kent$ echo $3492

a fenti példában a PID 153492-vel végzett folyamat lenne a jelenlegi shell folyamat. Részletes információkat kaphatunk a folyamatról a ps paranccsal a-p opcióval:

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

a kimenet azt mondja nekünk, hogy a Zsh a jelenlegi héjunk.

az aktuális felhasználó alapértelmezett héjának megváltoztatása

ha meg akarjuk változtatni az aktuális bejelentkezési felhasználó alapértelmezett héját, végrehajthatjuk a chsh parancsot a-s < NEW_SHELL> opcióval.

változtassuk meg az aktuális felhasználó alapértelmezett shell-jét Bash-ra:

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

érdemes megemlíteni, hogy miután sikeresen megváltoztattuk az alapértelmezett héjat, a jelenleg futó héj nem változik. Például beállítottuk a bash-t a Kent felhasználó alapértelmezett héjaként, de az aktuális héj továbbra is Zsh:

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

az újonnan Megváltozott alapértelmezett héj akkor lép hatályba, amikor legközelebb bejelentkezünk a Kent felhasználóval.

az alapértelmezett shell parancs elengedhetetlen a felhasználók bejelentkezéséhez. Ha a parancs érvénytelen, gondjaink lesznek a felhasználóval való bejelentkezéssel.

ezért, amikor megváltoztatjuk az alapértelmezett héjat, a chsh parancs ellenőrzi, hogy az adott shell parancs érvényes-e.

lássuk, mi fog történni, ha érvénytelen utat adunk át a chsh parancsnak:

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

megtudtuk, hogy a chsh parancs képes felsorolni a rendszerben jelenleg telepített héjakat.

a chsh parancs megtagadja az alapértelmezett shell megváltoztatását, ha az adott shell nem szerepel a rendszer érvényes shell listáján:

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.

a fenti példában megpróbáltuk beállítani a/usr/bin / cat parancsot a Kent felhasználó alapértelmezett héjaként.

a cat parancs elérési útja érvényes. Ez azonban nem szerepel a shell listán. Ezért a chsh megszakította a megfelelő hibaüzenetet és tippet.

más felhasználók alapértelmezett Shell módosítása

eddig megtanultuk, hogyan kell használni a chsh parancsot az aktuális bejelentkezési felhasználó alapértelmezett shell megváltoztatásához.

a chsh paranccsal megváltoztathatjuk más felhasználók alapértelmezett héját is, de ehhez root engedélyre van szükségünk.

a szintaxis nagyon egyszerű:

root# chsh -s NEW_SHELL USERNAME

ezúttal root felhasználóként jelentkezünk be, és megváltoztatjuk a Kent alapértelmezett shell-jét a /bin/sh-ra:

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

Most jelentkezzen be újra a Kent felhasználóval, és ellenőrizze, hogy az alapértelmezett shell sikeresen megváltozott-e:

sh-5.1$ echo $SHELL/bin/sh

amint a fenti kimenet mutatja, A Kent felhasználó alapértelmezett héja most /bin/sh.

az /etc/passwd fájl szerkesztése

megtanultuk használni a chsh parancsot a felhasználó alapértelmezett shell-jének megváltoztatására. Alternatív megoldásként ezt az /etc/passwd fájl szerkesztésével is megtehetjük.

Linuxban az / etc / passwd fájl egy egyszerű szöveges fájl. Tárolja a felhasználói fiók adatait, amelyek a felhasználói bejelentkezés során szükségesek:

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

ha megnézzük az engedélyjelzőit, látni fogjuk, hogy minden felhasználó el tudja olvasni, de csak a root felhasználó írhat az /etc/passwd fájlba.

nézzük meg az /etc/passwd állomány tartalmát:

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...

a fájl minden sora rögzíti a felhasználó fiókadatait. A rekord mezőit kettőspontok választják el egymástól.

egy rekord tartalmazza a felhasználó fiókadatait, például a felhasználónevet, az UID-t, a GID-t és a saját könyvtárat. Az utolsó mező a felhasználó alapértelmezett shell-jét jelzi.

ha megváltoztatjuk az /etc/passwd fájl alapértelmezett shell mezőjét, akkor az akkor lép életbe, amikor a felhasználó legközelebb bejelentkezik a rendszerbe.

az /etc/passwd fájl szerkesztésének egyik előnye, hogy több felhasználó alapértelmezett shell-jét megváltoztathatjuk egy lövés alatt. Néha, ez elég kényelmes lehet.

azonban szem előtt kell tartanunk, hogy az /etc/passwd fájl mentésekor nem történik érvényesítés vagy ellenőrzés a Megváltozott alapértelmezett héjakon.

ezért meg kell győződnünk arról, hogy érvényes shell parancsutakat adtunk-e meg. Ellenkező esetben a felhasználónak problémája lesz a következő alkalommal bejelentkezni a rendszerbe.

következtetés

ebben a gyors cikkben megtanultuk, hogyan lehet megváltoztatni a felhasználó alapértelmezett shell-jét példákon keresztül.

a chsh parancs elég egyszerű a feladathoz. Ezenkívül ellenőrizheti, hogy az adott héj érvényes-e a rendszerben.

ha az aktuális bejelentkezéstől eltérő felhasználó alapértelmezett shell-jét szeretnénk megváltoztatni, akkor a chsh parancsot root felhasználó engedélyével kell végrehajtanunk.

Továbbá, ha bejelentkezhetünk root felhasználóként, megváltoztathatjuk több felhasználó alapértelmezett héját is az /etc/passwd fájl közvetlen szerkesztésével.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.