Agetty: Unterschied zwischen den Versionen
Zeile 98: | Zeile 98: | ||
Die Vorgabe ist »vt100« oder »linux« für Linux auf einem virtuellen Terminal oder »hurd« für GNU Hurd auf einem virtuellen Terminal. | Die Vorgabe ist »vt100« oder »linux« für Linux auf einem virtuellen Terminal oder »hurd« für GNU Hurd auf einem virtuellen Terminal. | ||
== EINTRÄGE DER KONFIGURATIONSDATEI == | == EINTRÄGE DER KONFIGURATIONSDATEI == |
Version vom 31. Dezember 2024, 22:54 Uhr
agetty - alternativer Linux-Getty
Beschreibung
agetty öffnet einen TTY-Port, bittet um einen Anmeldenamen und startet den Befehl /bin/login. Es wird normalerweise durch init(8) aufgerufen.
agetty verfügt über mehrere nicht standardisierte Funktionalitäten, die für Stand- und Einwählleitungen nützlich sind:
• Gleicht die TTY-Einstellungen für Paritätsbits und die Lösch-, Kill-, Zeilenende- und Großschriftzeichen an, wenn es den Anmeldenamen liest. Das Programm kann sowohl mit 7-Bit-Zeichen mit gerader, ungerader, keiner oder Space-Parität als auch mit 8-Bit-Zeichen ohne Parität umgehen. Die folgenden Sonderzeichen werden erkannt: Steuerungstaste-U (kill), Entfernen und Rückschritt (Löschen), Zeilenumbruch und Zeilenvorschub (Zeilenende). Siehe auch die Optionen --erase-chars und --kill-chars.
• Ermittelt optional die Baudrate aus den von Hayes™-kompatiblen Modems erstellten CONNECT-Nachrichten.
• Legt optional nicht auf, wenn ihm eine bereits offene Leitung übergeben wird (nützlich für Rückrufanwendungen).
• Zeigt optional den Inhalt der Datei /etc/issue nicht an.
• Zeigt optional alternative »issue«-Dateien oder -Verzeichnisse statt /etc/issue oder /etc/issue.d an.
• Fragt optional nicht nach einem Anmeldenamen.
• Startet optional ein nicht vorgegebenes Anmeldeprogramm statt /bin/login.
• Schaltet optional Hardware-Flusssteuerung ein.
• Erzwingt optional, dass die Leitung lokal und keine Signalerkennung notwendig ist.
Dieses Programm verwendet die Dateien /etc/gettydefs (System V) oder /etc/gettytab (SunOS 4) nicht.
Installation
agetty ist Teil des Pakets util-linux
Aufruf
agetty [Optionen] Port [Baudrate...] [Terminal]
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
-1 | --single | Exit as soon as the first advertisement is received (default) |
Parameter
Umgebungsvariablen
Exit-Status
Anwendung
Problembehebung
Konfiguration
Dateien
Anhang
Siehe auch
Dokumentation
Man-Page
- AGETTY(8) System-Administration AGETTY(8)
Info-Pages
Links
Projekt
Weblinks
TMP
ARGUMENTE
Port Ein Pfadname relativ zum Verzeichnis /dev. Falls ein »-« angegeben wurde, nimmt agetty an, dass seine Standardeingabe bereits mit einem TTY-Port verbunden ist und dass die Verbindung zu einem Benutzer in der Ferne bereits aufgebaut wurde.
Wenn unter System V als Port-Argument ein »-« übergeben wird, sollte die Zeichenkette »--« vorangestellt werden.
Baudrate,... Eine kommatagetrennte Liste einer oder mehrerer Baudraten. Jedes Mal, wenn agetty ein BREAK-Zeichen empfängt, schreitet es durch die Liste fort, die so behandelt wird, als ob sie zirkulär wäre.
Baudraten sollten in absteigender Reihenfolge angegeben werden, so dass das Null-Zeichen (Strg-@) auch für den Wechsel der Baudrate verwendet werden kann.
Dieses Argument ist optional und für virtuelle Terminals unnötig.
Die Vorgabe für serielle Terminals ist, die aktuelle Baudrate beizubehalten (siehe --keep-baud) und falls nicht erfolgreich, als Vorgabe »9600« zu verwenden.
Terminal Der Wert, der für die Umgebungsvariable TERM verwendet werden soll. Dies setzt außer Kraft, was auch immer init(8) gesetzt haben könnte und wird an das Anmeldeprogramm und die Shell vererbt.
Die Vorgabe ist »vt100« oder »linux« für Linux auf einem virtuellen Terminal oder »hurd« für GNU Hurd auf einem virtuellen Terminal.
EINTRÄGE DER KONFIGURATIONSDATEI
agetty liest die Konfigurationsdatei /etc/login.defs (siehe login.defs(5)). Beachten Sie, dass die Konfigurationsdatei Teil eines anderen Pakets sein könnte (z.B. shadow-utils). Die folgenden Konfigurationseinträge sind für agetty relevant:
LOGIN_PLAIN_PROMPT (boolesch) weist agetty an, dass die Ausgabe des Rechnernamens in der Eingabeaufforderung der Anmeldung unterdrückt werden soll. Dies ist die Alternative zur Befehlszeilenoption --nohostname. Der Standardwert ist no.
BEISPIEL
Dieser Abschnitt zeigt Beispiele für das Prozessfeld eines Eintrages in der Datei /etc/inittab. Sie müssen für die anderen Felder geeignete Werte voranstellen. Siehe inittab(5) für weitere Details.
Für eine hartverdrahtete Leitung oder ein Konsolen-TTY:
/sbin/agetty 9600 ttyS1
Für ein direkt verbundenes Terminal ohne korrekte »carrier-detect«-Verkabelung (versuchen Sie das, falls Ihr Terminal nicht reagiert, statt Ihnen eine »password«-Eingabeaufforderung anzuzeigen).
/sbin/agetty --local-line 9600 ttyS1 vt100
Für eine altertümliche Einwählleitung mit einem 9600/2400/1200-Baud-Modem:
/sbin/agetty --extract-baud --timeout 60 ttyS1 9600,2400,1200
Für ein Hayes-Modem mit einer fest eingestellten 115200-bit/s-Schnittstelle zum Rechner (die Beispiel-Init-Zeichenkette schaltet das Echo des Modems und die Ergebniscodes ab, läßt Modem-/Computer-Datenträgersignalerkennung (DCD) die Datenträgersignalerkennung des Modems/Modems verfolgen, erzeugt ein DTR, das zum Beenden der Verbindung führt und schaltet die automatische Antwort nach einmaligem Klingeln an):
/sbin/agetty --wait-cr --init-string 'ATE0Q1&D2&C1S0=1\015' 115200 ttyS1
SICHERHEITSHINWEIS
Falls Sie die Optionen --login-program und --login-options verwenden, seien Sie sich bewusst, dass ein bösartiger Benutzer versuchen könnte, Anmeldenamen mit eingebetteten Optionen anzugeben, die dann an das verwendete Anmeldeprogramm weitergegeben werden. agetty prüft auf führende »-« und stellt sicher, dass Anmeldenamen als ein Parameter weitergegeben werden (daher werden eingebettete Leerzeichen keinen weiteren Parameter erzeugen), aber abhängig davon, wie das Anmeldeprogramm die Befehlszeile auswertet, könnte das nicht ausreichen. Prüfen Sie, dass das verwendete Anmeldeprogramm nicht auf diese Art missbraucht werden kann.
Einige Programme verwenden »--«, um anzuzeigen, dass der Rest der Befehlszeile nicht als Optionen interpretiert werden sollte. Verwenden Sie, falls vorhanden, diese Funktionalität, indem Sie »--« übergeben, bevor der Benutzernamme mit \u übergeben wird.
ISSUE-DATEIEN Die Standard-Issue-Datei ist /etc/issue. Falls die Datei existiert, dann prüft agetty auf das Verzeichnis /etc/issue.d. Das Verzeichnis ist eine optionale Erweiterung zu der Standard-Issue-Datei und der Inhalt des Verzeichnisses wird nach dem Inhalt von /etc/issue ausgegeben. Falls /etc/issue nicht existiert, wird das Verzeichnis ignoriert. Alle Dateien mit der Endung .issue aus dem Verzeichnis werden in Versionsreihenfolge angezeigt. Das Verzeichnis kann zur Verwaltung von Nachrichten dritter Parteien, unabhängig von der primären Datei /etc/issue des Systems, verwendet werden.
Seit Version 2.35 werden zusätzliche Orte für Issue-Datei und -Verzeichnis unterstützt. Falls die standardmäßige Datei /etc/issue nicht existiert, dann prüft agetty, ob die Dateien /run/issue und /run/issue.d vorhanden sind, und danach /usr/lib/issue und /usr/lib/issue.d. Das Verzeichnis /etc wird als Ort der rechnerspezifischen Konfiguration angenommen, /run für erzeugte Objekte und /usr/lib für die statische, von der Distribution verwaltete Konfiguration.
Der Standardpfad kann mit der Option --issue-file außer Kraft gesetzt werden. In diesem Fall muss der festgelegte Pfad eine Datei oder Verzeichnis sein und alle standardmäßigen Orte der Issue-Dateien und -Verzeichnisse werden ignoriert.
Die Issue-Datei-Funktionalität kann mit der Option --noissue vollständig deaktiviert werden.
Mit dem Befehl agetty --show-issue können Sie die aktuelle Issue-Datei im aktuellen Terminal anzeigen lassen.
Die issue-Dateien können bestimmte Maskierungscodes enthalten, um den Systemnamen, das Datum, die Zeit usw. anzuzeigen. Alle Maskierungscodes bestehen aus einem Rückwärtsschrägstrich (\), der sofort von einem der unten aufgeführten Zeichen gefolgt wird.
4 oder 4{Schnittstelle} Fügt die IPv4-Adresse der angegebenen Netzwerkschnittstelle (beispielsweise \4{eth0}) ein. Falls das Argument Schnittstelle nicht angegeben wurde, wird die erste vollständig konfigurierte Schnittstelle (OBEN, keine-SCHLEIFENSCHALTUNG, LAUFEND) ausgewählt. Falls keine konfigurierte Schnittstelle gefunden wird, wird auf die IP-Adresse des Rechnernamens der Maschine zurückgegriffen.
6 oder 6{Schnittstelle} Identisch zu \4, aber für IPv6.
b fügt die Baudrate der aktuellen Leitung ein.
d fügt das aktuelle Datum ein.
e oder e{Name} Übersetzt den menschenlesbaren Namen in eine Maskierungssequenz und fügt diese ein (Beispiel: \e{red}Hinweistext.\e{reset}). Falls das Argument Name nicht angegeben ist, wird \033 eingefügt. Die derzeit unterstützen Namen sind: black, blink, blue, bold, brown, cyan, darkgray, gray, green, halfbright, lightblue, lightcyan, lightgray, lightgreen, lightmagenta, lightred, magenta, red, reset, reverse, yellow und white. Alle unbekannten Namen werden stillschweigend ignoriert.
s fügt den Systemnamen (den Namen des Betriebssystems) ein. Identisch zu »uname -s«. Siehe auch die Maskierungscodes.
S oder S{VARIABLE} Fügt die VARIABLEn-Daten aus /etc/os-release hinzu. Falls diese Datei nicht existiert, dann wird auf /usr/lib/os-release zurückgefallen. Falls das Argument VARIABLE nicht angegeben ist, dann wird »PRETTY_NAME« aus der Datei oder der Systemname verwendet (siehe \s). Der Maskierungscode erlaubt es, /etc/issue unabhängig von der Distribution und der Veröffentlichung zu halten. Beachten Sie, dass \S{ANSI_COLOR} in die echte Terminalmaskierungssequenz umgewandelt wird.
l fügt den Name der aktuellen TTY-Leitung ein.
m fügt den Architekturkennzeichner der Maschine ein. Identisch zu uname -m.
n fügt den Knotennamen der Maschine (auch als Rechnername oder Hostname bekannt) ein. Identisch zu uname -n.
o fügt den NIS-Domain-Namen der Maschine ein. Identisch zu hostname -d.
O fügt den DNS-Domain-Namen der Maschine ein.
r fügt die Release-Nummer des Betriebssystems ein. Identisch zu uname -r.
t fügt die aktuelle Zeit ein.
u fügt die Anzahl der aktuell angemeldeten Benutzer ein.
U fügt die Zeichenkette »1 user« oder »<n> users« ein, wobei <n> die Anzahl der derzeit angemeldeten Benutzer ist.
v fügt die Version des Betriebssystems ein, d.h. das Baudatum usw.
Beispielsweise führt die folgende Datei /etc/issue auf meinem System
Dies ist \n.\o (\s \m \r) \t
zu der Ausgabe:
Dies ist thingol.orcan.dk (Linux i386 1.1.9) 18:29:30
DATEIEN
/var/run/utmp ist die Systemstatusdatei.
/etc/issue wird vor der Anmeldeeingabeaufforderung angezeigt.
/etc/os-release /usr/lib/os-release enthält die Identifikationsdaten des Betriebssystems.
/dev/console dazu, dass Probleme gemeldet werden (falls syslog(3) nicht verwendet wird).
/etc/inittab ist die init(8)-Konfigurationsdatei für einen SysV-artigen Init-Daemon.
ZUGANGSBERECHTIGUNGEN
agetty unterstützt die Konfiguration mittels Systemd-Zugangsberechtigungen (siehe https://systemd.io/CREDENTIALS/). agetty liest die folgenden Systemd-Zugangsberechtigungen:
agetty.autologin (Zeichenkette) Falls gesetzt, wird agetty so eingerichtet, dass der angegebene Benutzer automatisch ohne Eingabe von Benutzername und Passwort angemeldet wird, ähnlich wie mit der Option --autologin.
FEHLER
Die Baudratenerkennungsfunktionalität (die Option --extract-baud) verlangt, dass agetty früh genug nach dem Abschluss des Einwählprozesses eingeplant wird (innerhalb von 30 ms bei Modems, die mit 2400 Baud funktionieren). Für einen robusteren Betrieb verwenden Sie die Option --extract-baud immer in Kombination mit mehreren Baudraten im Befehlszeilenargument, so dass die Verarbeitung von BREAK aktiviert ist.
Der Text in der Datei /etc/issue (oder anderer) und die Eingabeaufforderung werden immer mit 7-Bit-Zeichen und Space-Parität ausgegeben.
Die Baudratenerkennungsfunktionalität (die Option --extract-baud) verlangt, dass das Modem eine Statusmeldung nach dem Hochziehen der DCD-Leitung ausgibt.
DIAGNOSE
Abhängig davon, wie das Programm konfiguriert wurde, werden alle Diagnoseinformationen auf das Konsolengerät geschrieben oder über die syslog(3)-Funktionalität berichtet. Fehlernachrichten werden erstellt, falls das Argument Port kein Terminalgerät festlegt; falls es keinen Utmp-Eintrag für den aktuellen Prozess gibt (nur System V) und so weiter.