28 votos

La mejor forma de eliminar el comando de apagado, pero mantener el reinicio

Tengo un dispositivo de tipo raspi en un centro de datos, y recientemente accidentalmente punteé y pegué un comando de apagado en el terminal equivocado de mi pantalla. ¿Hay alguna manera de mantener shutdown -r pero eliminar #poweroff #shutdown -P -H options?

Quiero mantener shutdown -r comando. Me gusta ponerle un temporizador si logro congelar el sistema, o me encerro con las reglas de la tabla ip. ejemplo shutdown -r +10

39voto

Michael Hampton Puntos 88271

Usted debe utilizar un paquete systemd-distribución de Linux basada en. En este caso, usted debería ser capaz de máscara de la despedida de destino, de modo que systemd se niegan a ejecutar (y apagado). por ejemplo:

systemctl mask poweroff.target

Esto hace que sea totalmente imposible apagar el sistema, aparte de reiniciar. Ver que no pasa nada:

Debian9 animated demo

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

Para deshacer el cambio, por supuesto, acaba de desenmascarar el destino. A continuación, puede apagar el sistema.

systemctl unmask poweroff.target

16voto

user324375 Puntos 168

Hay un par de maneras de lograr esto . Uno estaría trabajando con un regular no cuenta con privilegios que se requieren ejecutar el comando con sudo y la introducción de una contraseña. A continuación, puede añadir lo siguiente a /etc/sudoers (mediante la ejecución de visudo):

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

También, para deshabilitar sudo credenciales de almacenamiento en caché , agregue el siguiente :

Defaults timestamp_timeout=0

Esto evitará que las credenciales de almacenamiento en caché en caso de invocar un comando con sudo delante.

Ejemplo:

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

Observe cómo en el ejemplo anterior no estaba obligado a introducir mi contraseña cuando se ejecuta sudo shutdown -r +10 , pero para el resto me fue . Si desea eliminar la necesidad de escribir sudo antes del comando (sudo shutdown -r +10), añada lo siguiente a su .bash_profile o .bashrc:

alias shutdown="sudo shutdown"

Ejemplo:

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

Tenga en cuenta que es la mejor práctica para trabajar con una cuenta con privilegios y escalar con sudo cuando sea necesario.

9voto

HBruijn Puntos 16577

Para evitar contratiempos, las distribuciones basadas en RHEL ya configuran alias para rm , cp y mv que pueden ser algo más destructivos cuando son ejecutados por el usuario root.

Puede agregar el suyo, 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."'
 

9voto

Simon Richter Puntos 637

Hay 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é utilizando Debian, debería ser trivial compilar esto desde la fuente, dado que el programa es bastante primitivo.

3voto

Wes Groleau Puntos 39

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

Entonces alias shutdown a ser (whatever) -r

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: