REISUB y llamadas remotas a Alt+Sysrq
En muchos sitios, podemos ver esta palabra clave, para muchos RESUIB para otros RESIUB y normalmente REISUB. Y sirve para reiniciar el sistema Linux de forma segura después de que el sistema se congele; de la siguiente forma: Alt+Imprimir Pantalla + R,E,I,S,U,B (no hace falta soltar las teclas Alt + Imprimir pantalla). Cada letra representa una acción del kernel:
- R (Devuelve el control al teclado unRaw)
- E (Termina todos los procesos tErm)
- I (Mata los procesos que queden vivos full kIll)
- S (Sincroniza los discos Sync)
- U (Monta todos los sistemas de archivos como sólo lectura Umount)
- B (Reinicia el ordenador Boot)
Bien, si tenemos acceso físico al ordenador, no hay problema, pero y si estamos enchufados en otra máquina ? Todo está en el fichero especial /proc/sysrq-trigger.
Obteniendo información de los procesos
Enviando a /proc/sysrq-trigger (como root) la letra correspondiente a la acción del kernel vale. Empezaremos pidiendo ayuda:
root $ echo “h” > /proc/sysrq-trigger
root $ dmesg | tail
…. # Nos dirá muchas cosas, sólo nos interesa la última línea
SysRq : HELP : loglevel0-8 reBoot tErm Full kIll saK showMem Nice powerOff showPc show-all-timers(Q) unRaw Sync showTasks Unmount shoW-blocked-tasks
Vemos cómo el kernel a través de dmesg se comunicará con nosotros. Cada letra mayúscula nos indicará una acción diferente, empezaremos obteniendo información sobre la memoria:
root $ echo “m” > /proc/sysrq-trigger
root $ dmesg | tail -n 35
O información sobre tareas bloqueadas:
root $ echo “m” > /proc/sysrq-trigger
root $ dmesg
Más acciones
Incluso podemos lanzar el OOM killer con la siguiente línea:
root $ echo “f” > /proc/sysrq-trigger
Terminar todos los procesos (igual que comentábamos arriba del todo):
root $ echo “e” > /proc/sysrq-trigger
Cambia el nivel de información de dmesg (del 0 al 8):
root $ echo 5 > /proc/sysrq-trigger
Para enviar un REISUB es algo más elaborado:
root $ nohup bash -c “for key in s u b; do echo \$key > /proc/sysrq-trigger; sleep 4; done”
Aunque tendremos que asegurarnos de que las tareas estén muertas, ya que, nuestra conexión ssh, o nuestro terminal, o incluso bash, se mueren al mandar un E o un I al kernel (dando igual el nohup). Por otra parte, la R la podemos quitar, ya que vale para devolver el control al teclado, y estamos desde un equipo remoto.
Seguridad
Pero tanto por nosotros mismos (debemos de protegernos de meter la pata), como los posibles usuarios del ordenador, tal vez no nos interese que puedan pulsar en teclado alguna combinación de teclas que comprometa al kernel. Para ello, tenemos /proc/sys/kernel/sysrq o directamente el comando sysctl del cual modificamos la propiedad kernel.sysrq; lo haremos de la siguiente manera:
root $ sysctl kernel.sysrq=0 # Para desactivar Alt+SysRq
root $ sysctl kernel.sysrq=1 # Para activarlo
Se pueden activar algunos comandos sólo, dependiendo del número que se indique.



























Últimos comentarios