Archivos y servicios

/usr/local/bin/pss

Archivo ejecutable.

/opt/pss/config/pss.properties

Configuración global, registros, rutas de carpetas, etc. Después de realizar cambios, reiniciar el servicio.

/opt/pss/config/pss.json

Archivo de configuración principal. Se crea y actualiza automáticamente. Al iniciarse, el servicio intenta cargar precisamente este archivo. La estructura del archivo: véase El archivo de configuración pss.json. El archivo guarda contraseñas, por lo que desde la versión 2.0.2.420 solo lo puede leer el usuario del servicio (permisos 0600), igual que pss_last.json, pss_back.json y el directorio bad/. Bajo root, los archivos conservan el propietario del directorio de configuración.

/opt/pss/config/pss_last.json

Una copia del último pss.json que se cargó limpiamente. Se reescribe en cada arranque en el que se cargó precisamente pss.json; un arranque con un archivo de reserva no la actualiza, porque dejaría de ser la última correcta. Sirve como primera alternativa si el archivo principal no se ha podido analizar. En un nodo que no se ha reiniciado nunca desde la instalación, y allí donde el directorio de ajustes no admite escritura, este archivo no existe.

/opt/pss/config/pss_back.json

Copia de seguridad de la configuración anterior en funcionamiento. Se crea únicamente al restaurar los ajustes desde una copia guardada previamente en la interfaz web (Mantenimiento) y se utiliza como alternativa después de pss_last.json. El servicio no mantiene una copia de seguridad periódica, por lo que en un nodo donde nunca se han restaurado los ajustes este archivo no existe.

/opt/pss/config/pss_default.json

Archivo de configuración predeterminado. Se suministra junto con el paquete y se aplica como última alternativa si no se pueden cargar ni pss.json, ni pss_last.json, ni pss_back.json. A partir de él se crea también el pss.json de trabajo en el primer arranque: el archivo define el puerto de la interfaz web 8808 y la cuenta admin / admin.

/opt/pss/config/bad/

Archivo histórico de los pss.json dañados. Si el archivo de configuración principal no se puede analizar en el arranque, se traslada aquí con un nombre de la forma pss_YYYYMMDD_HHMMSS.json. El directorio se crea automáticamente y no crece sin límite: en él quedan los veinte archivos con los nombres más altos. Para más detalles, véase la sección Comportamiento en el arranque y ante errores de configuración.

/opt/pss/data

Carpeta de almacenamiento de datos. Se crea y actualiza automáticamente. Puede modificarse en el archivo de configuración global.

/usr/lib/systemd/system/pss.service

Archivo de unidad systemd del servicio.

/var/log/pss

Carpeta de escritura de registros. Puede modificarse en el archivo de configuración global.

El nombre del servicio es pss. Se ejecuta con el usuario pss.

Del trabajo con la llave se encarga el paquete del sistema de protección aksusbd, que incluye los servicios hasplmd y aksusbd. El paquete pstreamer declara una dependencia de él, en versión 10.33 o posterior: no contiene el servicio de protección, pero está en el mismo repositorio, de modo que el gestor de paquetes instala ambos juntos. Un servicio de protección más antiguo no puede cargar las bibliotecas del proveedor que pstreamer coloca en /var/hasplm.

Comportamiento en el arranque y ante errores de configuración

En el arranque, el servicio intenta cargar sucesivamente los archivos de configuración de la carpeta /opt/pss/config:

  1. pss.json — archivo de configuración principal.

  2. pss_last.json — una copia de la última configuración que se cargó limpiamente.

  3. pss_back.json — copia de seguridad de la configuración de trabajo anterior.

  4. pss_default.json — configuración predeterminada suministrada con el paquete.

Se utiliza el primer archivo que se carga correctamente. Si los cuatro archivos faltan o están dañados, el servicio arranca con ajustes vacíos, sin ninguna cuenta. En ese caso el administrador se crea a mano: detener el servicio, añadir en pss.json una entrada en web-server.login con las claves id, login y password, y volver a iniciar el servicio. Si el archivo se edita con el servicio en marcha, este sobrescribe la edición desde la memoria (La API o el archivo de configuración).

