我有两台 Rocky Linux 9 服务器,我们可以称之为svr1和svr2。 svr1已安装 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 有岩石和经理-客户用户。第二个是用户使用svr2连接远程共享并在远程共享上写入文件。
从今起svr1我需要读取由svr2来自 nodejs 服务器。此服务器运行为岩石用户并由管理systemd每次我尝试读取文件时,都会像这样被拒绝权限
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 用户添加到 svr1 上的 smb_group 以授予访问权限:
sudo usermod -aG smb_group rocky
然后重启 samba
您可能需要调整 shared_folder 上的文件权限以允许 Rocky 用户读取 svr2 创建的文件:
sudo chmod -R 0775 /home/rocky/shared_folder
sudo chown -R rocky:smb_group /home/rocky/shared_folder
确保PM2进程管理器也在Rocky用户下运行,以保持一致的访问权限