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