一个简单的问题使用 Solaris 11 我创建了一个 nfs 共享
zfs set share.nfs=on rpool/public
我的 Linux 客户端安装它..
mount solaris2:/var/public /mnt/share
我想给 myuser 写权限,我知道三种解决方案
解决方案一:chmod 777
chmod 777 /var/public #NO COMMENT
解决方案 2:使远程和本地系统之间的 uid 相同
将本地 Solaris 用户的 uid 更改为远程 Linux 用户的 uid,然后提供一个 acl,如果你只有一个用户,这没问题,在多用户系统中简直太糟糕了(你必须用最新的 uid 替换所有旧的 uid! )
解决方案3:将远程用户的uid映射到本地用户,然后给acl
idmap add remoteuser@remotehost unixuser:myuser
chmod A=user:myuser:add_file/read_data/execute/write_data/execute:allow /var/public
但不起作用。本地用户可以向/var/public 写入数据,而远程不能,为什么?
Edit1:据我所知,idmap 命令将 gid/uid 转换为 SID,对 AD 或 LDAP 很有用
Edit2:他们在illumos上放置了一些有趣的选项 uidmap 和 gidmap,只有一个问题:Solaris11 不是 Illumos 的“发行版”,这些选项根本不存在
等待更好的解决方案,此解决方法很好:在客户端和服务器上创建一个具有相同 gid 的组,然后创建 acl。
在客户端 (Linux)
在服务器上 (Solaris)
然后我将 acl 添加到共享 zfs 集(安装在 /var/public 上)
测试:工作正常,属于 nfs-users 组的所有用户(远程和本地)都可以写入共享。更好的解决方案是使用 AD(或 samba4)+ idmap,但这种解决方法在本地文件环境中也能正常工作。