Ограничивает ли ОС или Samba доступ к systemd в общей папке?

Ограничивает ли ОС или Samba доступ к systemd в общей папке?

У меня есть два сервера Rocky Linux 9, которые мы можем назватьсвр1исвр2. свр1установлена ​​ли служба Samba и предоставлен общий доступ к папке /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 есть и то, и другоескалистыйименеджер-клиентпользователи. Второй — это пользователь, используемый насвр2для подключения и записи файлов на удаленный ресурс.

Сейчас насвр1Мне нужно прочитать файлы, написанныесвр2с сервера nodejs. Этот сервер работает какскалистыйпользователь и управляетсясистемд. Каждый раз, когда я пытаюсь прочитать файл, я получаю сообщение об отказе в доступе, как это

 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 или ОС (selinux или что-то в этом роде).

Спасибо

решение1

Вы можете добавить пользователя Rocky в группу smb_group на svr1, чтобы предоставить ему доступ:

sudo usermod -aG smb_group rocky

Затем перезапустите самбу.

Возможно, вам придется настроить права доступа к файлам в папке shared_folder, чтобы разрешить пользователю Rocky читать файлы, созданные svr2:

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

Убедитесь, что менеджер процессов PM2 также работает под пользователем Rocky, чтобы поддерживать согласованные разрешения на доступ.

Связанный контент