Error EPERM, al crear Dataset en PBS

Buenas a ver si podeis darme alguna pista sobre esto. Estoy siguiendo los pasos del articulo de PBS sobre LXC en Truenas, aparentmente todo lo hice igual, salvo que el lxc de PBS lo hice desde Proxmenux, pero no debería influir. El caso es que justo en la parte final donde creo el Dataset en el PBS me aparece un mensaje de error de EPERM.

No entiendo bien porque los permisos se dan al ppio en truenas al usuario backup y el mapuser, que si el ACL, etc estoy releyendo el artículo y no me he dejado nada.

Sabríais decirme por donde revisar este fallo de EPERM?

Un saludo y gracias de antemano

Buenas!

Por lo que cuentas, ese EPERM tiene pinta de venir más por permisos/mapeo de usuarios entre TrueNAS, Proxmox y el LXC que por ProxMenux en sí. ProxMenux te habrá creado el contenedor, pero el punto delicado aquí es que PBS intenta crear el datastore y su estructura interna en una ruta que probablemente viene de un dataset/share montado desde TrueNAS.

Algunas ideas para acotar:

La documentación de PBS dice que un datastore es una ruta de un sistema de ficheros tipo Unix (ext4, xfs o zfs) donde se guardan los backups:

Y la instalación recomendada de PBS es con ISO o sobre Debian. Incluso instalar PBS directamente encima del hipervisor Proxmox lo marcan como “no recomendado”; meterlo en LXC funciona en muchos homelabs, pero añade otra capa de permisos:

Si el LXC es unprivileged, Proxmox remapea los UID/GID internos del contenedor. Es decir, el root o el usuario backup dentro del contenedor no son necesariamente los mismos usuarios vistos desde el host o desde TrueNAS. En los bind mounts, la propia documentación de Proxmox avisa de que puedes tener problemas de permisos por ese mapeo y que los ACL pueden complicarse:

Yo revisaría esto por orden:

  1. Dentro del LXC de PBS:
id backup
ls -ldn /ruta/del/datastore
sudo -u backup mkdir /ruta/del/datastore/test-pbs
sudo -u backup touch /ruta/del/datastore/test-pbs/test.txt
rm -r /ruta/del/datastore/test-pbs

Si eso falla, el problema está antes de PBS: permisos efectivos del usuario backup sobre esa ruta.

  1. En el host Proxmox, mirar la config del contenedor:
cat /etc/pve/lxc/ID_DEL_CONTENEDOR.conf

Interesan especialmente estas líneas: unprivileged, mp0/mp1, si es bind mount, si monta algo que viene de NFS/CIFS y cómo está montado.

  1. En TrueNAS, revisar si el dataset/share tiene ACL, maproot, mapall, root squash o permisos que estén convirtiendo el usuario en nobody/nogroup. En estos montajes es muy típico que puedas “ver” la carpeta, pero que al crear el chunk store PBS falle al hacer mkdir, chmod, chown o crear la estructura .chunks.

  2. Sacar el log exacto del intento fallido. En PBS suele ayudar mucho copiar el task log completo de la creación del datastore y también:

journalctl -u proxmox-backup-proxy -u proxmox-backup -n 100 --no-pager

Como solución práctica, si es para algo importante, yo intentaría que PBS tenga el datastore en un disco/ruta local controlada por PBS, idealmente en VM o máquina dedicada, y luego ya replicar/sincronizar hacia TrueNAS si hace falta. Si quieres mantenerlo en LXC, entonces tocaría cuadrar bien el UID/GID del usuario backup del contenedor con el propietario real de la carpeta montada, o probar con un contenedor privileged solo si aceptas el compromiso de seguridad.

Pásanos si puedes el error completo, la ruta donde intentas crear el datastore, la config del LXC sin datos sensibles y la salida de id backup + ls -ldn sobre esa ruta. Con eso se puede decir mucho más fino por dónde está rompiendo.

Muchas gracias por la respuesta tan detallada, efectivamente el fallo fue pensar que los permisos que asignaba eran los mismos. Ya está todo resuelto. Mira que lo estáis diciendo siempre, que miremos la documentación, jajaja, cuando colgasteis la guía me pudo el ansia y no hice los deberes como hay que hacerlos. Muchas gracias de nuevo.