# Habilitacion segura de reinicio desde LIMS

La aplicacion registra la solicitud, valida el permiso `tb_usuario.is_rebootserver` en cada llamada y solo invoca un wrapper fijo. No ejecuta comandos ingresados desde el navegador.

## 1. Base de datos y permiso de usuario

Ejecutar `_Querys/2026-08-04_reinicio_servidor.sql` una sola vez. Despues, activar el permiso solo para las cuentas aprobadas:

```sql
UPDATE tb_usuario SET is_rebootserver = b'1' WHERE usu_usuario = 'usuario_autorizado';
```

La cuenta debe cerrar e iniciar sesion para que aparezca la opcion del navbar.

## 2. Wrapper de sistema

Copiar el archivo `lims-reboot-server.sh` fuera del directorio web y dejarlo administrado por root:

```bash
install -o root -g root -m 750 /var/www/html/lims_lpm/_operacion_lims_20260804/lims-reboot-server.sh /usr/local/sbin/lims-reboot-server
```

Crear `/etc/lims-reboot.cnf` con las credenciales locales de MySQL que ya usa LIMS. Debe contener una seccion `[client]`, ser propiedad de root y no quedar accesible al usuario web:

```bash
install -o root -g root -m 600 /dev/null /etc/lims-reboot.cnf
nano /etc/lims-reboot.cnf
```

El archivo debe indicar como minimo `user`, `password`, `host=localhost` y `database=lims_labperuprueba`.

## 3. Permiso sudo minimo

Crear `/etc/sudoers.d/lims-reboot` mediante `visudo -f /etc/sudoers.d/lims-reboot`:

```sudoers
www-data ALL=(root) NOPASSWD: /usr/local/sbin/lims-reboot-server [0-9]*
```

Verificar permisos sin reiniciar:

```bash
sudo -u www-data sudo -n -l /usr/local/sbin/lims-reboot-server
```

## 4. Habilitar en Apache

Crear `/etc/apache2/conf-available/lims-reboot.conf` con este unico valor:

```apache
SetEnv LIMSPM_REBOOT_ENABLED 1
```

Luego habilitar y recargar Apache:

```bash
a2enconf lims-reboot
systemctl reload apache2
```

Mientras esa variable, el wrapper o el permiso sudo no existan, LIMS registra el intento con estado `ERROR` y no reinicia el servidor.

## 5. Marcar el servidor como activo al finalizar el reinicio

Ejecutar tambien el SQL `_Querys/2026-08-04_reinicio_servidor_estado_activo.sql`. Luego instalar el script y la unidad de systemd:

```bash
install -o root -g root -m 750 /var/www/html/lims_lpm/_operacion_lims_20260804/lims-reboot-complete.sh /usr/local/sbin/lims-reboot-complete
install -o root -g root -m 644 /var/www/html/lims_lpm/_operacion_lims_20260804/lims-reboot-complete.service /etc/systemd/system/lims-reboot-complete.service
systemctl daemon-reload
systemctl enable lims-reboot-complete.service
systemctl start lims-reboot-complete.service
```

La ejecucion manual del ultimo comando es segura: si no existe un registro `EJECUTANDO`, no cambia el historial. En el siguiente reinicio solicitado por LIMS, el servicio espera a MySQL y Apache y cambia el ultimo registro a `ACTIVO` con la fecha de finalizacion.
