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


11.11 Privileged Programs

Certains programmes doivent être lancés avec des privilèges élevés même lorsqu’ils sont lancés par un utilisateur non privilégié. Un exemple notoire est le programme passwd, que les utilisateurs peuvent appeler pour modifier leur mot de passe et qui doit accéder à /etc/passwd et /etc/shadow — ce qui est normalement réservé à root, pour des raisons de sécurité évidentes. Pour contourner cela, passwd devrait être setuid-root, ce qui signifie qu’il sera toujours lancé avec les privilèges root (voir How Change Persona dans The GNU C Library Reference Manual, pour plus d’informations sur le mécanisme setuid).

The store itself cannot contain privileged 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 directly granting permissions to files that are in the store, we let the system administrator declare which programs should be entrusted with these additional privileges.

Le champ privileged-programs d’une déclaration operating-system contient une liste de <privileged-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 :

(privileged-program
  (program (file-append nfs-utils "/sbin/mount.nfs"))
  (setuid? #t))

Ensuite, pour rendre mount.nfs setuid sur votre système, ajoutez l’exemple précédent à votre déclaration de système d’exploitation en l’ajoutant aux %default-privileged-programs de cette façon :

(operating-system;; Certains champs omis...
  (privileged-programs
    (append (list (privileged-program
                    (program (file-append nfs-utils "/sbin/mount.nfs"))
                    (setuid? #t))
            %default-privileged-programs)))
Type de données :privileged-program

This data type represents a program with special privileges, such as setuid

program

A file-like object to which all given privileges should apply.

setuid? (par défaut : #f)

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.

capabilities (default: #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.

A default set of privileged programs is defined by the %default-privileged-programs variable of the (gnu system) module.

Variable :Variable Scheme %default-privileged-programs

A list of <privileged-program> denoting common programs with elevated privileges.

La liste inclus des commandes comme passwd, ping, su et sudo.

Under the hood, the actual privileged programs are created in the /run/privileged/bin directory at system activation time. The files in this directory refer to the “real” binaries, which are in the store.


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