Come si riavvia gnome senza i privilegi di root?


8

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

Ad esempio, capace (CAP_SYS_NICE) controlla se il chiamante ha la possibilità di modificare i valori corretti di altri processi. Per impostazione predefinita, il superutente possiede tutte le funzionalità e il non root non ne possiede. Ad esempio, ecco la chiamata di sistema reboot (). Nota come il primo passo è garantire che il processo di chiamata abbia CAP_SYS_REBOOT. Se quell'unica istruzione condizionale fosse rimossa, qualsiasi processo potrebbe riavviare il sistema.

Tuttavia, nel mio Debian Sid posso riavviare il mio computer usando gnome o eseguendo / sbin / reboot senza sudo o su. Com'è 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

[damian@xvz:~]$ groups 
damian sudo wireshark bumblebee

EDIT 2: autorizzazioni systemctl

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

Forse lo è systemctl . Che cosa ls -l /bin/systemctlti dice?
G-Man dice "Ripristina Monica" il

Risposte:


12

Questo viene fatto tramite un gestore delle autorizzazioni chiamato polkit:

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

Con systemde gli polkitutenti con sessione non remota possono inviare comandi relativi all'alimentazione. Puoi elencare tutte polkitle azioni registrate e ottenere dettagli su ognuna di esse pkaction(invocato senza argomenti elencherà tutti gli ID azione).
In questo caso particolare l'id di azione è org.freedesktop.login1.rebootcosì se si esegue:

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

l'output dovrebbe essere simile a:

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: yessignifica che l'utente nella sessione attiva è autorizzato a riavviare il sistema (dettagli sulle autorizzazioni implicite a polkitpagina). Puoi verificare se la tua sessione è attiva con:

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

1
ciò significa che qualsiasi programma che eseguo può riavviare il mio computer senza il mio permesso?
Osdamv,

1
@osdamv - proprio come qualsiasi programma che esegui i rm -rftuoi file utente ...
don_crissti

3
@osdamv Si noti che è possibile eseguire tutti i programmi non affidabili utilizzando sudo --user=jimmyin cui l'utente jimmynon non ha il diritto di eseguire quel comando polkit ...
Bakuriu

Come posso effettivamente eseguire questa pkaction?
Geremia,

@Geremia - Non capisco la domanda.
don_crissti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.