GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment Gnome redémarre-t-il sans privilèges root ?

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

Linux
  1. Comment configurer les privilèges Sudo pour l'utilisateur sous Linux

  2. Comment vérifier la disponibilité du système sous Linux

  3. Linux – Comment régénérer 70-persistent-net.rules sans redémarrage ?

  4. Comment arrêter ou redémarrer Linux

  5. Comment programmer un redémarrage sous Linux ?

Comment étendre la partition racine XFS sans LVM sous Linux

Comment vérifier la version Linux

Commande de redémarrage Linux (redémarrer)

Comment vérifier l'historique de redémarrage du système et l'heure de démarrage sous Linux

Comment chiffrer le système de fichiers racine sous Linux

Comment répertorier les services sous Linux