机器A的目录/data/share,可以通过远程sftp访问(用于windows用户上传和下载文件)机器A的普通用户user_a对该文件夹有读写权限,同时可通过nfs挂载到机器B,B的普通用户user_b可对目录下的文件修改。权限设置如下:
nfs设置
nfs的搭建方法略。
搭建好nfs环境后,修改/etc/exports, 添加如下行
# anonuid 为user_a 的用户ID, anongid为user_a的组ID
/data/share *(rw,sync,all_squash,no_subtree_check,anonuid=1001,anongid=1003)
使用all_squash选项,远程mount后系统为远程连接分配nfsnobody用户权限;利用anonuid和anongid将nfsnobody映射到anonuid:anongid对应的用户:组,则远程mount用户就具有了本地用户anonuid:anongid的权限了。
sftp设置
修改/etc/ssh/sshd_config ,在下面这行最后添加umask设置
Subsystem sftp /usr/lib/openssh/sftp-server -u 002
经试验发现sftp上传文件的默认umask是022,导致通过sftpuser上传的文件,服务器普通用户无法修改。修改为002后,还需要将user_a添加至sftp组里,则机器A的user_a用户具有sftp上传文件的读写权限,同时机器B用户user_b在mount目录中也具有了sftp上传文件的读写权限