GNU/Linux >> Znalost Linux >  >> Linux

Co je Login Shell v Linuxu?

Přihlašovací shell je první proces, který se provede s vaším uživatelským ID, když se přihlásíte do interaktivní relace.

Na první pohled se to může zdát jednoduché, ale pokud budete kopat hluboko, může to být trochu matoucí. Abychom to pochopili, podívejme se znovu na proces přihlašování v systémech Linux.

Linux je víceuživatelský systém, kde se může přihlásit a používat systém více uživatelů současně.

První proces v systému Linux, ať už je to init nebo systemd, spustí program getty. Tento getty, zkratka pro 'get tty' (tty označuje fyzické nebo virtuální terminály), je zodpovědný za ochranu systému před neoprávněným přístupem.

Když se pokusíte připojit k systému Linux buď přímo (pokud máte server nainstalovaný v systému lokálně) nebo přes SSH (pokud máte server na vzdáleném místě), getty vás vyzve (prostřednictvím přihlašovacího programu), abyste zadali své uživatelské jméno. a po zadání uživatelského jména se zobrazí výzva k zadání hesla.

Vaše záznamy jsou ověřeny podle informací uložených v souboru /etc/passwd. Položky v souboru /etc/passwd obsahují některé informace, jako je uživatelské jméno, ID uživatele, domovský adresář a první program, který by měl být spuštěn po úspěšném přihlášení.

Jak můžete vidět na obrázku výše, první program, který se spustí, když se uživatel abhishek přihlásí. Pro standardní uživatele v Linuxu je to přihlašovací shell.

V poli mohou být i jiné hodnoty. Například sshd je systémový uživatel, nikoli skutečný uživatel a nemůže se do systému přihlásit interaktivně jako běžný uživatel jako abhishek.

sshd:x:110:65534::/run/sshd:/usr/sbin/nologin

Pokud ve sloupci prvního programu/přihlášení v shellu není žádná položka, je výchozí /bin/sh, tj. standardní shell.

Doufám, že to nebylo příliš mnoho informací.

Přihlašovací prostředí vs nepřihlašovací prostředí

Dobře, takže jste se přihlásili do systému a víte, že je to přihlašovací shell. Ale co to znamená? Existují i ​​jiné skořápky? Kde jsou?

V Linuxu, když spustíte shellový skript, spustí se ve svém vlastním shellu (neinteraktivním shellu). Můžete spustit nový shell z vašeho aktuálního shellu (interaktivní shell).

Z technického hlediska se jedná o subshell, ale více o tomto tématu později. Nyní se zaměřme na přihlašovací shell.

Profilové a RC soubory pro shell

Přihlašovací shell čte proměnnou prostředí a další konfiguraci z /etc/profile a soubor profilu v domovském adresáři. To vám umožňuje doplňování karet, barevný výstup a nastavení dalších věcí, jako je umask atd.

Pravděpodobně víte, že pro systémy Linux je k dispozici více než jeden shell. Většina distribucí Linuxu standardně používá bash shell, ale můžete nainstalovat jiný shell, jako je zsh nebo Fish shell.

Pokud je váš přihlašovací shell bash, čte se ze souboru /etc/profile a ~/.bash_profile. Pokud je váš přihlašovací shell zsh, čte se z /etc/zprofile a ~/.zprofile.

Soubory v adresáři /etc nastavují příslušnou konfiguraci shellu pro všechny uživatele v systému. To obvykle nastavuje správce systému.

Soubory v domovském adresáři uživatele jsou samozřejmě specifické pro uživatele. To umožňuje uživatelům vytvořit alias pro často používané příkazy nebo použít vlastní proměnnou PATH pro program.

Nepřihlašovací shelly pocházejí z přihlašovacího shellu, a proto získá veškeré prostředí nastavené přihlašovacím shellem prostřednictvím souborů profilu. Kromě toho může interaktivní shell bez přihlášení definovat své vlastní proměnné prostředí prostřednictvím souborů rc (konfigurace prostředků) v /etc nebo domovském adresáři.

Pro bash shell je to obvykle soubory /etc/bash.bashrc a ~/.bash_rc, zatímco pro zsh shell je to /etc/zshrc a ~/.zshrc.

Dovolte mi ukázat rozdíl na praktickém příkladu.

Všimli jste si, jak se výzva shellu změní na zelenou barvu? Je to proto, že čte soubor /etc/bash.bashrc a Ubuntu do tohoto souboru vložilo další parametry. Jednou z nich je barevná výzva.

Abych to shrnul:

  • Soubory profilu jsou pro interaktivní přihlašovací shelly. Soubory rc jsou pro interaktivní shelly bez přihlášení.
  • Nejprve jsou spuštěny soubory v adresáři /etc a poté soubory v domovském adresáři.
  • Interaktivní shelly bez přihlášení těží z profilových i rc souborů.

Jak zjistit, zda jste v přihlašovacím prostředí?

To je vlastně velmi jednoduché, alespoň pro bash shell. V případě přihlašovacího shellu začíná název spustitelného souboru shellu - . Pro nepřihlašovací shell je to pouze název shellu.

Víš, jak zkontrolovat skořápku, že? Zkontrolujete hodnotu argumentu 0.

V desktopovém Linuxu nepoužíváte přihlašovací shell. Vaše přihlášení spravuje správce zobrazení. To je důvod, proč když otevřete terminál na ploše Linuxu, uvidíte, že ani první shell spuštěný v terminálu není přihlašovací shell.

Snažil jsem se zde objasnit věci ohledně přihlašovacího shellu. Pokud jste však o těchto věcech nikdy nepřemýšleli, může to zanechat některé nezodpovězené otázky. Neváhejte se na to zeptat v sekci komentářů a pokusím se na ně odpovědět.

Pokud jste zkušený uživatel, který toto čte a zjistíte, že je něco technicky nesprávné nebo chybí nějaký důležitý bod, dejte mi prosím vědět v komentářích.


Linux
  1. Co je Umask v Linuxu

  2. Jaké jsou různé typy shellů v Linuxu?

  3. UNIX / Linux:Co je to Shell? Jaké jsou různé Shelly?

  1. Co je JingOS Linux?

  2. Změna výchozího prostředí v Linuxu

  3. Co dělá % v řetězcích shellu Linux?

  1. Co je uživatel Linuxu?

  2. Jak změnit Shell v Linuxu

  3. Co je Red Hat Linux?