不同客戶端上的 GlusterFS 權限
我在使用 GlusterFS 替換現有的非 HA NFS 設置以在機器之間共享數據時遇到問題。先說一下配置:
概念驗證 glusterfs 是具有 2 台機器和一個複製卷的設置。然後有 2 個客戶端導入此卷。一個客戶端是供客戶連接和發送文件的 SFTP 伺服器,另一個是執行我們的應用程序的伺服器。
我遇到的問題是關於使用者和權限的。連接到 SFTP 伺服器的使用者將被監禁在特定目錄(chroot)中,並且 SFTP 需要嚴格的權限(該目錄必須由 root 使用者擁有,並且 root 是唯一允許寫入權限的使用者)同時應用程序,作為特定使用者執行,在另一台伺服器上將需要對目錄樹的完全訪問權限。
我要替換的設置使用 NFS,並且導出在兩個客戶端上安裝了不同的所有權/權限(在安裝時使用 uid 和 gid 選項);這樣兩台伺服器上的使用者就擁有了他們需要的權限。
GlusterFS,另一方面,AFAIK,不允許在每台機器上安裝具有特定所有權的捲。我知道 GlusterFS 符合 POSIX,我可以使用標準權限系統和 ACL
我已經考慮和/或測試了幾個選項,但沒有一個讓我滿意。
- 使用 ACL:當給應用伺服器的使用者添加讀/寫權限時,它會認為該權限是一個“組”權限,SFTP 會報錯。
- 在機器上創建一個普通使用者:不是很靈活,依賴系統管理員來維護普通使用者,當轉移到生產環境時,情況會變得複雜,因為需要更多的系統進行互動。
- 掛載到不同的地方並綁定到正確的目錄。但是後來我發現我無法更改所有權…
- 使用 NFS/Ganesha 或 SAMBA。這太過分了,我可以安裝 glusterfs 客戶端,我不想使用必須配置和維護的其他層。
卷本身及其所有內容歸使用者 root 和組 root 所有。
你們有更好的主意嗎?或者知道 GlusterFS 的一個功能可以讓我進行更簡單的設置?
提前致謝。
我想我找到了一個可以接受的解決方案。我忘記了 SFTP 守護程序的行為。確實,SFTP 需要 jail 目錄由使用者 root 擁有,並且只有 root 才有寫權限。但是子目錄可以有任何權限。
我沒有將 ACL 配置到 gluster 卷的根目錄,而是僅針對 jail 目錄的內容更改 ACL,以這種方式:
客戶端 1 - 應用伺服器
root@appsrv$ cd /path/to/gluster/volume root@appsrv$ chown -R root:root * root@appsrv$ chmod -R 2750 * root@appsrv$ ls -la total 6 drwxr-x--- 14 root root ./ drwxr-xr-x 4 appuser appgroup ../ drwxr-xr-x 3 root root .trashcan/ drwxr-s--- 5 root root User1/ drwxr-s--- 5 root root User2/ drwxr-s--- 5 root root User3/ root@appsrv$ setfacl -Rm u:appuser:rwx */* root@appsrv$ setfacl -Rm g:appgroup:rx */* root@appsrv$ setfacl -Rdm u:appuser:rwx */* root@appsrv$ setfacl -Rdm g:appgroup:rx */* root@appsrv$ ls -la total 6 drwxr-x--- 14 root root ./ drwxr-xr-x 4 appuser appgroup ../ drwxr-xr-x 3 root root .trashcan/ drwxr-s---+ 5 root root User1/ drwxr-s---+ 5 root root User2/ drwxr-s---+ 5 root root User3/
客戶端 2 - SFTP 伺服器
root@sftpsrv$ cd /path/to/gluster/volume root@sftpsrv$ setfacl -Rm g:sftpgroup:rx * root@sftpsrv$ setfacl -Rm g:sftpgroup:rwx */input root@sftpsrv$ setfacl -Rdm g:sftpgroup:rx * root@sftpsrv$ setfacl -dRm g:sftpgroup:rwx */input root@sftpsrv$ ls -la total 6 drwxr-x--- 14 root root ./ drwxr-xr-x 4 root root ../ drwxr-xr-x 3 root root .trashcan/ drwxr-x---+ 5 root root User1/ drwxr-x---+ 5 root root User2/ drwxr-x---+ 5 root root User3/
現在 SFTP 可以正常工作並且不會抱怨權限,並且應用程序伺服器在需要的地方具有完全訪問權限