一、组网图
不涉及
二、问题描述
创建nfs共享目录并挂载至nfs客户端,在nfs目录内写入文件,再将同一共享目录通过cifs共享出去,在cifs客户端上对该目录文件进行读写操作发现文件在cifs客户端只有读权限,无法正常写入
三、过程分析
在linux客户端上创建文件时由于umask控制导致文档对其他用户和组只有读权限,(umask决定在创建目录或者文件时去除哪些权限,umask值默认为022,例如文件创建时默认权限为666,经过umask权限修改之后为644也就是rw_r_r,所以只对其他用户只有r权限)
四、解决方法
方案一:在nfs客户端上使用命令将文件权限改成777 (chmod 777 文件名)(该方法仅限临时使用)
方案二:将nfs共享的nfsnobody的GID和UID改为cifs客户端访问用户的GID和UID
nfs客户端使用root用户挂载:
在设置nfs参数时默认将nfs客户端root用户压缩为nfsnobody用户和用户组,在设置nfs高级参数时将下图框中的GID和UID改为cifs客户端访问用户的GID与UID
使用非root用户挂载nfs配置
如果挂载时使用非root用户,则需要在gui上修改将no_all_squash改为all_squash,目的是让所有用户都映射为nfsnobody
方案三: NAS master 节点修改 smb 共享参数,增加 admin users 条目,并 systemctl restart smb 重启 smb ,使得访问 CIFS 共享的用户权限提升为管理者权限。
1、打开/etc/samb/smb.conf文件,找到需要增加权限的cifs共享,在其中添加一行 admin users = 用户名
、
2、重启smb服务 systemctl restart smb
五、风险提示
1、如有条件,建议优先使用方案二。如局点需要采用其他方案,请提前知会到研发
2、对同一目录开启cifs和nfs共享可能带来风险,避免在同一时刻在不同共享上对文件进行操作,请提前知会客户
六、关键字
CIFS,NFS,访问权限