De la existencia de pss_last.json se siguen dos cosas. Primera: borrar pss.json ya no arranca el nodo desde cero, porque el servicio se levantará con pss_last.json y lo volverá a escribir en pss.json. No habrá alerta, pero tampoco pasará inadvertido: en el registro queda una entrada y en la interfaz web aparece un mensaje de arranque. Para restablecer realmente el nodo se borra pss.json junto con pss_last.json y pss_back.json; entonces el servicio se levanta con pss_default.json. Lo demás del directorio de ajustes no debe tocarse: sin pss.properties el servicio no arranca en absoluto. Segunda: pss_last.json solo está tan al día como el último arranque limpio. Los ajustes cambiados por la interfaz web que nunca han pasado por un reinicio existen solo en pss.json, y una vuelta a la última configuración operativa no los conservará.

Archivo de configuración inaceptable. Si pss.json no se ha podido leer, el servicio lo traslada al archivo histórico /opt/pss/config/bad/ con el nombre pss_YYYYMMDD_HHMMSS.json; la fecha y la hora del nombre son el momento del archivado en UTC, la misma referencia que usa el registro por defecto. Después el servicio continúa la carga en el orden habitual y vuelve a guardar la configuración en funcionamiento en pss.json a partir del archivo que sí se cargó. Los detalles (nombre de la clave, descripción del error, nombre del archivo en el archivo histórico) se escriben en el registro de trabajo, y la alerta sobre la carga fallida también nombra directamente la ruta del archivo histórico.

La carga se interrumpe por: un error de sintaxis JSON, un valor null, una forma de valor incorrecta (un objeto donde se espera un valor único, y al revés), un número u otra palabra en lugar de true y false, una cadena demasiado larga, un identificador de entrada de matriz ausente o repetido, la repetición de un valor declarado único. Una clave desconocida no descarta el archivo: se ignora, en el registro se escribe una advertencia con el nombre de la sección y de la clave, y en el siguiente guardado la clave desaparece del archivo. Qué acepta el servicio al leer el archivo y qué rechaza se detalla en Qué hace el servicio al leer el archivo.

Solo el archivo principal pss.json se archiva. Los archivos pss_last.json, pss_back.json y pss_default.json no se archivan si resultan dañados: las entradas del registro bastan para el diagnóstico, y los propios archivos permanecen en su lugar y pueden corregirse manualmente.

Si en /opt/pss/config/bad/ ya hay un archivo con la misma marca de tiempo (por ejemplo, con dos arranques fallidos en el mismo segundo), el nuevo recibe un sufijo numérico: pss_YYYYMMDD_HHMMSS_2.json y siguientes; la copia guardada anteriormente no se pierde. El directorio no puede crecer sin control: cada copia nueva deja en él los veinte archivos con los nombres más altos y el resto se borra. Para los archivos históricos que el servicio nombra por la hora, esos son precisamente los veinte más recientes; los archivos ajenos dejados en el directorio también cuentan y ocupan esas plazas, por lo que conviene no guardar nada superfluo en bad/. Cada edición fallida deja una copia; un reinicio por sí solo no crea copias nuevas, porque el archivo rechazado ya se ha trasladado y en su lugar se ha escrito uno operativo.

Valores numéricos fuera del rango permitido. Si en el archivo de configuración aparece un valor numérico menor que el mínimo permitido o mayor que el máximo permitido para ese parámetro, el servicio no descarta el archivo por completo. En su lugar, se anota en el registro una advertencia que indica el nombre del parámetro, el valor leído y el límite aplicado, y el propio valor se ajusta al límite del rango permitido más cercano (el mínimo o el máximo). Una vez finalizada la carga, el servicio vuelve a guardar automáticamente pss.json con los valores ya corregidos, de modo que en el siguiente arranque estas advertencias ya no aparecen.

Además del registro, la corrección la anuncia la notificación de arranque del servicio en la interfaz web: indica el número de valores ajustados al límite y remite al registro para los detalles. Léala tras una actualización que haya estrechado algún rango: la corrección es silenciosa y, en un parámetro de retención, significa que los datos que quedan fuera del nuevo límite los borrará la siguiente pasada de limpieza.

Este comportamiento se aplica únicamente durante la carga inicial del archivo de configuración. Al modificar la configuración a través de la interfaz web o de la API HTTP (Gestión mediante la API HTTP), los valores fuera del rango permitido se siguen rechazando con un error, sin corrección automática.

Desde la versión 2.0.2.409, un cambio rechazado devuelve el objeto modificado a su estado anterior; en un nodo de una versión anterior, lo que el nodo haya leído antes del valor no válido queda aplicado (Cómo llegan los errores).

Editar el archivo a mano, validarlo con el esquema y trasladar los ajustes a otro nodo o a otra versión: El archivo de configuración pss.json y Editar, comprobar y trasladar los ajustes.