为Linux来宾设置NetApp NFSv4共享

时间:2020-03-21 11:47:02  来源:igfitidea点击:

尝试设置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/

此时,所有用户都应该受到阻止。