nss-systemd, libnss_systemd.so.2 - UNIX-Benutzer- und
-Gruppennamensauflösung zum Nachschlagen von Benutzern/Gruppen mittels
Varlink
libnss_systemd.so.2
nss-systemd ist ein Erweiterungsmodul für die GNU »Name
Service Switch« (NSS)-Funktionalität der GNU-C-Bibliothek (
glibc). Es stellt eine UNIX-Benutzer- und
-Gruppennamensauflösung für Dienste bereit, die das
Nachschlagen von Benutzern-/Gruppendatensätzen mittels
Varlink[1] implementieren (für seine Funktionalität
DynamicUser=, siehe
systemd.exec(5) für Details),
systemd-homed.service(8) oder
systemd-machined.service(8).
Dieses Modul stellt auch sicher, dass die Benutzer und Gruppen
»root« und »nobody« (d.h. die Benutzer/Gruppen mit
den UIDs/GIDs 0 und 65534) zu allen Zeiten aufgelöst werden
können, selbst wenn sie in /etc/passwd oder /etc/group nicht
aufgeführt sind oder diese Dateien fehlen.
Dieses Modul verwendet bevorzugt
systemd-userdbd.service(8) zur
Auflösung von Benutzern und Gruppen, funktioniert aber auch, wenn
dieser Dienst nicht läuft.
Um das NSS-Modul zu aktivieren, fügen Sie »systemd« zu den
mit »passwd:«, »group:«, »shadow:«
und »gshadow:« in /etc/nsswitch.conf beginnenden Zeilen hinzu.
Es wird empfohlen, »systemd« nach dem »files«- oder
»compat«-Eintrag in den /etc/nsswitch.conf-Zeilen abzulegen, um
sicherzustellen, dass /etc/passwd-, /etc/group-, /etc/shadow- und
/etc/gshadow-basierte Abbildungen Vorrang haben.
Neben den Benutzer-/Gruppendatensätzen, die über die vorgenannten
Varlink-IPC-Schnittstellen erlangt werden und die synthetisierten Konten von
root und nobodoy, stellt dieses Modul auch Benutzer- und Gruppenkonten dem
System zur Verfügung, die in statischen Ergänzungsdateien in den
Verzeichnissen /etc/userdb/, /run/userdb/, /run/host/userdb/ und
/usr/lib/userdb/ definiert sind.
Dies ist ein einfacher Mechanismus, statische Benutzer- und
Gruppendatensätze mittels JSON-Ergänzungsdateien
bereitzustellen. Solche Benutzerdatensätze sollten in dem in der
Spezifikation
JSON-Benutzerdatensätze[2] beschriebenen Format
bereitgestellt werden und in eines der vorgenannten Verzeichnisse unter einem
Dateinamen abgelegt werden, der aus dem Benutzernamen mit angehängtem
.user besteht; die Datei sollte für alle lesbar sein. Es sollte auch
ein Symlink, der nach der UID des Benutzerdatensatzes benannt, dezimal
formatiert und mit angehängtem .user versehen ist, erstellt werden, der
auf die primäre Datensatzdatei zeigt, um Nachschlagen nach sowohl dem
Benutzer als auch der UID zu ermöglichen. Es können optional
auch privilegierte Benutzerdaten (z.B. gehashte UNIX-Passwörter)
bereitgestellt werden und zwar als Paar von getrennten Begleiterdateien mit
der Endung .user-privileged. Die Daten sollten in einer regulären Datei
gespeichert werden, die nach dem Benutzernamen benannt ist und die Endung
.user-privileged trägt und einem Symlink, der darauf zeigt, der nach
der verwandten numerischen UID, dezimal formatiert, benannt ist und die
gleiche Endung hat. Diese Begleiterdateien sollten nur für root lesbar
sein. Beispiel:
-rw-r--r--. 1 root root 723 May 10 foobar.user
-rw-------. 1 root root 123 May 10 foobar.user-privileged
lrwxrwxrwx. 1 root root 19 May 10 4711.user -> foobar.user
lrwxrwxrwx. 1 root root 19 May 10 4711.user-privileged -> foobar.user-privileged
Ähnlich können Gruppendatensätze, die dem in
JSON-Gruppendatensatz[3] beschriebenen Format folgen, definiert werden.
Sie verwenden die Endungen .group und .group-privileged.
Die primären Benutzer-/Gruppendatensätze (d.h. solche, mit der
Endung .user und .group) sollten keinen »privilegierten«
Abschnitt enthalten, wie das in der Spezifikation beschrieben ist.
Ausschließlich die privilegierten Benutzer-/Gruppendatensatzdateien
(d.h. die mit den Endungen .user-privileged und .group-privileged) sollten
diesen Abschnitt enthalten.
Beachten Sie, dass die statischen Benutzer-/Gruppendatensätze im
Allgemeinen dazu in Konflikt stehende Datensätze /etc/passwd
oder/etc/group oder anderen Kontodatenbanken nicht außer Kraft setzen.
Bevor diese Dateien entfernt werden, sollte vernünftige Sorgfalt walten
gelassen werden, Konflikte bei Benutzer-/Gruppennamen und UIDs/GIDs zu
vermeiden.
Hier ist ein Beispiel für eine /etc/nsswitch.conf-Datei, die
nss-systemd korrekt aktiviert:
passwd: compat systemd
group: compat [SUCCESS=merge] systemd
shadow: compat systemd
gshadow: files systemd
hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Der Container »rawhide« wird mittels
systemd-nspawn(1)
erzeugt:
# systemd-nspawn -M rawhide --boot --network-veth --private-users=pick
Spawning container rawhide on /var/lib/machines/rawhide.
Selected user namespace base 20119552 and range 65536.
…
$ machinectl --max-addresses=3
MACHINE CLASS SERVICE OS VERSION ADDRESSES
rawhide container systemd-nspawn fedora 30 169.254.40.164 fe80::94aa:3aff:fe7b:d4b9
$ getent passwd vu-rawhide-0 vu-rawhide-81
vu-rawhide-0:*:20119552:65534:vu-rawhide-0:/:/usr/sbin/nologin
vu-rawhide-81:*:20119633:65534:vu-rawhide-81:/:/usr/sbin/nologin
$ getent group vg-rawhide-0 vg-rawhide-81
vg-rawhide-0:*:20119552:
vg-rawhide-81:*:20119633:
$ ps -o user:15,pid,tty,command -e|grep '^vu-rawhide'
vu-rawhide-0 692 ? /lib/systemd/systemd
vu-rawhide-0 731 ? /lib/systemd/systemd-journald
vu-rawhide-192 734 ? /lib/systemd/systemd-networkd
vu-rawhide-193 738 ? /lib/systemd/systemd-resolved
vu-rawhide-0 742 ? /lib/systemd/systemd-logind
vu-rawhide-81 744 ? /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
vu-rawhide-0 746 ? /usr/sbin/sshd -D ...
vu-rawhide-0 752 ? /lib/systemd/systemd --user
vu-rawhide-0 753 ? (sd-pam)
vu-rawhide-0 1628 ? login -- zbyszek
vu-rawhide-1000 1630 ? /lib/systemd/systemd --user
vu-rawhide-1000 1631 ? (sd-pam)
vu-rawhide-1000 1637 pts/8 -zsh
systemd(1),
systemd.exec(5),
nss-resolve(8),
nss-myhostname(8),
nss-mymachines(8),
systemd-userdbd.service(8),
systemd-homed.service(8),
systemd-machined.service(8),
nsswitch.conf(5),
getent(1)
- 1.
- Benutzer-/Gruppen-Datensatznachschlage-API über
Varlink
- 2.
- JSON-Benutzerdatensätze
- 3.
- JSON-Gruppendatensatz
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann
<
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer