Welche der angegebenen Optionen ist bezüglich der Login-Shell WAHR?

Welche der angegebenen Optionen ist bezüglich der Login-Shell WAHR?

Welche der angegebenen Optionen ist in Bezug auf die Login-Shell WAHR?

  1. Die Login-Shell ist bei jeder Benutzeranmeldung unterschiedlich. Der Kernel entscheidet über die Verfügbarkeit der Shell beim Login.
  2. Die Login-Shell ist für alle Benutzer in einem bestimmten System festgelegt. Sie kann nicht konfiguriert werden.
  3. Die Login-Shell kann vom Administrator in der Datei /etc/passwd konfiguriert werden.
  4. Nichts des oben Genannten.

Antwort1

Der Kernel weiß nichts über Benutzer außer ihrer numerischen ID als Kennzeichnung bestimmter Dinge (Prozesse, Dateien). Er kennt keine Vorstellung von „Anmeldung“, die im Benutzerbereich stattfindet.

Das Programm, das den Anmeldevorgang durchführt ( loginauf einer Textmoduskonsole einBildschirm Managerauf einer grafischen Konsole, einem Daemon wie sshdoder telnetdfür Remote-Logins usw.) authentifiziert zunächst den Benutzer und führt andere Aufgaben aus.PAMwird oft verwendet; es hatviele Fähigkeitenim Zusammenhang mit Authentifizierung, Protokollierung, Benutzerdatenbanken usw. Der letzte Schritt des Anmeldevorgangs (bei Erfolg), nachdem das Programm von der Ausführung als Root zur Ausführung als gewünschter Benutzer gewechselt ist, besteht im Aufrufen der Anmelde-Shell.

Die Login-Shell wird aus der Benutzerkonto-Datenbank bestimmt. Es gibt verschiedene Arten von Benutzerdatenbanken; die gebräuchlichsten sind/etc/passwd(oder in seltenen Fällen eine andere Datei, die überNSS), eine einfache Textdatei auf dem lokalen Rechner, undNISUndLDAPDabei handelt es sich um vernetzte Datenbanken, die in Netzwerken verwendet werden, in denen Konten von mehreren Computern aus verwendet werden können.

Benutzer können ihre Shell ändern mit demchshBefehl für lokale Konten, mitypchshfür NIS-Konten oder mitchsh.ldapfür LDAP-Konten. An manchen Stellen chshist der Befehl so eingerichtet, dass er mit jedem verwendeten Kontodatenbanktyp funktioniert. Benutzer dürfen nur zwischen Shells wechseln, die in der Datei aufgeführt sind. /etc/shellsDies ist sowohl eine Sicherheitsmaßnahme (Benutzer, deren Shell nicht aufgeführt ist, haben vermutlich eingeschränkte Konten und können nicht wechseln) als auch eine Schutzmaßnahme (der Wechsel zu einer nicht vorhandenen oder eingeschränkten Shell könnte das Konto effektiv sperren). Der Administrator kann die Anmelde-Shell jedes Kontos ändern, indem er den chshBefehl ausführt oder die Datenbank direkt bearbeitet.

Auf einem normal konfigurierten System werden nützliche Shell-Programme aufgelistet /etc/shellsund diese Programme funktionieren. (1) ist technisch gesehen richtig, da die Login-Shell variieren kann (der Benutzer oder Administrator kann sie chshjederzeit aufrufen), auch wenn dies normalerweise nicht der Fall ist, und natürlich erfordert das Starten eines Programms, dass der Kernel die Programmdatei lädt, und schlägt fehl, wenn die Datei nicht existiert oder beschädigt ist.

Das Anmeldeprogramm führt die Anmeldeshell mit dem Argument 0 aus, das auf den Programmnamen mit einem Bindestrich -vor dem Namen gesetzt ist. Wenn die Anmeldeshell beispielsweise lautet /bin/bash(der vollständige Pfad ist erforderlich, es $PATHwird keine Suche in durchgeführt), lautet das Argument 0 -bash. Argument 0 ist normalerweise der Programmname; der zusätzliche Bindestrich weist die Shell an, als Anmeldeshell zu fungieren. Anmeldeshells führen beim Start zusätzliche Dateien aus, z. B. /etc/profileund ~/.profile; sieheUnterschied zwischen Login-Shell und Nicht-Login-Shell?für weitere Einzelheiten zu diesem Teil.


