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.