Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]

12.10 Programmes setuid

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 :

  (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:

  ;; Some fields omitted...
    (append (list (setuid-program
                    (program (file-append nfs-utils "/sbin/mount.nfs"))))
Type de données : setuid-program

Ce type de données représente un programme avec le bit setuid ou setgid.


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).

Variable Scheme : %setuid-programs

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: , Précédent: , Monter: Configuration du système   [Table des matières][Index]