您的位置:首页 > 运维架构 > Linux

Linux学习——NFS自动挂载

2016-07-10 19:09 316 查看
紧接上一篇Linux学习——NFS服务介绍及安装配置方法,这次实现nfs自动启动并在客户端自动完成挂载操作。



查看nfs服务器端nfs的配置,通过查看/var/lib/nfs/etab文件可以看到nfs目录及详细的权限设置等。
默认就有sync,wdelay,hide 等等,no_root_squash 是让root保持权限,root_squash 是把root映射成nobody,no_all_squash 不让所有用户保持在挂载目录中的权限。所以,root建立的文件所有者是nfsnobody。



我们看到nfs默认的uid和gid都是65534,这个系统中一个nfsnobody的用户ID一致,因此这也是能实现通过nfsnobody来管控nfs权限的重要原因。





这里我删除上一篇中的nfs目录,并新建一个目录/share/disk,然后对该目录进行操作。



编辑/etc/exports文件,将上面创建的目录设置为nfs。



重新启动portmap和nfs服务,注意顺序。



通过showmount -e 可以看到在服务器上设置的nfs目录,然后将该目录的所有权分配给nfsnobody,这样在客户端上其他用户的操作都是在nfsnobody下执行,也就能进行写入、删除等操作。



在服务器上设置nfs和portmap服务开机启动。



在客户端上只需要设置portmap服务开机启动即可。



使用showmount可以看到服务器上设置的nfs目录,通过mount命令进行挂载。



进入挂载的目录下,尝试创建文件和目录,能够成功过执行,说明权限设置没有问题。使用ll命令查看文件属性,发现在客户端上创建的文件属主和属组都是nfsnobody。

普通用户写入文件时就是自己的名字,这也就保证了服务器的安全性。
  关于权限的分析

  1. 客户端连接时候,对普通用户的检查

    a. 如果明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户;

    b. 如果NFS server上面有同名用户,那么此时客户端登录账户的身份转换为NFS server上面的同名用户;

    c. 如果没有明确指定,也没有同名用户,那么此时 用户身份被压缩成nfsnobody;

  2. 客户端连接的时候,对root的检查

    a. 如果设置no_root_squash,那么此时root用户的身份被压缩为NFS server上面的root;

    b. 如果设置了all_squash、anonuid、anongid,此时root 身份被压缩为指定用户;

    c. 如果没有明确指定,此时root用户被压缩为nfsnobody;

    d. 如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组;



修改/etc/fstab文件,添加nfs挂载,如上图,保存退出。



重启服务器端server171。



重启客户端server172。



两台Linux启动后,使用ssh到服务器server171上,使用showmount -e可以看到设置的nfs目录,当然也可以使用showmount -a查看连接该nfs的主机。



ssh到客户端server172上,可以看到nfs已经自动挂载上了。



进入目录进行查看,并进行创建文件、删除文件或目录等操作,确认权限也没有问题。至此,权限问题得到解决,nfs自动挂载也得以实现。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: