精彩文章免费看

nfs与sftp的权限问题记录

机器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上传文件的读写权限

最后编辑于:2020-05-14 18:04