Nächste: X.509-Zertifikate, Vorige: Dienste, Nach oben: Systemkonfiguration [Inhalt][Index]
Manche Programme müssen mit erhöhten Berechtigungen ausgeführt werden,
selbst wenn Nutzer ohne besondere Berechtigungen sie starten. Ein bekanntes
Beispiel ist das Programm passwd
, womit Nutzer ihr Passwort ändern
können, wozu das Programm auf die Dateien /etc/passwd und
/etc/shadow zugreifen muss – was normalerweise nur der
„root“-Nutzer darf, aus offensichtlichen Gründen der
Informationssicherheit. Deswegen sollte passwd
setuid-root
sein, d.h. es läuft immer mit den Administratorrechten des root-Nutzers,
egal wer sie startet (siehe How Change Persona in Referenzhandbuch der GNU-C-Bibliothek für mehr Informationen über den
setuid-Mechanismus).
Der Store selbst kann keine privilegierten Programme enthalten: Das wäre eine Sicherheitslücke, weil dann jeder Nutzer auf dem System Ableitungen schreiben könnte, die in den Store solche Dateien einfügen würden (siehe Der Store). Wir benutzen also einen anderen Mechanismus: Statt auf den ausführbaren Dateien im Store selbst die Berechtigungen festzulegen, lassen wir den Systemadministrator deklarieren, welchen Programmen diese zusätzlichen Berechtigungen gewährt werden.
Das Feld privileged-programs
einer
operating-system
-Deklaration enthält eine Liste von
<privileged-program>
-Objekten, die die Namen der Programme angeben,
deren setuid- oder setgid-Bits gesetzt werden sollen (siehe Das Konfigurationssystem nutzen). Zum Beispiel kann das Programm mount.nfs
,
was Teil des Pakets nfs-utils ist, so setuid-root werden:
(privileged-program
(program (file-append nfs-utils "/sbin/mount.nfs"))
(setuid? #t))
Um mount.nfs
also mit setuid auszuführen, tragen Sie das vorige
Beispiel in Ihre Betriebssystemdeklaration ein, indem Sie es an
%default-privileged-programs
anhängen wie hier:
(operating-system
;; Davor stehen andere Felder …
(privileged-programs
(append (list (privileged-program
(program (file-append nfs-utils "/sbin/mount.nfs"))
(setuid? #t))
%default-privileged-programs)))
Dieser Datentyp steht für ein Programm, bei dem besondere Berechtigungen wie setuid gesetzt werden sollen.
program
A file-like object to which all given privileges should apply.
setuid?
(Vorgabe: #f
)Ob das setuid-Bit für den Benutzer gesetzt werden soll.
setgid?
(Vorgabe: #f
)Ob das setgid-Bit für die Benutzergruppe gesetzt werden soll.
user
(Vorgabe: 0
)Benutzeridentifikator (UID, als ganze Zahl) oder Benutzername (als Zeichenkette) des Benutzers, dem das Programm gehören soll, nach Vorgabe der Administratornutzer root.
group
(Vorgabe: 0
)GID (als ganze Zahl) oder Gruppenname (als Zeichenkette) der Benutzergruppe, der das Programm gehört, nach Vorgabe die Benutzergruppe root.
capabilities
(Vorgabe: #f
)A string representing the program’s POSIX capabilities, as described by the
cap_to_text(3)
man page from the libcap package, or #f
to make
no changes.
Eine vorgegebene Menge von privilegierten Programmen wird durch die Variable
%default-privileged-programs
aus dem Modul (gnu system)
definiert.
Eine Liste von <privileged-program>
-Objekten, die übliche Programme
angeben, die besonders berechtigt sein müssen.
Die Liste enthält Befehle wie passwd
, ping
, su
und sudo
.
Intern erzeugt Guix die eigentlichen privilegierten Programme im Verzeichnis /run/privileged/bin, wenn das System aktiviert wird. Die Dateien in diesem Verzeichnis verweisen auf die „echten“ Binärdateien im Store.
Nächste: X.509-Zertifikate, Vorige: Dienste, Nach oben: Systemkonfiguration [Inhalt][Index]