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


12.10 Programmes setuid

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

Le dépôt lui-même ne peut pas contenir de programmes setuid ; cela serait un problème de sécurité puisque n’importe quel utilisateur du système peut écrire une dérivation qui rempli le dépôt (voir Le dépôt). Donc, un mécanisme différent est utilisé : au lieu de changer les bits setuid ou setgid directement sur les fichiers qui sont dans le dépôt, nous laissons à l’administrateur système le soit de déclarer les programmes qui devraient avoir ces privilèges supplémentaires.

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

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 %setuid-programs de cette façon :

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

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

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]