Suivant: Certificats X.509, Précédent: Services, Monter: Configuration du système [Table des matières][Index]
Some programs need to run with elevated privileges, even when they are
launched by unprivileged users. A notorious example is the passwd
program, which users can run to change their password, and which needs to
access the /etc/passwd and /etc/shadow files—something
normally restricted to root, for obvious security reasons. To address that,
passwd
should be setuid-root, meaning that it always runs
with root privileges (voir How Change Persona dans The GNU C Library
Reference Manual, for more info about the setuid mechanism).
The store itself cannot contain setuid programs: that would be a security issue since any user on the system can write derivations that populate the store (voir Le dépôt). Thus, a different mechanism is used: instead of changing the setuid or setgid bits directly on files that are in the store, we let the system administrator declare which programs should be entrusted with these additional privileges.
Le champ setuid-programs
d’une déclaration operating-system
contient une liste de <setuid-program>
qui dénotent les noms des
programmes qui auront le bit setuid ou setgid (voir Utiliser le système de configuration). Par exemple, le programme mount.nfs
, qui
fait partie du paquet nfs-utils, avec le bit setuid root, peut être désigné
comme ceci :
(setuid-program
(program (file-append nfs-utils "/sbin/mount.nfs")))
And then, to make mount.nfs
setuid on your system, add the
previous example to your operating system declaration by appending it to
%setuid-programs
like this:
(operating-system
;; Some fields omitted...
(setuid-programs
(append (list (setuid-program
(program (file-append nfs-utils "/sbin/mount.nfs"))))
%setuid-programs)))
Ce type de données représente un programme avec le bit setuid ou setgid.
program
Un objet simili-fichier dont le bit setuid ou setgid est activé.
setuid?
(par défaut : #t
)Indique s’il faut activer le bit setuid.
setgid?
(par défaut : #f
)Indique s’il faut active le bit setgid.
user
(par défaut : 0
)L’UID (entier) ou le nom d’utilisateur (chaîne) du propriétaire du programme, root par défaut.
group
(par défaut : 0
)Le GID (entier) ou le nom du groupe (chaîne) pour le groupe propriétaire du programme, root par défaut.
Un ensemble de programmes par défaut est défini par la variable
%setuid-programs
du module (gnu system)
.
Une liste de <setuid-program>
qui dénotent les programmes communément
setuid-root.
La liste inclus des commandes comme passwd
, ping
,
su
et sudo
.
Sous le capot, les programmes setuid sont créés dans le répertoire /run/setuid-programs au moment de l’activation du système. Les fichiers dans ce répertoire se réfèrent aux « vrais » binaires, qui sont dans le dépot.
Suivant: Certificats X.509, Précédent: Services, Monter: Configuration du système [Table des matières][Index]