É o sistema operacional ou o Samba que está restringindo o acesso ao systemd em uma pasta compartilhada?

É o sistema operacional ou o Samba que está restringindo o acesso ao systemd em uma pasta compartilhada?

Tenho dois servidores Rocky Linux 9 que podemos chamarsvr1esvr2. svr1tenha o serviço Samba instalado e compartilhe a pasta /home/rocky/shared_folder com esta configuração:

[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

o smb_group tem ambosrochosoegerente-clienteUsuários. O segundo é o usuário usado emsvr2para conectar e gravar arquivos no compartilhamento remoto.

Agorasvr1Preciso ler arquivos escritos pelosvr2de um servidor nodejs. Este servidor funciona comorochosousuário e é gerenciado porsistema. Toda vez que tento ler o arquivo recebo permissão negada assim

 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'
 }

Mas se eu criar um script test.js que faça a mesma coisa e executá-lo no console, ele funcionará. Então eu tenho a prova de que apenas o processo do systemd está sendo negado, mesmo que o usuário em execução seja o mesmo (rochoso).

As permissões de pasta compartilhada são:

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

enquanto o arquivo específico tem este:

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

Você conhece algum motivo pelo qual isso pode acontecer? Não entendo se depende do Samba ou do SO (selinux ou coisas assim).

obrigado

Responder1

Você pode adicionar o usuário Rocky ao smb_group no svr1 para conceder acesso:

sudo usermod -aG smb_group rocky

Então reinicie o samba

Talvez seja necessário ajustar as permissões de arquivo em shared_folder para permitir que o usuário Rocky leia arquivos criados por svr2:

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

Certifique-se de que o gerenciador de processos PM2 também seja executado sob o usuário Rocky para manter permissões de acesso consistentes

informação relacionada