Wie wird Gnome ohne Root-Rechte neu gestartet?

8

Ich lese das Buch Linux-Kernel-Entwicklung in Kapitel 5 "Implementierung von Systemaufrufen" auf Seite 77

Beispielsweise prüft fähig (CAP_SYS_NICE), ob der Aufrufer in der Lage ist, nette Werte anderer Prozesse zu ändern. Standardmäßig verfügt der Superuser über alle Funktionen und Nonroot über keine. Hier ist zum Beispiel der Systemaufruf reboot (). Beachten Sie, wie der erste Schritt darin besteht, sicherzustellen, dass der aufrufende Prozess über CAP_SYS_REBOOT verfügt. Wenn diese eine bedingte Anweisung entfernt würde, könnte jeder Prozess das System neu starten.

In meinem Debian Sid kann ich meinen Computer jedoch mit gnome neu starten oder / sbin / reboot ohne sudo oder su ausführen. Wie ist das möglich?

Vielleicht mit systemctl?

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

BEARBEITEN: Meine Benutzergruppen

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

EDIT 2: Systemctl-Berechtigungen

[damian@xvz:~]$ ls -l /bin/systemctl 
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl
osdamv
quelle
Vielleicht ist systemctl . Was ls -l /bin/systemctlsagt dir das?
G-Man sagt "Reinstate Monica"

Antworten:

12

Dies erfolgt über einen Autorisierungsmanager namens polkit:

polkit bietet eine Autorisierungs-API, die von privilegierten Programmen („MECHANISMS“) verwendet werden soll, die nichtprivilegierten Programmen („SUBJECTS“) häufig über einen prozessübergreifenden Kommunikationsmechanismus Dienste anbieten.

Mit systemdund polkitBenutzer mit nicht Remote-Sitzung können strombezogene Befehle ausgeben. Sie können alle polkitregistrierten Aktionen auflisten und Details zu jeder von ihnen pkactionabrufen (ohne Argumente werden alle Aktions-IDs aufgelistet).
In diesem speziellen Fall lautet die Aktions-ID org.freedesktop.login1.reboot, wenn Sie Folgendes ausführen:

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

Die Ausgabe sollte ungefähr so ​​aussehen:

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

Hier active: yesbedeutet dies , dass der Benutzer in der aktiven Sitzung berechtigt ist, das System neu zu starten (Details zu impliziten Berechtigungen auf polkitSeite). Sie können überprüfen, ob Ihre Sitzung aktiv ist mit:

loginctl show-session $ XDG_SESSION_ID --property = Aktiv
Active=yes
don_crissti
quelle
1
Das heißt, jedes Programm, das ich ausführe, kann meinen Computer ohne meine Erlaubnis neu starten?
Osdamv
1
@osdamv - genau wie jedes Programm, das Sie ausführen, könnten rm -rfIhre Benutzerdateien ...
don_crissti
3
@osdamv Beachten Sie, dass Sie alle Programme laufen könnten Sie Arbeit nicht vertrauen , sudo --user=jimmywo der Benutzer jimmyhat nicht das Recht haben , dass polkit Befehl auszuführen ...
Bakuriu
Wie führe ich diese Aktion aus?
Geremia
@Geremia - Ich verstehe die Frage nicht.
don_crissti