¿Cómo se reinicia gnome sin privilegios de root?


8

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

Por ejemplo, capaz (CAP_SYS_NICE) verifica si la persona que llama tiene la capacidad de modificar valores agradables de otros procesos. Por defecto, el superusuario posee todas las capacidades y 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?

Tal vez con systemctl?

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

EDITAR: Mis grupos de usuarios

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

EDIT 2: permisos systemctl

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

Tal vez lo es systemctl . Que ls -l /bin/systemctlte dice
G-Man dice 'reinstalar a Monica' el

Respuestas:


12

Esto se realiza a través de un administrador de autorización 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 systemdy los polkitusuarios con sesión no remota pueden emitir comandos relacionados con la energía. Puede enumerar todas polkitlas acciones registradas y obtener detalles sobre cualquiera de ellas pkaction(invocado sin argumentos, enumerará todos los identificadores de acción).
En este caso particular, el id de acción es org.freedesktop.login1.rebootasí si ejecuta:

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: yessignifica que el usuario en la sesión activa está autorizado para reiniciar el sistema (detalles sobre autorizaciones implícitas en la polkitpágina). Puede verificar si su sesión está activa con:

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

1
¿Eso significa que cualquier programa que ejecute puede reiniciar mi máquina sin mi permiso?
osdamv

1
@osdamv: al igual que cualquier programa que ejecute, rm -rfsus archivos de usuario podrían ...
don_crissti

3
@osdamv Tenga en cuenta que usted podría funcionar con todos los programas que no sean de confianza mediante sudo --user=jimmyel que el usuario jimmyno no tiene el derecho de ejecutar ese comando polkit ...
Bakuriu

¿Cómo ejecuto realmente esta pkaction?
Geremia

@Geremia: no entiendo la pregunta.
don_crissti
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.