keyrings(7) Miscellaneous Information Manual keyrings(7) BEZEICHNUNG keyrings - Kernelinterne Schlusselverwaltungs- und -beibehaltungseinrichtung BESCHREIBUNG Die Linux-Schlusselverwaltungseinrichtung ist der primare Zugang fur verschiedene Kernelkomponenten, um Sicherheitsdaten, Authentifizierungsschlussel, Verschlusselungsschlussel und andere Daten im Kernel beizubehalten oder zwischenzuspeichern. Es werden Systemaufrufschnittstellen bereitgestellt, so dass Programme aus dem Anwendungsraum diese Objekte verwalten konnen und die Einrichtung auch fur eigene Zwecke verwenden konnen; siehe add_key(2), request_key(2) und keyctl(2). Eine Bibliothek und einige Hilfswerkzeuge im Benutzerraum werden bereitgestellt, um Zugriff auf die Einrichtung zu erlauben. Siehe keyctl(1), keyctl(3) und keyutils(7) fur weitere Informationen. Schlussel Ein Schlussel hat die folgenden Attribute: Seriennummer (ID) Dies ist ein eindeutiger, ganzzahliger Aufhanger, uber den bei Systemaufrufen der Schlussel referenziert wird. Die Seriennummer wird manchmal synonym als Schlussel-ID bezeichnet. In Programmen wird die Seriennummer durch den Typ key_serial_t reprasentiert. Typ Ein Schlusseltyp definiert, welche Arten an Daten im Schlussel gehalten werden konnen, wie der vorgeschlagene Inhalt des Schlussels ausgewertet und wie die Nutzlast verwandt wird. Es gibt eine Reihe von universellen Typen, sowie einige spezialisierte Typen, definiert durch bestimmte Kernelkomponenten. Beschreibung (Name) Die Schlusselbeschreibung ist eine darstellbare Zeichenkette, die als Suchausdruck fur den Schlussel (im Zusammenspiel mit dem Schlusseltyp) sowie als Anzeigename verwandt wird. Wahrend des Suchens kann die Beschreibung teilweise oder exakt ubereinstimmen. Nutzlast (Daten) Die Nutzlast ist der eigentliche Inhalt eines Schlussels. Dieser wird normalerweise gesetzt, wenn ein Schlussel erzeugt wird, aber es ist moglich, dass der Kernel im Benutzerraum anfragt, um die Instanziierung eines Schlussels abzuschliessen, falls der Schlussel dem Kernel bei der Anfrage noch nicht bekannt war. Weitere Details finden Sie in request_key(2). Die Nutzlast eines Schlussel kann gelesen und aktualisiert werden, falls der Schlusseltyp dies unterstutzt und falls der Aufrufende ausreichende Berechtigungen erhalten hat. Zugriffsrechte Ahnlich wie bei Dateien hat jeder Schlussel eine Eigentumer-Benutzerkennung, eine Eigentumer-Gruppenkennung und eine Sicherheitskennzeichnung. Jeder Schlussel hat auch eine Gruppe an Berechtigungen, allerdings gibt es mehr als fur eine normale UNIX-Datei, und es gibt die zusatzliche Kategorie >>Besitzer<< neben den gewohnlichen Benutzer, Gruppe und andere (siehe Besitz weiter unten). Beachten Sie, dass Schlussel Kontingenten unterliegen, da sie nicht auslagerungsfahigen Kernelspeicher benotigen. Die Eigentumer-Benutzerkennung legt fest, auf wessen Kontingent dies lauft. Ablaufzeit Jeder Schlussel kann uber eine Ablaufzeit verfugen. Wenn diese Zeit verstrichen ist, wird der Schlussel als abgelaufen markiert und Zugriff darauf schlagt mit EKEYEXPIRED fehl. Falls er nicht geloscht, aktualisiert oder ersetzt wird, wird der abgelaufene Schlussel nach einer einstellbaren Zeit automatisch geloscht (Speicherbereinigung), zusammen mit allen Verweisen darauf, und Zugriffe auf den Schlussel schlagen mit dem Fehler ENOKEY fehl. Referenzzahler Jeder Schlussel hat einen Referenzzahler. Schlussel werden von Schlusselbunden, von derzeit aktiven Benutzern und von Anmeldeberechtigungen von Prozessen referenziert. Wenn dieser Referenzzahler Null erreicht, dann wird der Schlussel fur die Speicherbereinigung eingeplant. Schlusseltypen Der Kernel stellt mehrere gundlegende Schlusseltypen bereit: "keyring" Schlusselbunde sind besondere Schlussel, die eine Gruppe von Verweisen auf andere Schlussel (einschliesslich anderer Schlusselbunde) speichern, ahnlich wie ein Verzeichnis Verweise auf Dateien speichert. Der Hauptzweck eines Schlusselbundes ist es, zu verhindern, dass andere Schlussel aus dem Speicher bereinigt werden, weil nichts mehr sie referenziert. Schlusselbunde mit Beschreibungen (Namen), die mit einem Punkt (>>.<<) beginnen, sind fur die Implementierung reserviert. "user" Dies ist ein Allzweck-Schlusseltyp. Der Schlussel wird im Gesamten im Kernelspeicher gehalten. Die Nutzlast kann von Anwendungen im Benutzerraum gelesen und aktualisiert werden. Die Nutzlast von Schlusseln dieses Typs ist ein beliebiger Datenblock (blob) mit bis zu 32.767 byte. Die Beschreibung kann eine beliebige gultige Zeichenkette sein. Es wird aber bevorzugt, dass sie mit einem Prafix startet, das durch einen Doppelpunkt abgetrennt wird, der den Dienst darstellt, fur den der Schlussel von Interesse ist (beispielsweise "afs:mykey"). "logon" (seit Linux 3.3) Dieser Schlusseltyp ist im wesentlichen der gleiche wie "user", er kann aber nicht gelesen werden (d.h. die Aktion KEYCTL_READ von keyctl(2)). Das bedeutet, dass die Schlussel-Nutzlast im Anwendungsraum niemals sichtbar ist. Dies ist fur Benutzername-Passworter-Paare nutzlich, die aus dem Anwendungsraum heraus nicht lesbar sein sollten. Die Beschreibung eines "logon"-Schlussels muss mit einem nicht leeren, Doppelpunkt-begrenzten Prafix beginnen, dessen Zweck darin besteht, den Dienst zu identifizieren, dem der Schlussel gehort. (Beachten Sie, dass sich das von Schlusseln des Typs "user" unterscheidet, bei denen die Aufnahme eines Prafix empfohlen, dies aber nicht erzwungen wird.) "big_key" (seit Linux 3.13) Dieser Schlussel ist ahnlich zum Schlusseltyp "user", kann aber eine Nutzlast von bis zu 1 MiB Grosse enthalten. Dieser Schlussel ist fur Zwecke wie Kerberos-Ticket-Zwischenspeicher nutzlich. Die Nutzlastdaten konnen in einem tmpfs-Dateisystem statt im Kernelspeicher gespeichert werden, falls die Datengrosse die Aufwandskosten des Speicherns der Daten im Dateisystem ubersteigt. (Zum Speichern von Daten in einem Dateisystem muss der Kernel Dateisystemstrukturen im Kernel reservieren. Die Grosse dieser Strukturen bestimmt den Schwellwert, uber dem die Tmpfs-Speichermethode verwandt wird.) Seit Linux 4.8 werden die Nutzlastdaten beim Speichern im Tmpfs verschlusselt, wodurch verhindert wird, dass sie in unverschlusselten Auslagerungsspeicher geschrieben werden. Es sind auch spezialisiertere Schlusseltypen verfugbar, aber sie werden hier nicht beschrieben, da sie nicht fur den normalen Anwendungsraum gedacht sind. Schlusselnamen, die mit einem Punkt (>>.<<) beginnen, sind fur die Implementierung reserviert. Schlusselbunde Wie bereits erwahnt, sind Schlusselbunde besondere Schlusseltypen, die Verweise auf andere Schlussel enthalten (wozu auch Schlusselbunde gehoren konnen). Schlussel konnen mit mehreren Schlusselbunden verbunden sein. Schlusselbunde konnen als Analogon zu UNIX-Verzeichnissen betrachtet werden, bei denen jedes Verzeichnis eine Reihe von harten Verweisen auf Dateien enthalt. Auf Schlusselbunde konnen verschiedene Aktionen (Systemaufrufe) durchgefuhrt werden: Hinzufugen Durch einen Systemaufruf, der Schlussel erstellt, kann ein Schlussel zu einem Schlusselbund hinzugefugt werden. Dies verhindert, dass ein neuer Schlussel sofort geloscht wird, wenn der Systemaufruf seine letzte Referenz auf den Schlussel freigibt. Verweisen Ein Verweis kann zu einem Schlusselbund hinzugefugt werden, der auf einen Schlussel zeigt, der bereits bekannt ist, vorausgesetzt, dies erzeugt keinen selbstreferenzierenden Zyklus. Verweis entfernen Ein Verweis kann von einem Schlusselbund entfernt werden. Wenn der letzte Verweis auf einen Schlussel entfernt wurde, wird der Schlussel zum Loschen durch die Speicherbereinigung eingeplant. Bereinigen Alle Verweise konnen von einem Schlusselbund entfernt werden. Suchen Ein Schlusselbund kann als Wurzel eines Baums oder Unterbaums betrachtet werden, bei dem Schlusselbunde die Zweige und Nicht-Schlusselbunde die Blatter darstellen. Dieser Baum kann nach einem Schlussel durchsucht werden, der auf einen bestimmten Typ und Beschreibung passt. Siehe keyctl_clear(3), keyctl_link(3), keyctl_search(3) und keyctl_unlink(3) fur weitere Informationen. Schlusselverankerungen Um zu verhindern, dass ein Schlussel vom Speicher bereinigt wird, muss er verankert werden, um seinen Referenzzahler erhoht zu halten, wenn er vom Kernel nicht aktiv benutzt wird. Schlusselbunde werden verwandt, um andere Schlussel zu verankern: jede Referenz ist eine Referenz auf einen Schlussel. Beachten Sie, dass Schlusselbunde selbst einfach nur Schlussel sind und den gleichen Verankerungsanforderungen unterliegen, um zu verhindern, dass sie speicherbereinigt werden. Der Kernel stellt eine Reihe von verankerten Schlusselbunden bereit. Beachten Sie, das einige dieser Schlusselbunde erst beim ersten Zugriff erstellt werden. Prozessschlusselbunde Prozesszugangsberechtigungen selbst referenzieren Schlusselbunde mit spezieller Semantik. Diese Schlusselbunde sind angeheftet, solange die Gruppe der Zugangsberechtigungen existiert. Dies ist normalerweise so lange, wie der Prozess existiert. Es gibt drei Schlusselbunde mit verschiedenen Vererbungs-/Mitbenutzungsregeln: session-keyring(7) (vererbt an und von allen Kindprozessen mitbenutzt), process-keyring(7) (vererbt von allen Threads in einem Prozess) und thread-keyring(7) (spezifisch fur einen bestimmten Thread). Als Alternative zur Verwendung der tatsachlichen Schlusselbundkennung konnen die besonderen Schlusselbundwerte KEY_SPEC_SESSION_KEYRING, KEY_SPEC_PROCESS_KEYRING und KEY_SPEC_THREAD_KEYRING in Aufrufen von add_key(2), keyctl(2) und request_key(2) verwandt werden, um auf die eigenen Instanzen des Aufrufenden von diesen Schlusselbunden zu verweisen. Benutzerschlusselbunde Jede dem Kernel bekannte UID hat einen Datensatz, der zwei Schlusselbunde enthalt: user-keyring(7) und user-session-keyring(7). Diese existieren solange wie der UID-Datensatz im Kernel existiert. Als Alternative zur Verwendung der tatsachlichen Schlusselbundkennungen konnen bei Aufrufen von add_key(2), keyctl(2) und request_key(2) die besonderen Schlusselbundwerte KEY_SPEC_USER_KEYRING und KEY_SPEC_USER_SESSION_KEYRING verwandt werden, um auf die eigenen Instanzen des Aufrufenden von diesen Schlusselbunden zu verweisen. Durch pam_keyinit(8) wird ein Verweis auf den Benutzerschlusselbund in einem neuen Sitzungsschlusselbund abgelegt, wenn eine neue Anmeldesitzung begonnen wird. Dauerhafte Schlusselbunde Fur jede dem System bekannte UID ist ein persistent-keyring(7) verfugbar. Er kann uber den schon erwahnten UID-Datensatz hinaus bestehen bleiben, hat aber eine Ablaufzeit gesetzt, so dass er nach einer gesetzten Zeit automatisch bereinigt wird. Der dauerhafte Schlusselbund erlaubt beispielsweise cron(8)-Skripten, Berechtigungsnachweise zu verwenden, die im dauerhaften Schlusselbund verbleiben, nachdem sich der Benutzer abgemeldet hat. Beachten Sie, dass die Ablaufzeit des dauerhaften Schlusselbundes bei jeder Anfrage des dauerhaften Schlussels zuruckgesetzt wird. Besondere Schlusselbunde Der Kernel besitzt besondere Schusselbunde, die Schlussel fur besondere Zwecke verankern konnen. Ein Beispiel hiefur ist der Systemschlusselbund, der fur das Halten der Verschlusselungsschlussel fur Modulsignaturuberprufung verwandt wird. Diese besonderen Schlusselbunde sind normalerweise fur die Bearbeitung aus dem Anwendungsraum nicht zuganglich. Ein ursprunglich geplanter >>Gruppenschlusselbund<<, zum Speichern von Schlusseln, die jeder dem Kernel bekannten GID zugeordnet sind, ist bisher nicht implementiert und wird dies wahrscheinlich auch nicht. Trotzdem wurde die Konstante KEY_SPEC_GROUP_KEYRING fur diesen Schlusselbund definiert. Besitz Das Konzept des Besitzes ist zum Verstandnis des Schlusselbund-Sicherheitsmodells wichtig. Ob ein Thread einen Schlussel besitzt, wird durch folgende Regeln bestimmt: (1) Jeder Schlussel oder Schlusselbund, der dem Aufrufenden keine Such-Berechtigung gewahrt, wird in den folgenden Regeln ignoriert. (2) Ein Thread besitzt seinen session-keyring(7), process-keyring(7) und thread-keyring(7) direkt, da diese Schlusselbunde von seinen Zugangsberechtigungen referenziert werden. (3) Falls ein Schlusselbund besessen wird, dann werden auch alle darin verwiesenen Schlussel besessen. (4) Falls ein Schlussel, auf den ein Schlusselbund verweist, selber wieder ein Schlusselbund ist, dann gilt Regel (3) rekursiv. (5) Falls ein Prozess vom Kernel hochgerufen wurde, um einen Schlussel zu instanziieren (siehe request_key(2)), dann besitzt er auch den Schlusselbund des Anfragenden gemass Regel (1), als ob er der Anfragende ware. Beachten Sie, dass Besitz keine fundamentale Eigenschaft eines Schlussels ist, sondern jedesmal bei Bedarf neu berechnet werden muss. Besitz wurde entwickelt, um es set-user-ID-Programmen zu ermoglichen, beispielsweise von einer Benutzer-Shell ausgefuhrt zu werden und auf die Schlussel des Benutzers zuzugreifen. Indem Zugriff auf Schlussel im Besitz erlaubt, aber Zugriff auf Basis des Schlusseleigentumers und dessen Gruppe verweigert wird, ist es moglich, den Zugriff auf Schlussel auf der Basis von Vergleichen von UID und GID zu vermeiden. Wenn pam_keyinit(8) einen Sitzungsschlussel erstellt, fugt es einen Verweis zu dem user-keyring(7) hinzu und damit gelangt der Benutzerschlussel und alles was darin ist standardmassig in den Besitz. Zugriffsrechte Jeder Schlussel hat die folgenden sicherheitsbezogenen Attribute: o Die Eigentumer-Benutzerkennung. o Die Kennung der Gruppe, der Zugriff auf den Schlussel erlaubt wird. o Eine Sicherheitskennzeichnung o Eine Berechtigungsmaske Diese Berechtigungsmaske enthalt vier Gruppen an Rechten. Die ersten drei Gruppen schliessen sich gegenseitig aus. Genau eine wird fur eine bestimmte Berechtigungsprufung aktiv sein. In absteigender Prioritat sind dies die Gruppen: Benutzer Diese Gruppe legt die Berechtigungen fest, die gewahrt werden, wenn die Benutzerkennung des Schlussels auf die Dateisystem-Benutzerkennung des Aufrufenden passt. Gruppe Diese Gruppe legt die Berechtigungen fest, die gewahrt werden, wenn die Benutzerkennungen nicht ubereinstimmten und die Schlusselgruppenkennung auf die Dateisystem-GID des Aufrufenden oder eine der erganzenden Gruppenkennungen des Aufrufenden passte. weitere Diese Gruppe legt die Berechtigungen fest, die gewahrt werden, wenn weder die Benutzerkennung des Schlussels noch die Gruppenkennung passt. Die vierte Gruppe an Berechtigungen ist: Besitzer Diese Gruppe legt die Berechtigungen fest, die gewahrt werden, wenn der Schlussel vom Aufrufenden besessen wird. Der vollstandige Satz an Berechtigungen fur einen Schlussel ist die Vereinigung von der ersten passenden der drei Gruppen mit der vierten Gruppe, falls der Schlussel besessen wird. Die Gruppe an Rechten, die in jeder der vier Masken gewahrt werden konnen, ist wie folgt: Betrachten Die Attribute des Schlussels konnen gelesen werden. Dazu gehoren der Typ, die Beschreibung und die Zugriffsrechte (ohne die Sicherheitskennzeichnung). Lesen Fur einen Schlussel: Die Nutzlast des Schlussels kann gelesen werden. Fur einen Schlusselbund: Die Liste der Seriennummern (Schlussel), die mit dem Schlusselbund verbunden sind, kann gelesen werden. Schreiben Die Nutzlast des Schlussels kann aktualisiert werden und der Schlussel kann zuruckgezogen werden. Fur einen Schlusselbund konnen Verweise hinzugefugt oder entfernt werden und der Schlusselbund kann komplett bereinigt werden (alle Verweise entfernt). Suchen Fur einen Schlussel (oder einen Schlusselbund): Der Schlussel kann in einer Suche gefunden werden. Fur einen Schlusselbund: Schlussel und Schlusselbunde, auf die verwiesen wird, konnen durchsucht werden. Verweisen Von Schlusselbunden konnen Verweise auf Schlussel erstellt werden. Der anfangliche Verweis auf einen Schlussel, der bei der Schlusselerstellung etabliert wird, benotigt diese Berechtigung nicht. Attributsetzen Die Details zum Eigentumer und der Sicherheitskennzeichnung konnen geandert werden, die Ablaufzeit des Schlussels kann gesetzt werden und der Schlussel kann zuruckgezogen werden. Zusatzlich zu den Zugriffsrechten kann jedes aktive Linux-Sicherheitsmodul (LSM) den Zugriff auf einen Schlussel verhindern, falls die Richtlinie das vorgibt. Ein Schlussel kann durch das LSM eine Sicherheitskennzeichnung oder andere Attribute erhalten; dieses Kennzeichen kann mit keyctl_get_security(3) ermittelt werden. Siehe keyctl_chown(3), keyctl_describe(3), keyctl_get_security(3), keyctl_setperm(3) und selinux(8) fur weitere Informationen. Schlussel suchen Eine der zentralen Funktionalitaten der Schlusselverwaltungseinrichtung von Linux ist die Fahigkeit, einen Schlussel zu finden, den ein Prozess aufbewahrt. Der Systemaufruf request_key(2) ist der primare Zugriffspunkt fur Anwendungen aus dem Benutzerraum, um den Schlussel zu finden. (Intern steht dem Kernel etwas ahnliches fur interne Komponenten, die Schlussel verwenden, zur Verfugung.) Der Suchalgorithmus funktioniert wie folgt: (1) Die Prozessschlusselbunde werden in der folgenden Reihenfolge durchsucht: der thread-keyring(7), falls er existiert, dann entweder der session-keyring(7), falls er existiert, oder user-session-keyring(7), falls dieser existiert. (2) Falls der Aufrufende ein Prozess war, der mittels des Hochruf-Mechanismus request_key(2) aktiviert wurde, dann werden die Schlusselbunde der ursprunglichen Aufrufenden von request_key(2) auch durchsucht. (3) Das Durchsuchen eines Schlusselbundbaums ist eine Breitensuche: jeder Schlusselbund wird zuerst auf einen Treffer durchsucht, dann werden die Schlusselbunde durchsucht, auf die der erste Schlusselbund verweist. (4) Falls ein passender Schlussel gefunden wird, der gultig ist, dann wird die Suche beendet und der Schlussel zuruckgeliefert. (5) Falls ein passender Schlussel gefunden wird, an dem ein Fehlerzustand hangt, dann wird dieser Fehlerzustand notiert und mit der Suche fortgefahren. (6) Falls kein gultiger Schlussel gefunden wird, dann wird der zuerst notierte Fehlerzustand zuruckgeliefert; andernfalls wird der Fehler ENOKEY zuruckgeliefert. Es kann auch nach einem bestimmten Schlusselbund gesucht werden, dann gelten nur die Schritte (3) bis (6). Siehe request_key(2) und keyctl_search(3) fur weitere Informationen. Bedarfsgesteuerte Schlusselerstellung Falls ein Schlussel nicht gefunden werden kann, wird request_key(2) einen neuen Schlussel erzeugen, falls das Argument callout_info angegeben wurde, und dann in den Benutzerraum hochrufen, um den Schlussel zu instanziieren. Damit ist es moglich, Schlussel bedarfsgesteuert zu erstellen. Typischerweise beteiligt dies den Kernel, der einen neuen Prozess erzeugt, der das Programm request-key(8) ausfuhrt, das dann den geeigneten Handler basierend auf seiner Konfiguration ausfuhrt. Dem Handler wird ein besonderer Autorisierungsschlussel ubergeben, der es ihm und nur ihm erlaubt, den neuen Schlussel zu instanziieren. Dies wird auch dazu verwandt, Suchen durch das Handler-Programm zu erlauben, die auch die Schlusselbunde des Anfragenden durchsuchen. Siehe request_key(2), keyctl_assume_authority(3), keyctl_instantiate(3), keyctl_negate(3), keyctl_reject(3), request-key(8) und request-key.conf(5) fur weitere Informationen. /proc-Dateien Der Kernel stellt verschiedene /proc-Dateien bereit, die Informationen uber Schlussel offenlegen oder Beschrankungen fur die Verwendung von Schlusseln definieren. /proc/keys (seit Linux 2.6.10) Diese Datei legt eine Liste von Schlusseln offen, fur die der lesende Thread die Betrachten-Berechtigung hat und stellt verschiedene Informationen uber jeden Schlussel bereit. Der Thread muss den Schlussel nicht besitzen, damit er in dieser Datei sichtbar ist. Die einzigen in dieser Liste aufgenommenen Schlussel sind diejenigen, die dem lesenden Prozess die Betrachten-Berechtigung gewahren (unabhangig davon, ob er sie besitzt oder nicht). LSM-Sicherheitsuberprufungen werden weiterhin durchgefuhrt und konnten weitere Schlussel herausfiltern, fur die dem Prozess die Autorisierung zur Betrachtung fehlt. Nachfolgend ein Beispiel fur die Daten, die Sie in der Datei sehen konnen (wobei die Spalten fur einfachere Bezuge nachfolgend nummeriert sind): (1) (2) (3)(4) (5) (6) (7) (8) (9) 009a2028 I--Q--- 1 perm 3f010000 1000 1000 user krb_ccache:primary: 12 1806c4ba I--Q--- 1 perm 3f010000 1000 1000 keyring _pid: 2 25d3a08f I--Q--- 1 perm 1f3f0000 1000 65534 keyring _uid_ses.1000: 1 28576bd8 I--Q--- 3 perm 3f010000 1000 1000 keyring _krb: 1 2c546d21 I--Q--- 190 perm 3f030000 1000 1000 keyring _ses: 2 30a4e0be I------ 4 2d 1f030000 1000 65534 keyring _persistent.1000: 1 32100fab I--Q--- 4 perm 1f3f0000 1000 65534 keyring _uid.1000: 2 32a387ea I--Q--- 1 perm 3f010000 1000 1000 keyring _pid: 2 3ce56aea I--Q--- 5 perm 3f030000 1000 1000 keyring _ses: 1 Die in jeder Zeile dieser Datei gezeigten Felder sind wie folgt: KENNUNG (1) Die Kennung (Seriennummer) des Schlussels, hexadezimal dargestellt. Schalter (2) Eine Gruppe von Schaltern, die den Status des Schlussels beschreiben: I Der Schlussel wurde instanziiert. R Der Schlussel wurde zuruckgezogen. D Der Schlussel ist tot (d.h. die Registrierung des Schlusseltyps wurde aufgehoben). (Wahrend der Speicherbereinigung kann ein Schlussel kurzfristig in diesem Zustand sein). Q Der Schlussel wird fur das Benutzerkontingent berucksichtigt. U Der Schlussel wird derzeit uber einen Ruckruf zum Anwendungsraum konstruiert; siehe request-key(2). N Der Schlussel wird negativ instanziiert. i Der Schlussel wurde entwertet. Einsatz (3) Dies ist die Anzahl der Kernelzugangsberechtigungsstrukturen, die den Schlussel anheften (ungefahr: die Anzahl der Threads und offenen Dateireferenzen, die sich auf diesen Schlussel beziehen). Zeituberschreitung (4) Die Zeitdauer, bis der Schlussel ablaufen wird, ausgedruckt in menschenlesbarer Form (Wochen, Tage, Stunden, Minuten und Sekunden). Die Zeichenkette perm bedeutet hier, dass der Schlussel permanent ist (keine Zeituberschreitung). Die Zeichenkette expd bedeutet, dass der Schlussel bereits abgelaufen ist, aber die Speicherbereinigung noch nicht erfolgte. Berechtigungen (5) Die Schlusselberechtigungen, ausgedruckt in vier hexadezimalen Bytes, die von links nach rechts den Besitzer, den Benutzer, die Gruppe und andere Berechtigungen enthalten. Innerhalb jedes Bytes sind die Berechtigungsbits wie folgt: 0x01 Betrachten 0x02 Lesen 0x04 Schreiben 0x08 Suchen 0x10 Verweisen 0x20 Attributsetzen UID (6) Die Benutzerkennung des Schlusseleigentumers. GID (7) Die Gruppenkennung des Schlussels. Hier bedeutet der Wert -1, dass der Schlussel keine Gruppenkennung hat. Dies kann unter bestimmten Umstanden bei vom Kernel erstellten Schlusseln auftreten. Typ (8) Der Schlusseltyp (Benutzer, Schlusselbund, usw.) Beschreibung (9) Die Schlusselbeschreibung (Name). Dieses Feld enthalt eine beschreibende Information uber den Schlussel. Fur die meisten Schlusseltypen hat es die folgende Form: Name[: Extra-info] Das Unterfeld Name ist die Schlusselbeschreibung (der Name). Das optionale Feld Extra-Info stellt einige weitere Informationen uber den Schlussel bereit. Die hier auftauchende Information hangt vom Schlusseltyp wie folgt ab: "user" und "logon" Die Grosse in Byte der Schlusselnutzlast (dezimal dargestellt). "keyring" Die Anzahl der Schlussel, auf die vom Schlusselbund verwiesen wird, oder die Zeichenkette empty, falls es keine Schlussel gibt, auf die vom Schlusselbund verwiesen wird. "big_key" Die Nutzlastgrosse in Byte, gefolgt entweder von der Zeichenkette [file], falls die Schlusselnutzlast den Schwellwert ubersteigt, was bedeutet, dass die Nutzlast in einem (auslagerungsfahigen) tmpfs(5)-Dateisystem gespeichert ist, oder der Zeichenkette [buff], die anzeigt, dass der Schlussel klein genug ist, um sich im Kernelspeicher zu befinden. Fur den Schlusseltyp ".request_key_auth" (Autorisierungsschlussel, siehe request_key(2)) hat das Beschreibungsfeld die im folgenden Beispiel gezeigte Form: key:c9a9b19 pid:28880 ci:10 Die drei Unterfelder sind wie folgt definiert: key Die hexadezimale Kennung des Schlussels, der im anfragenden Programm instanziiert wird. pid Die PID (Prozesskennung) des anfragenden Programms. ci Die Lange der Abrufdaten, mit denen der angefragte Schlussel instanziiert werden soll (d.h. die Lange der Nutzlast, die dem Autorisierungsschlussel zugeordnet ist). /proc/key-users (seit Linux 2.6.10) Diese Datei listet verschiedene Informationen uber jede Benutzerkennung auf, die im System mindestens einen Schlussel hat. Beispielsweise konnten Sie in dieser Datei Folgendes sehen: 0: 10 9/9 2/1000000 22/25000000 42: 9 9/9 8/200 106/20000 1000: 11 11/11 10/200 271/20000 Die Bedeutung der Felder in jeder Zeile im Einzelnen: UID Die Benutzerkennung. Verwendung Dies ist ein kernelinterner Verwendungszahler fur die Kernelstruktur, die zur Aufzeichnung der Schlusselbenutzer verwandt wird. GAnzSchlussel/AnzISchlussel Die Gesamtanzahl der von diesem Benutzer besessenen Schlussel und die Anzahl dieser Schlussel, die instanziiert wurden. AnzSchlussel/Maxschlussel Die Anzahl der Schlussel, die dieser Benutzer besitzt und die maximale Anzahl der Schlussel, die der Benutzer besitzen kann. AnzBytes/MaxBytes Die Anzahl an Bytes, die in Nutzlasten von Schlusseln, die im Besitz dieses Benutzers sind, konsumiert wurden und die obere Grenze der Anzahl an Bytes, die in Schlusselnutzlasten fur diesen Benutzer moglich sind. /proc/sys/kernel/keys/gc_delay (seit Linux 2.6.32) Der Wert in dieser Datei legt das Intervall in Sekunden fest, nachdem zuruckgezogene und abgelaufene Schlussel der Speicherbereinigung unterliegen. Der Zweck fur ein solches Intervall besteht darin, dass es ein Zeitfenster gibt, in dem der Anwendungsraum einen Fehler sehen kann (EKEYREVOKED bzw. EKEYEXPIRED), der anzeigt, was mit dem Schlussel passierte. Der Vorgabewert in dieser Datei ist 300 (d.h. 5 Minuten). /proc/sys/kernel/keys/persistent_keyring_expiry (seit Linux 3.13) Diese Datei definiert ein Intervall in Sekunden, auf das die Ablauf-Zeituberschreitung bei jedem Zugriff auf den dauerhaften Schlusselbund zuruckgesetzt wird (mittels keyctl_get_persistent(3) oder der Aktion KEYCTL_GET_PERSISTENT von keyctl(2)). Der Vorgabewert in dieser Datei ist 259200 (d.h. 3 Tage). Die folgenden Dateien (die von privilegierten Prozessen schreibbar sind) werden zur Durchsetzung von Kontingenten zur Anzahl der Schlussel und der Anzahl an Daten-Bytes, die in der Schlusselnutzlast gespeichert werden konnen, verwandt: /proc/sys/kernel/keys/maxbytes (seit Linux 2.6.26) Dies ist die maximale Anzahl an Daten-Bytes, die ein von Root verschiedener Benutzer in Nutzlasten in Schlusseln, die ihm gehoren, halten kann. Der Vorgabewert in dieser Datei ist 20.000. /proc/sys/kernel/keys/maxkeys (seit Linux 2.6.26) Dies ist die maximale Anzahl an Schlusseln, die ein von root verschiedener Benutzer besitzen kann. Der Vorgabewert in dieser Datei ist 200. /proc/sys/kernel/keys/root_maxbytes (seit Linux 2.6.26) Dies ist die maximale Anzahl an Daten-Bytes, die der Benutzer root (UID 0 in dem Wurzelbenutzernamensraum) in der Nutzlast der Schlussel, die root gehoren, halten kann. Der Vorgabewert in dieser Datei ist 25.000.000 (20.000 vor Linux 3.17). /proc/sys/kernel/keys/root_maxkeys (seit Linux 2.6.26) Dies ist die maximale Anzahl von Schlusseln, die der Benutzer root (UID 0 in dem Wurzelbenutzernamensraum) besitzen kann. Der Vorgabewert in dieser Datei ist 1.000.000 (200 vor Linux 3.17). Beachten Sie, dass in Bezug auf Schlusselbunde jeder Verweis 4 byte der Schlusselbundnutzlast verbraucht. Benutzer Die Schlusselverwaltungseinrichtung von Linux hat eine Reihe von Benutzern und Verwendungen, aber sie ist nicht auf die bereits existierenden beschrankt. Kernelinterne Benutzer dieser Einrichtung sind unter anderem: Netzwerkdateisystem - DNS Der Kernel verwendet den durch die Schlussel bereitgestellten Hochruf-Mechanismus, um im Benutzerraum hochzurufen, DNS-Nachschlagen durchzufuhren und die Ergebnisse zwischenzuspeichern. AF_RXRPC und kAFS - Authentifizierung Das Netzwerkprotokoll AF_RXRPC und das kernelinterne AFS-Dateisystem verwenden Schlussel, um die benotigten Tickets fur gesicherten oder verschlusselten Datenverkehr zu speichern. Diese werden dann bei Netzwerkaktionen fur AF_RXRPC- und Dateisystem-Aktionen bei kAFS nachgeschlagen. NFS - Benutzerkennungsabbildung Das NFS-Dateisystem verwendet Schlussel, um Abbildungen von fremden Benutzerkennungen auf lokale Benutzerkennungen zu speichern. CIFS - Passwort Das CIFS-Dateisystem verwendet Schlussel, um Passworter fur den Zugriff auf ferne Laufwerksfreigaben zu speichern. Moduluberprufung Der Kernel-Bauprozess kann Module kryptographisch signieren. Diese Signatur wird beim Laden des Moduls uberpruft. Anwendungsraum-Benutzer dieser Einrichtung sind unter anderem: Kerberos-Schlusselspeicher Die MIT-Kerberos-5-Einrichtung (libkrb5) kann Schlussel verwenden, um Authentifizierungs-Merkmale zu speichern, die dann so eingerichtet werden konnen, dass sie nach einer bestimmten Zeit nach der letzten Verwendung automatisch bereinigt werden, aber bis dahin vorhanden sein konnen, nachdem der Benutzer sich abgemeldet hat, so dass cron(8)-Skripte sie verwenden konnen. SIEHE AUCH keyctl(1), add_key(2), keyctl(2), request_key(2), keyctl(3), keyutils(7), persistent-keyring(7), process-keyring(7), session-keyring(7), thread-keyring(7), user-keyring(7), user-session-keyring(7), pam_keyinit(8), request-key(8) Die Kernel-Quelldateien Documentation/crypto/asymmetric-keys.txt und unter Documentation/security/keys (oder in der Datei Documentation/security/keys.txt vor Linux 4.13). UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 keyrings(7)