Diese Multiple-Choice-Prüfung ist nicht gut konzipiert, da jede Option als wahr ausgelegt werden könnte.

(1): Es ist tatsächlich so, dass die Login-Shell bei jeder Anmeldung des Benutzers bestimmt wird. Es ist auch wahr, dass der Kernel entscheidet, ob die Shell während des Anmeldevorgangs verfügbar ist. Technisch gesehen ist (1) also wahr (und technische Korrektheit ist die beste Form der Korrektheit, oder?). Aber (1) ist sehr irreführend, da der Kernel nicht entscheidet, was die Login-Shell als solche ist, er hat nicht einmal ein Konzept von Login oder Shell.

(2) ist im Allgemeinen nicht wahr, da verschiedene Benutzer unterschiedliche Login-Shells haben können. Es gibt jedoch Konfigurationen, in denen aus irgendeinem Grund alle Benutzer dieselbe Shell haben – beispielsweise heterogene Netzwerke, in denen Konten von mehreren Rechnern gemeinsam genutzt werden und die einzige Shell, die garantiert überall verfügbar ist, ist /bin/sh.

(3) ist wahrscheinlich die beabsichtigte Antwort, da /etc/passwddies ein Ort ist, an dem die Login-Shell vom Administrator konfiguriert werden kann. Allerdings /etc/passwdsollte dies nicht direkt, sondern über den vipwBefehl oder über einen Befehl wie bearbeitet werden chsh. Darüber hinaus werden nicht lokale Konten nicht in gespeichert /etc/passwd.

Antwort2

Schauen wir uns einige Fakten an:

  1. Testen Sie es. echo $SHELL. Jetzt abmelden und erneut anmelden. echo $SHELL. Ausspülen, waschen, wiederholen. Jedes Mal die gleiche Antwort.

  2. Die Login-Shell wird für alle Benutzer aus dem Inhalt von abgeleitet /etc/passwd. Der in dieser Datei festgelegte Wert ist der Wert der Login-Shell für jeden Benutzer im System. Ein Benutzer kann zwar eine andere Shell ausführen, aber ohne den in festgelegten Wert wird dies nicht seine Login-Shell sein /etc/passwd.

    Sie können dies überprüfen, indem Sie den Befehl von verschiedenen Shells aus ausprobieren, die Sie manuell ausführen:

    bash -c "get-shell"
    sh   -c "get-shell"
    zsh  -c "get-shell"
    

    Alle diese Befehle führen unabhängig von der Shell, in der Sie sie ausführen, zur gleichen Ausgabe, da der Wert für die Login-Shell nicht durch die vom Benutzer ausgewählte Shell bestimmt wird, sondern durch die für ihn in festgelegte Shell /etc/passwd.

    Beachten Sie: Wenn Ihr System dies nicht hat, get-shellkönnen Sie getent passwd $(whoami) | cut -d: -f7die obigen Befehle ersetzen, um die Benutzeranmelde-Shell zu bestimmen.

  3. Dies hängt stark vom Kenntnisstand des Administrators ab. Zum Bearbeiten der /etc/passwdDatei muss man wissen, wie man einen Texteditor als Root startet, und die Fingerfertigkeit haben, kein einziges Zeichen in der Datei zu verwechseln. Ein Ninja könnte das vielleicht hinbekommen, aber ein Administrator, der liest, man chshwürde erkennen, dass dies das Programm zum Anpassen von Login-Shells ist:

    BESCHREIBUNG
    chsh wird verwendet, um Ihre Login-Shell zu ändern

  4. Wenn mindestens eine der obigen Antworten wahr ist, muss dies falsch sein.

verwandte Informationen