공유 폴더에서 systemd에 대한 액세스를 제한하는 것이 OS 또는 Samba입니까?

공유 폴더에서 systemd에 대한 액세스를 제한하는 것이 OS 또는 Samba입니까?

우리가 호출할 수 있는 두 개의 Rocky Linux 9 서버가 있습니다.svr1그리고svr2. svr1Samba 서비스가 설치되어 있고 /home/rocky/shared_folder 폴더를 다음 구성으로 공유합니다.

[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

smb_group에는 둘 다 있습니다불안정한그리고관리자-클라이언트사용자. 두 번째는 다음에서 사용되는 사용자입니다.svr2원격 공유에 연결하고 파일을 쓰려면

지금svr1다음에 의해 작성된 파일을 읽어야 합니다.svr2nodejs 서버에서. 이 서버는 다음과 같이 실행됩니다.불안정한사용자이며 관리됩니다.체계화된. 파일을 읽으려고 할 때마다 다음과 같이 권한이 거부되었습니다.

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

하지만 동일한 작업을 수행하는 test.js 스크립트를 만들고 콘솔에서 실행하면 작동합니다. 따라서 실행 중인 사용자가 동일하더라도 systemd 프로세스만 거부된다는 증거가 있습니다(불안정한).

공유 폴더 권한은 다음과 같습니다.

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

특정 파일에는 다음이 있습니다.

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

이런 일이 발생할 수 있는 이유를 알고 있나요? Samba 또는 OS(selinux 또는 이와 유사한 것)에 따라 달라지는지 이해가 되지 않습니다.

감사해요

답변1

Rocky 사용자를 svr1의 smb_group에 추가하여 액세스 권한을 부여할 수 있습니다.

sudo usermod -aG smb_group rocky

그런 다음 삼바를 다시 시작하십시오.

Rocky 사용자가 svr2에서 생성된 파일을 읽을 수 있도록 shared_folder에 대한 파일 권한을 조정해야 할 수도 있습니다.

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

일관된 액세스 권한을 유지하려면 PM2 프로세스 관리자가 Rocky 사용자로도 실행되는지 확인하세요.

관련 정보