
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.