
我有兩台 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來自 Node.js 伺服器。該伺服器運行為岩石使用者並由其管理系統。每次我嘗試讀取檔案時,權限都會被拒絕,如下所示
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
然後重新啟動桑巴
您可能需要調整shared_folder的檔案權限以允許Rocky使用者讀取svr2所建立的檔案:
sudo chmod -R 0775 /home/rocky/shared_folder
sudo chown -R rocky:smb_group /home/rocky/shared_folder
確保PM2進程管理器也運行在Rocky用戶下,以保持一致的存取權限