GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Wie startet Gnome ohne Root-Rechte neu?

Ich lese das Buch Linux Kernel Development, in Kapitel 5 „System Call Implementation“ steht auf Seite 77

Zum Beispiel prüft Capable(CAP_SYS_NICE), ob der Aufrufer die
Fähigkeit hat, Nice-Werte anderer Prozesse zu ändern. Standardmäßig besitzt der
Superuser alle Fähigkeiten und nonroot besitzt 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 meiner Debian-Sid kann ich meinen Rechner jedoch neu starten, indem ich gnome verwende oder /sbin/reboot ohne sudo oder su ausführe.
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

EDIT:Meine Benutzergruppen

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

BEARBEITEN 2:systemctl-Berechtigungen

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

Akzeptierte Antwort:

Dies geschieht über einen Autorisierungsmanager namens polkit :

polkit stellt eine Autorisierungs-API bereit, die von privilegierten
Programmen („MECHANISMEN“) verwendet werden soll, die Dienste für nichtprivilegierte Programme
(„SUBJEKTE“) anbieten, häufig über eine Form von Mechanismus zur Kommunikation zwischen Prozessen
.

Mit systemd und polkit Benutzer mit Nicht-Remote-Sitzung können energiebezogene Befehle erteilen. Sie können alle polkit auflisten registrierte Aktionen und erhalte mit pkaction Details zu ihnen (ohne Argumente aufgerufen, listet es alle Aktions-IDs auf).
In diesem speziellen Fall ist die Aktions-ID org.freedesktop.login1.reboot also, wenn Sie ausführen:

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

die Ausgabe sollte in etwa 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: yes bedeutet, dass der Benutzer in der aktiven Sitzung autorisiert ist,
das System neu zu starten (Details zu impliziten Autorisierungen auf polkit Seite). Sie können überprüfen, ob Ihre Sitzung aktiv ist mit:

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

Linux
  1. So richten Sie Sudo-Berechtigungen für Benutzer in Linux ein

  2. So erkennen Sie, ob das Linux-Betriebssystem die KDE- oder Gnome-Umgebung verwendet

  3. Installieren von Software unter Linux ohne Root-Rechte

  4. Wie verwendet Linux eine Echtzeituhr?

  5. Wie plane ich einen Neustart unter Linux?

So erweitern Sie die XFS-Root-Partition ohne LVM in Linux

So überprüfen Sie die Linux-Version

Linux-Neustart (Neustart)-Befehl

So überprüfen Sie den Systemneustartverlauf und die Startzeit in Linux

So verschlüsseln Sie das Root-Dateisystem unter Linux

So listen Sie Dienste unter Linux auf