为Linux来宾设置NetApp NFSv4共享
尝试设置NetApp Data ONTAP NFSv4共享。
免责声明:带有CentOS 6的NFSv3
使用NFSv3在Linux客户端上配置sec = sys并在NetApp文件管理器上配置sec = none时,客户端进行“ AUTH_UNIX”调用,文件管理器以“ AUTH_NULL”进行响应。
但是,这不是客户期望的响应。
因此,由于NetApp代码不允许使用“ AUTH_NULL”,因此文件管理器仅以1种形式(应以2种形式)进行错误地答复。
除了NULL调用外,ONTAP代码不支持AUTH_NULL调用。
至于响应,在文件管理器以AUTH_NULL响应的情况下,此行为是不正确的,因为文件管理器通常应以两种形式的AUTH进行响应。
但是,即使文件管理器响应不正确,也没有立即计划在ONTAP上解决此问题,因此,无论何时需要AUTH_NULL,建议仍然使用NFSv4.
我们被告知NetApp内部存在许多内部案例,但是没有预期的修复程序,因为NFSv4将解决NFSv3遇到的问题。
因此,NetApp的建议是在客户端上使用sec = sys,在文件管理器上使用sec = none,并使用RHEL6和更高版本的NFSv4.
在文件管理器上配置NFS权限
连接到文件管理器并创建一个名为NFS_TEST的新卷。
设定权限
导航到Filer> Storage> Exports。
选择“/vol/NFS_TEST”进行编辑,然后放置以下权限,其中IP地址是我们的NFS客户端(Linux来宾)使用的IP地址:
Security Flavor: None Client Permissions: 10.10.0.147/Read Write/Allow Client Permissions: 10.10.0.149/Read Write/Allow
重要的是要注意,文件管理器上的安全性必须为sec = none。
我们已经与NetApp支持工程师一起花费了数小时,试图弄清为什么它不会挤压普通用户。
文件管理器必须具有sec = none,并且NFS客户端必须具有sec = sys。
允许两个客户端都具有root用户访问权限。
这将允许Linux来宾具有r/w访问权限。
在Linux Guest虚拟机上挂载NFS共享
在这个例子中,我们使用的是CentOS 6.
文件服务器(NFS服务器)的IP为10.10.0.51.
# yum install nfs-utils nfs-utils-lib # mkdir /mnt/netapp_nfs # mount.nfs -o vers=4,sec=sys 10.10.0.51:/vol/NFS_TEST /mnt/netapp_nfs
确保客户端使用sec = sys而不是sec = none。
这将挤压所有用户,而不仅仅是根用户。
还要确保客户端使用的NFS版本是NFSv4.
与RHEL 6客户端一起使用时,NTAPv在ONTAP 8.x上损坏。
此时,共享将作为NFSv4挂载并由root拥有,但是我们将无法更改所有权。
这样做的原因是因为NFSv4客户端发送符号“用户/组”名称,而不是像在NFSv2和NFSv3中那样发送数字“用户ID /组ID”,并且文件管理器需要某种方式将此符号名称映射到数字ID。
这些是文件管理器上的导出和安全设置:
filer> rdfile /etc/exports /vol/NFS_TEST -sec=none,rw=10.10.0.149:10.10.0.147,root=10.10.0.149:10.10.0.147,nosuid
filer> exportfs -v /vol/NFS_TEST -sec=none,rw=10.10.0.149:10.10.0.147,root=10.10.0.149:10.10.0.147,nosuid
filer> fsecurity show /vol/NFS_TEST [/vol/NFS_TEST - Directory (inum 64)] Security style: Unix Effective style: Unix DOS attributes: 0x0010 (----D---) Unix security: uid: 0 (root) gid: 0 mode: 0755 (rwxr-xr-x) No security descriptor available.
filer> rdfile /etc/passwd root:<removed>:0:1::/: pcuser::65534:65534::/: nobody::65535:65535::/: ftp::65533:65533:FTP Anonymous:/home/ftp:
filer> rdfile /etc/group daemon:*:1: pcuser:*:65534: nobody:*:65535:
默认的NetApp NFSv4 iddomain是defaultv4idtheitroad.com。
在Data ONTAP中,用于匿名访问的默认NFS用户是pcuser(UID 65534)。
考虑到这一点,在客户端上,打开文件'/etc/idmapd.conf',并确保配置如下:
[General] Verbosity = 0 Domain = defaultv4idtheitroad.com [Mapping] #Nobody-User = nobody #Nobody-Group = nobody #Nobody-User = nfsnobody #Nobody-Group = nfsnobody Nobody-User = pcuser Nobody-Group = pcuser
为了能够更改所有权,我们需要创建一个匹配的NetApp用户pcuser:
# groupadd -g 65535 pcuser # useradd -M -s /sbin/nologin -u 65535 -g 65535 pcuser
清除缓存,重新启动服务并重新挂载共享:
# umount /mnt/netapp_nfs/ # /usr/sbin/nfsidmap -c # /etc/init.d/rpcbind restart # /etc/init.d/rpcgssd restart # /etc/init.d/rpcidmapd restart # mount.nfs -o vers=4,sec=sys 10.10.0.51:/vol/NFS_TEST /mnt/netapp_nfs
现在,共享仍将由root拥有,但是由于匹配的用户pcuser(NFSv4 idmapd),我们可以更改所有权:
# chown pcuser:pcuser /mnt/netapp_nfs/
如果上述方法不起作用,请在NetApp导出上更改-sec = sys。
在文件管理器上验证:
filer> fsecurity show /vol/NFS_TEST [/vol/NFS_TEST - Directory (inum 64)] Security style: Unix Effective style: Unix DOS attributes: 0x0010 (----D---) Unix security: uid: 65534 (pcuser) gid: 65534 (pcuser) mode: 0755 (rwxr-xr-x) No security descriptor available.
从客户端计算机上删除用户pcuser,因为不再需要它(我们已更改文件服务器的所有权):
# userdel pcuser
打开'/etc/idmapd.conf',删除pcuser行并放入以下内容
Nobody-User = nfsnobody Nobody-Group = nfsnobody
清除缓存,重新启动服务并重新挂载:
# umount /mnt/netapp_nfs/ # /usr/sbin/nfsidmap -c # /etc/init.d/rpcbind restart # /etc/init.d/rpcgssd restart # /etc/init.d/rpcidmapd restart # mount.nfs -o vers=4,sec=sys 10.10.0.51:/vol/NFS_TEST /mnt/netapp_nfs
检查所有权:
# ls -ld /mnt/netapp_nfs/ drwxr-xr-x. 3 nfsnobody nfsnobody 4096 Jun 4 19:32 /mnt/netapp_nfs/
此时,所有用户都应该受到阻止。