GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come si riavvia Gnome senza privilegi di root?

Sto leggendo il libro Sviluppo del kernel Linux, nel capitolo 5 “Implementazione delle chiamate di sistema” a pagina 77 dice

Ad esempio, incapace(CAP_SYS_NICE) controlla se il chiamante ha la capacità
di modificare i valori piacevoli di altri processi. Per impostazione predefinita, il superutente
possiede tutte le capacità e il non root non ne possiede nessuna. Per
esempio, ecco la chiamata di sistema reboot(). Nota come il suo primo passaggio è
garantire che il processo chiamante abbia CAP_SYS_REBOOT . Se quella
istruzione condizionale fosse rimossa, qualsiasi processo potrebbe riavviare il
sistema.

Tuttavia, nel mio Debian Sid posso riavviare la mia macchina usando gnome o eseguendo /sbin/reboot senza sudo o su.
Come è possibile?

Forse con systemctl?

ls -l /sbin/reboot 
lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl

EDIT:I miei gruppi di utenti

[[email protected]:~]$ groups 
damian sudo wireshark bumblebee

EDIT 2:autorizzazioni systemctl

[[email protected]:~]$ ls -l /bin/systemctl 
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl

Risposta accettata:

Questo viene fatto tramite un gestore delle autorizzazioni chiamato polkit :

polkit fornisce un'API di autorizzazione destinata ad essere utilizzata da programmi
("MECCANISMI") privilegiati che offrono servizi a programmi non privilegiati
("SOGGETTI") spesso attraverso una qualche forma di meccanismo di comunicazione tra processi
.

Con systemd e polkit gli utenti con una sessione non remota possono emettere comandi relativi all'alimentazione. Puoi elencare tutti i polkit azioni registrate e ottieni dettagli su ognuna di esse con pkaction (richiamato senza argomenti elencherà tutti gli ID azione).
In questo caso particolare l'ID azione è org.freedesktop.login1.reboot quindi se corri:

pkaction --action-id org.freedesktop.login1.reboot --verbose

l'output dovrebbe essere qualcosa del tipo:

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

Qui, active: yes significa che l'utente nella sessione attiva è autorizzato a
riavviare il sistema (dettagli sulle autorizzazioni implicite su polkit pagina). Puoi verificare se la tua sessione è attiva con:

loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes

Linux
  1. Linux:come rigenerare 70-persistent-net.rules senza riavviare?

  2. Come spegnere o riavviare Linux

  3. Come visualizzare la data e l'ora di riavvio del sistema Linux

  4. Come rilevare se il sistema operativo Linux utilizza l'ambiente KDE o Gnome

  5. Come avviare un sistema Linux senza server grafico

Come estendere la partizione radice XFS senza LVM in Linux

Come controllare la versione di Linux

Comando di riavvio (riavvio) di Linux

Come controllare la cronologia di riavvio del sistema e il tempo di avvio in Linux

Come crittografare il filesystem di root su Linux

Come elencare i servizi su Linux