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
systemctl
. Quels -l /bin/systemctl
te diceRespuestas:
Esto se realiza a través de un administrador de autorización llamado
polkit
:Con
systemd
y lospolkit
usuarios con sesión no remota pueden emitir comandos relacionados con la energía. Puede enumerar todaspolkit
las acciones registradas y obtener detalles sobre cualquiera de ellaspkaction
(invocado sin argumentos, enumerará todos los identificadores de acción).En este caso particular, el id de acción es
org.freedesktop.login1.reboot
así si ejecuta:la salida debería ser algo como:
Aquí,
active: yes
significa que el usuario en la sesión activa está autorizado para reiniciar el sistema (detalles sobre autorizaciones implícitas en lapolkit
página). Puede verificar si su sesión está activa con:fuente
rm -rf
sus archivos de usuario podrían ...sudo --user=jimmy
el que el usuariojimmy
no no tiene el derecho de ejecutar ese comando polkit ...