¿Cómo deshabilitar el apagado / reinicio / suspensión / hibernación?


12

Tengo una PC de escritorio Ubuntu 10.04 LTS con GNOME.

¿Cómo puedo desactivar por completo las funciones de reinicio / apagado / suspensión / hibernación en GNOME o incluso con root? Para que la raíz emita el comando "reiniciar" o "pm-suspender" no hace nada, y la máquina continúa. ¿Cómo puedo desactivar por completo estas "características" básicas?


¿No se? Como un quiosco? simplemente eliminas shutdowny pm-suspendde /sbin/y/bin/
Amith KK

Esos archivos podrían estar en caché, ¿no? Eliminarlos no permitirá permanentemente la función de reinicio / apagado / suspensión / hibernación incluso en GNOME.
LanceBaynes

Sí, probablemente lo haría @Lance Baynes
Amith KK

Respuestas:


15

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 consolekitrestringe 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.pklacontenga 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, rootes 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 rootacceso 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.pklatrabajos:

[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?


3
¡Dejé de trabajar aquí con Ubuntu 13.10!
GabrieleV

@GabrieleV ¿Quizás la versión con login1 funciona en 13.10? Lo probé en 14.04, y espero que nadie en Canonical rompa la compatibilidad con versiones anteriores en polkit en cada lanzamiento por diversión.
Reducción de la actividad

Como otro punto de datos, acabo de usar esto con éxito en el nuevo Ubuntu 18.04.1 LTS, para no permitir el apagado y reiniciar (pero permitir hibernar y suspender). Tenga en cuenta que necesitaba usar estos nombres 'login1'; que también desactivé 'detener' y 'detener múltiples sesiones'; que hice eso porque encontré esas acciones en /usr/share/polkit-1/actions/org.freedesktop.login1.policy; y finalmente, que en la interfaz de usuario gdm3 de Ubuntu 18.04, los botones en el diálogo de confirmación no están ocultos, pero simplemente no tienen ningún efecto.
MarnixKlooster ReinstateMonica

6

Considere instalar molly-guard .

sudo apt-get install molly-guard

Este paquete evitará el apagado / reinicio / suspensión / suspensión involuntaria al solicitarle interactivamente que ingrese el nombre de host del sistema.

Sin embargo, es trivial configurar molly-guard para desactivar por completo el apagado / reinicio / suspensión / hibernación. Simplemente cree un archivo ejecutable en /etc/molly-guard/run.d/99-prevent-all que contenga esto:

#!/bin/sh
exit 1

Tenga en cuenta que solo protege contra los comandos emitidos desde la línea de comandos, el apagado / reinicio / suspensión / hibernación emitido desde la GUI lo omite. Para bloquear también la GUI usando el reinicio, se pueden usar reglas de polkit .


Esta es una buena solución para una computadora multiusuario donde el administrador necesita trabajar y evitar que todos los demás usuarios se apaguen por un tiempo.
Alexis Wilke

1
Funciona desde la consola, pero incluso con Molly-Guard en su lugar (y configurado para 'preguntar siempre') el apagado continúa sin preguntar al iniciarlo desde GNOME (3.4).
Jan

Sí, esto ya no funciona ... Desde las 13.10, tal vez 13.04.
Alexis Wilke

3

¡ADVERTENCIA! Los comandos enumerados aquí son peligrosos de usar. ¡No los use, excepto bajo su propio riesgo!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown

44
¿Puedes corroborar tu respuesta? Seguramente no creo que quisiera eliminar las posibilidades de reiniciar y apagar.
viyyer

¿Cómo podría uno volver a habilitar la hibernación de esta manera?
Gabriel Fair

use "chmod + x" no "chmod -x"
LanceBaynes

55
¡Advertencia! No haga esto. Estos comandos están enlazados /bin/systemctly eliminarán el bit ejecutable. Este es un ejecutable crítico que también controla service SERVICE_NAME [stop|start|restart]. Es probable que su sistema ya no arranque (si puede hacer que se apague).
Daniel F

Ejecuté estos comandos en un VPS ubuntu. Apague el VPS desde el host, el apagado falló. Mató al demonio SSH. La fuerza se detuvo y comenzó, puede SSH en muy bien. Después de reiniciar /bin/systemctlse establece en solo lectura-escritura-rw-r--r-- 1 root root
kryo

0

Sobre la base de la respuesta de OP, puedes hacer

for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
    mv $file $file.bak && touch $file
done

Esto cambia el nombre de los enlaces simbólicos y los reemplaza con archivos en blanco. Esto evitará el cierre de la línea de comandos, no sé si los comandos de la GUI lo llaman o hacen lo suyo, por lo que es posible que también deba hacer la respuesta aceptada.

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.