Suivant: Certificats X.509, Précédent: Services, Monter: Configuration du système [Table des matières][Index]
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)))
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]