GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo se reinicia Gnome sin privilegios de raíz?

Estoy leyendo el libro Desarrollo del kernel de Linux, en el capítulo 5 "Implementación de llamadas al sistema", la página 77 dice

Por ejemplo, capaz(CAP_SYS_NICE) comprueba si la persona que llama tiene la capacidad
de modificar los valores agradables de otros procesos. De forma predeterminada, el superusuario
posee todas las capacidades y el usuario no root no posee ninguna. Por ejemplo, aquí está la llamada al sistema reboot(). Tenga en cuenta que su primer paso es
asegurarse de que el proceso de llamada tenga CAP_SYS_REBOOT . Si esa declaración condicional
fuera eliminada, cualquier proceso podría reiniciar el sistema
.

Sin embargo, en mi Debian Sid puedo reiniciar mi máquina usando gnome o ejecutando /sbin/reboot sin sudo o su.
¿Cómo es esto posible?

¿Quizás con systemctl?

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

EDITAR:Mis grupos de usuarios

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

EDIT 2:permisos systemctl

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

Respuesta aceptada:

Esto se hace a través de un administrador de autorizaciones llamado polkit :

polkit proporciona una API de autorización destinada a ser utilizada por programas
privilegiados ("MECANISMOS") que ofrece servicio a programas no privilegiados
("SUJETOS") a menudo a través de alguna forma de mecanismo de comunicación entre procesos
.

Con systemd y polkit los usuarios con sesión no remota pueden emitir comandos relacionados con la energía. Puede enumerar todos los polkit acciones registradas y obtén detalles sobre cualquiera de ellas con pkaction (si se invoca sin argumentos, enumerará todos los ID de acción).
En este caso particular, el ID de acción es org.freedesktop.login1.reboot así que si ejecutas:

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

la salida debería ser algo como:

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

Aquí, active: yes significa que el usuario en la sesión activa está autorizado para
reiniciar el sistema (detalles sobre autorizaciones implícitas en polkit página). Puedes comprobar si tu sesión está activa con:

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

Linux
  1. Cómo ver la fecha y hora de reinicio del sistema Linux

  2. Cómo detectar si el sistema operativo Linux usa el entorno KDE o Gnome

  3. Cómo arrancar un sistema Linux sin servidor gráfico

  4. Instalación de software en Linux sin privilegios de root

  5. ¿Cuánto tiempo ha estado funcionando mi sistema Linux?

Cómo extender la partición raíz XFS sin LVM en Linux

Cómo comprobar la versión de Linux

Comando de reinicio (reinicio) de Linux

Cómo verificar el historial de reinicio del sistema y el tiempo de inicio en Linux

Cómo cifrar el sistema de archivos raíz en Linux

Cómo enumerar servicios en Linux