GNU/Linux >> Tutoriales Linux >  >> Linux

La mejor manera de eliminar el comando de apagado, pero sigue reiniciando

Solución 1:

Debería usar una distribución de Linux basada en systemd. En este caso, debería poder enmascarar el objetivo de apagado, de modo que systemd se negará a ejecutarlo (y apagarlo). por ejemplo:

systemctl mask poweroff.target

Esto hace que sea completamente imposible apagar el sistema, salvo reiniciando. Mira que no pasa nada:

En este caso, el interruptor de alimentación virtual de esta máquina virtual ya ni siquiera funciona para apagar el sistema. Pero todavía se reinicia perfectamente bien.

Para deshacer el cambio, por supuesto, simplemente desenmascare el objetivo. Luego puede apagar el sistema.

systemctl unmask poweroff.target

Solución 2:

Hay algunas maneras de lograr esto. Uno estaría trabajando con una cuenta regular sin privilegios que requerirá ejecutar el comando con sudo e ingresar una contraseña. Luego puede agregar lo siguiente a /etc/sudoers (ejecutando visudo):

## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *

Además, para deshabilitar el almacenamiento en caché de las credenciales de Sudo, agregue lo siguiente:

Defaults timestamp_timeout=0

Esto evitará el almacenamiento en caché de las credenciales en caso de que haya invocado un comando con sudo antes.

Ejemplo:

[[email protected] ~]# su - jdoe
[[email protected] ~]$ sudo shutdown -c
[sudo] password for jdoe:
[[email protected] ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[[email protected] ~]$ sudo shutdown -H
[sudo] password for jdoe:
^[[A[[email protected] ~]$ sudo shutdown -c
[sudo] password for jdoe:

Observe cómo en el ejemplo anterior no se me pidió que ingresara mi contraseña al ejecutar sudo shutdown -r +10 , pero por lo demás lo era . Si desea eliminar la necesidad de escribir sudo antes del comando (sudo shutdown -r +10 ), agregue lo siguiente a su .bash_profile o .bashrc:

alias shutdown="sudo shutdown"

Ejemplo:

[[email protected] ~]$ source ~/.bash_profile
[[email protected] ~]$ shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 19:03:14 IDT, use 'shutdown -c' to cancel.
[[email protected] ~]$ shutdown -c
[sudo] password for jdoe:

Tenga en cuenta que es una buena práctica trabajar con una cuenta sin privilegios y escalar con sudo cuando sea necesario.

Solución 3:

Existe una herramienta llamada molly-guard que requiere que indique el nombre de host de la máquina que desea apagar o reiniciar.

En caso de que no esté usando Debian, debería ser trivial compilar esto desde el código fuente, dado que el programa es bastante primitivo.

Solución 4:

Para evitar contratiempos, las distribuciones basadas en RHEL ya configuran alias para rm , cp y mv que puede ser algo más destructivo cuando lo realiza el usuario root.

Puede agregar el suyo propio, por ejemplo:

#/root/.bashrc
alias poweroff='echo  "poweroff: Command disabled - THINK before you type.
  Use /usr/sbin/poweroff if you really want to drive to the DC to restore power."'

Solución 5:

Cambie el nombre del ejecutable de apagado a algo imposible de invocar accidentalmente.

Entonces alias shutdown ser (whatever) -r


Linux
  1. Cómo usar el comando de apagado y reinicio de Linux con ejemplos

  2. busque y elimine archivos con espacio usando el comando de búsqueda en Linux

  3. Eliminar el repositorio de Git, pero conservar todos los archivos

  4. sudo -i pero mantener el directorio de trabajo actual

  5. reiniciar o apagar -r ahora:¿qué comando de reinicio es más seguro?

Comando de apagado de Linux

Comando Sudo en Linux

Cómo reiniciar (reiniciar) Linux desde la línea de comandos

Cómo apagar o reiniciar Debian 10

Cómo apagar o reiniciar Linux usando la línea de comandos

Cómo apagar o reiniciar Debian 11