El acceso de los usuarios a estas acciones está controlado por polkit. En particular, corresponden a las siguientes acciones:
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.restart
org.freedesktop.upower.suspend
org.freedesktop.upower.hibernate
Todas estas acciones están permitidas de forma predeterminada para usuarios locales activos (aunque consolekit
restringe aún más los dos primeros permisos para que solo funcionen cuando hay un solo usuario conectado al sistema).
Si desea deshabilitar estas acciones, cree un archivo que /etc/polkit-1/50-local.d/disable-shutdown.pkla
contenga algo como:
[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no
Esto debería evitar que esas acciones se completen. Puede encontrar más información sobre estos archivos de políticas ejecutando man pklocalauthority
.
Sin embargo, si está tratando de restringir root
, esto solo será un inconveniente menor. Por definición, root
es una cuenta sin restricciones de acuerdo con el sistema de control de acceso discrecional tradicional de UNIX. Si no puede confiar en los usuarios a los que ha dado root
acceso completo , entonces tiene problemas más grandes que simplemente apagar el sistema.
Tenga en cuenta que en versiones posteriores de Ubuntu alguien decidió romper la compatibilidad. Como se respondió en ¿Cómo deshabilitar el apagado / reinicio de lightdm en 14.04? la acción parece haber cambiado a "org.freedesktop. login1 .reboot" (y similares).
Por ejemplo, en 14.04 agregando las siguientes líneas como /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pkla
trabajos:
[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
Además, tenga en cuenta que este método bloquea únicamente los comandos de reinicio / etc emitidos desde la GUI. Para bloquear los comandos de reinicio / etc. de la línea de comandos, ¿se puede usar molly-guard, como se explica en Deshabilitar el comando de apagado para todos los usuarios, incluso la raíz, consecuencias?
shutdown
ypm-suspend
de/sbin/
y/bin/