Ist es das Betriebssystem oder Samba, das den Zugriff auf systemd in einem freigegebenen Ordner einschränkt?

Ist es das Betriebssystem oder Samba, das den Zugriff auf systemd in einem freigegebenen Ordner einschränkt?

Ich habe zwei Rocky Linux 9 Server, die wir anrufen könnensvr1Undsvr2. svr1hat den Samba-Dienst installiert und gibt den Ordner /home/rocky/shared_folder mit dieser Konfiguration frei:

[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

die smb_group hat beidesfelsigUndManager-KundeBenutzer. Der zweite ist der Benutzer, der verwendet wird aufsvr2um eine Verbindung herzustellen und Dateien auf die Remote-Freigabe zu schreiben.

Jetzt, amsvr1Ich muss Dateien lesen, die geschrieben wurden vonsvr2von einem NodeJS-Server. Dieser Server läuft alsfelsigBenutzer und wird verwaltet vonsystemd. Jedes Mal, wenn ich versuche, die Datei zu lesen, wird mir die Berechtigung verweigert,

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

Aber wenn ich ein test.js-Skript erstelle, das dasselbe tut, und es von der Konsole aus ausführe, funktioniert es. Damit habe ich den Beweis, dass nur der systemd-Prozess abgelehnt wird, auch wenn der laufende Benutzer derselbe ist (felsig).

Die Berechtigungen für freigegebene Ordner lauten:

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

während eine bestimmte Datei diese hat:

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

Kennen Sie einen Grund, warum das passieren könnte? Ich verstehe nicht, ob es von Samba oder dem Betriebssystem (Selinux oder so) abhängt.

Danke

Antwort1

Sie können den Rocky-Benutzer zur smb_group auf svr1 hinzufügen, um Zugriff zu gewähren:

sudo usermod -aG smb_group rocky

Starten Sie dann Samba neu

Möglicherweise müssen Sie die Dateiberechtigungen für den Shared_folder anpassen, um dem Rocky-Benutzer das Lesen von von svr2 erstellten Dateien zu ermöglichen:

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

Stellen Sie sicher, dass der PM2-Prozessmanager auch unter dem Rocky-Benutzer ausgeführt wird, um einheitliche Zugriffsberechtigungen aufrechtzuerhalten

verwandte Informationen