¿Es el sistema operativo o Samba el que restringe el acceso a systemd en una carpeta compartida?

¿Es el sistema operativo o Samba el que restringe el acceso a systemd en una carpeta compartida?

Tengo dos servidores Rocky Linux 9 a los que podemos llamarsvr1ysvr2. svr1tiene instalado el servicio Samba y comparte la carpeta /home/rocky/shared_folder con esta configuración:

[global]
#        workgroup = SAMBA
        server string = Samba Server %v
        netbios name = rocky-9
        security = user
        map to guest = bad user
        dns proxy = no
        inherit permissions = yes
        inherit acls = yes
[Private]
        path = /home/rocky/shared_folder
        valid users = @smb_group
        guest ok = no
        writable = yes
        browsable = yes
        create mask = 0775
        force create mode = 0775
        directory mask = 2775
        force directory mode = 2775

el smb_group tiene ambosrocosoygerente-clienteusuarios. El segundo es el usuario utilizado ensvr2para conectarse y escribir archivos en el recurso compartido remoto.

Ahora, ensvr1Necesito leer archivos escritos por elsvr2desde un servidor nodejs. Este servidor se ejecuta comorocosousuario y es administrado porsistemad. Cada vez que intento leer el archivo me deniegan el permiso de esta manera

 Error: EACCES: permission denied, open '/home/rocky/shared_folder/651e8a58a60e0392608a1c88/context.json'
     at Object.openSync (node:fs:581:18)
     at Object.readFileSync (node:fs:457:35)
    at Object.uploadFile (/home/rocky/coinnect-grpc-ai/providers/assistant.js:83:15)
     at Object.uploadFile (/home/rocky/coinnect-grpc-ai/controllers/manager.js:171:40)
     at Object.uploadFile (/home/rocky/coinnect-grpc-ai/server/server.js:243:46)
     at handleUnary (/home/rocky/coinnect-grpc-ai/node_modules/@grpc/grpc-js/build/src/server.js:852:17)
     at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
   errno: -13,
  code: 'EACCES',
   syscall: 'open',
   path: '/home/rocky/shared_folder/651e8a58a60e0392608a1c88/context.json'
 }

Pero si creo un script test.js que hace lo mismo y lo ejecuto desde la consola, funciona. Entonces tengo la prueba de que solo se deniega el proceso systemd, incluso si el usuario que lo ejecuta es el mismo (rocoso).

Los permisos de la carpeta compartida son:

*drwxrws---. 6 root  smb_group  169 Jan 25 12:49 shared_folder*

mientras que el archivo específico tiene estos:

*-rwxrw----. 1 manager-client smb_group 27007 Jan 25 12:38 context.json*

¿Sabes alguna razón por la que esto podría suceder? No entiendo si depende de Samba o del sistema operativo (selinux o cosas así).

gracias

Respuesta1

Puede agregar el usuario Rocky al smb_group en svr1 para otorgar acceso:

sudo usermod -aG smb_group rocky

Luego reinicia samba

Es posible que deba ajustar los permisos de los archivos en la carpeta compartida para permitir que el usuario de Rocky lea los archivos creados por svr2:

sudo chmod -R 0775 /home/rocky/shared_folder
sudo chown -R rocky:smb_group /home/rocky/shared_folder

Asegúrese de que el administrador de procesos PM2 también se ejecute bajo el usuario Rocky para mantener permisos de acceso consistentes.

información relacionada