Welche der angegebenen Optionen ist in Bezug auf die Login-Shell WAHR?
- Die Login-Shell ist bei jeder Benutzeranmeldung unterschiedlich. Der Kernel entscheidet über die Verfügbarkeit der Shell beim Login.
- Die Login-Shell ist für alle Benutzer in einem bestimmten System festgelegt. Sie kann nicht konfiguriert werden.
- Die Login-Shell kann vom Administrator in der Datei /etc/passwd konfiguriert werden.
- 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 ( login
auf einer Textmoduskonsole einBildschirm Managerauf einer grafischen Konsole, einem Daemon wie sshd
oder telnetd
fü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 demchsh
Befehl für lokale Konten, mitypchsh
für NIS-Konten oder mitchsh.ldap
für LDAP-Konten. An manchen Stellen chsh
ist 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/shells
Dies 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 chsh
Befehl ausführt oder die Datenbank direkt bearbeitet.
Auf einem normal konfigurierten System werden nützliche Shell-Programme aufgelistet /etc/shells
und diese Programme funktionieren. (1) ist technisch gesehen richtig, da die Login-Shell variieren kann (der Benutzer oder Administrator kann sie chsh
jederzeit 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 $PATH
wird 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/profile
und ~/.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/passwd
dies ein Ort ist, an dem die Login-Shell vom Administrator konfiguriert werden kann. Allerdings /etc/passwd
sollte dies nicht direkt, sondern über den vipw
Befehl 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:
Testen Sie es.
echo $SHELL
. Jetzt abmelden und erneut anmelden.echo $SHELL
. Ausspülen, waschen, wiederholen. Jedes Mal die gleiche Antwort.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-shell
können Siegetent passwd $(whoami) | cut -d: -f7
die obigen Befehle ersetzen, um die Benutzeranmelde-Shell zu bestimmen.Dies hängt stark vom Kenntnisstand des Administrators ab. Zum Bearbeiten der
/etc/passwd
Datei 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 chsh
würde erkennen, dass dies das Programm zum Anpassen von Login-Shells ist:BESCHREIBUNG
chsh wird verwendet, um Ihre Login-Shell zu ändernWenn mindestens eine der obigen Antworten wahr ist, muss dies falsch sein.