GlusterFS在不同的客户端上的权限

我有一个问题,使用GlusterFS来replace现有的,非HA,NFS设置以在机器之间共享数据。 先来看一下configuration:

概念certificateglusterfs是一个2台机器和一个复制卷的设置。 然后有2个客户端导入这个卷。 一个客户端是用于客户连接并发送文件的SFTP服务器,另一个客户端是运行我们的应用程序的服务器。

我遇到的问题是关于用户和权限。 连接到SFTP服务器的用户将被关在一个特定的目录(chroot)中,SFTP需要严格的权限(root用户和root拥有的目录是唯一允许写入权限的用户)。同时,应用程序,作为特定用户运行,在另一台服务器上需要在目录树上完全访问。

我正在更换的设置使用NFS,导出在两个客户端上以不同的所有权/许可(使用uid和gid选项挂载)进行挂载; 这样,两台服务器上的用户就拥有了他们所需的权限。

另一方面,GlusterFS AFAIK不允许在每台机器上安装特定的所有权。 我知道GlusterFS是符合POSIX的,我可以使用标准的权限系统和ACL

我想过和/或testing过几个选项,但没有一个能令我满意。

  • 使用ACL:当向应用服务器的用户添加读写权限时,会认为该权限是“组”权限,SFTP会投诉。

  • 在机器上创build一个通用用户:不是很灵活,依靠系统pipe理员来维护普通用户,而在转移到生产环境时,情况会变得复杂,因为更多的系统必须进行交互。

  • 安装在不同的地方并绑定到正确的目录。 但后来我发现我不能改变所有权…

  • 使用NFS / Ganesha或SAMBA。 这太过分了,我可以安装glusterfs客户端,我不想使用必须configuration和修补的其他图层。

卷本身及其所有内容由用户root和组root拥有。

你们有没有更好的主意? 或者知道GlusterFS的一个function,允许我更简单的设置?

提前致谢。

我想我find了一个可以接受的解决scheme。 我忘记了SFTP守护进程的行为。 确实,SFTP需要jail目录由root用户拥有,只有root用户拥有写权限。 但子目录可以有任何权限。

而不是将ACLconfiguration到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正常工作,不会抱怨权限,并且应用程序服务器在需要的位置具有完全访问权限