Je suis en train de lire le livre Linux kernel development, au chapitre 5 "System Call Implementation" page 77 dit
Par exemple, capable(CAP_SYS_NICE) vérifie si l'appelant a la capacité de modifier les valeurs de nice d'autres processus. Par défaut, le
superutilisateur possède toutes les capacités et non root n'en possède aucune. Pour
exemple, voici l'appel système reboot(). Notez comment sa première étape consiste
à s'assurer que le processus appelant a le CAP_SYS_REBOOT . Si cette
instruction conditionnelle était supprimée, n'importe quel processus pourrait redémarrer le
système.
Cependant, dans mon Debian Sid, je peux redémarrer ma machine en utilisant gnome ou en exécutant /sbin/reboot sans sudo ou su.
Comment est-ce possible ?
Peut-être avec systemctl ?
ls -l /sbin/reboot
lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl
EDIT :Mes groupes d'utilisateurs
[[email protected]:~]$ groups
damian sudo wireshark bumblebee
EDIT 2 :autorisations systemctl
[[email protected]:~]$ ls -l /bin/systemctl
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl
Réponse acceptée :
Cela se fait via un gestionnaire d'autorisation appelé polkit
:
polkit fournit une API d'autorisation destinée à être utilisée par des programmes
privilégiés ("MÉCANISMES") offrant un service à des programmes non privilégiés
("SUJETS") souvent via une forme de mécanisme de communication inter-processus
.
Avec systemd
et polkit
les utilisateurs avec une session non distante peuvent émettre des commandes liées à l'alimentation. Vous pouvez lister tous les polkit
actions enregistrées et obtenez des détails sur chacune d'entre elles avec pkaction
(appelé sans arguments, il listera tous les identifiants d'action).
Dans ce cas particulier, l'identifiant d'action est org.freedesktop.login1.reboot
donc si vous lancez :
pkaction --action-id org.freedesktop.login1.reboot --verbose
la sortie devrait ressembler à :
org.freedesktop.login1.reboot:
description: Reboot the system
message: Authentication is required for rebooting the system.
vendor: The systemd Project
vendor_url: http://www.freedesktop.org/wiki/Software/systemd
icon:
implicit any: auth_admin_keep
implicit inactive: auth_admin_keep
implicit active: yes
Ici, active: yes
signifie que l'utilisateur de la session active est autorisé à
redémarrer le système (détails sur les autorisations implicites sur polkit
page). Vous pouvez vérifier si votre session est active avec :
loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes