1.安装NFS服务:
服务器端:
sudo apt install nfs-kernel-server
sudo apt install portmap(如果安装上一个,可以不用执行此操作)
sudo apt install nfs-common
1)配置portmap
sudo vim /etc/default/portmap
-i 127.0.0.1
2)配 置/etc/hosts.allow
$ sudo vim /etc/hosts.allow
3)配置/etc/exports(NFS服务的主配置文件见末端)
NFS挂载目录及权限由/etc/exports文件定义。
$sudo vim /etc/exports
比如我要将将我的home目录中的/home/lin/NFSshare目录让192.168.66.*的IP共享, 则在该文件末尾添加下列语句:
/home/lin/NFSshare 192.168.66.*(rw,sync,no_root_squash)
/home :共享的目录
* :指定哪些用户可以访问
* 所有可以ping同该主机的用户
192.168.1.* 指定网段,在该网段中的用户可以挂载
192.168.1.12 只有该用户能挂载
(ro,sync,no_root_squash): 权限(权限参数详解看文章末端)
ro : 只读
rw : 读写
sync : 同步
no_root_squash: 不降低root用户的权限
其他选项man 5 exports 查看
4)重启nfs服务
$ sudo /etc/init.d/nfs-kernel-server restart
下面介绍客户端如何访问服务器
1、检查客户端和服务端的网络是否连通(ping命令)
ping + 主机IP
2、查看服务端的共享目录
客户端挂载:执行下面的指令就可以把NFS服务器(IP地址为192.168.1.45)共享出来的/home挂装到本地的/mnt/nfs/home目录下。
showmount -e nfs-serverip: 查看nfs服务器共享出来的资源
mount -t nfs 192.168.1.45:/home /mnt/nfs/home
showmount -e + 主机IP
showmount -e 192.168.1.93
Export list for 192.168.1.93:
/home *
3、将该目录挂载到本地
mount 192.168.1.93:/home /mnt
通过挂载点卸载
umount -v /mnt
4、访问
访问本地的mnt目录,就可访问服务端共享的目录了。
---------------------------------------------------------------------------------------------------------------
在NFS服务器搭建过程中,当我们在修改配置文件的时候,其中很重要的一环就是权限参数。
/etc/exprots中的权限参数主要有如下几个:
① rw : 该目录共享的权限是读写
ro : 该目录共享的权限是只读
但最终能不能读写还是与文件系统的权限和身份有关
② sync : 数据会同步写入到内存和硬盘中
async : 数据会暂存于内存而不写入硬盘
③ no_root_squash : 开放客户端使用root使用来操作文件系统,也就是说让root写入的文件仍然具有root权限
root_squash : 默认客户端的root用户被会压缩为nfsnobody,这样对服务器系统较有保障
④ all_squash : 不论登录NFS服务器的客户端用户身份是什么,默认都会被压缩为匿名用户(nobody或者nfsnobody)
⑤ anonuid : 这个值一般是结合all_squash一起使用的,它是指匿名用户中的UID的设置值,用这个anonuid可以自行设置UID的值,注意:这个UID必须要存在与/etc/passwd中。
anongid : 组的GID。
NFS服务的主配置文件:
/etc/exports:
格式:[共享的目录] [主机名或IP(参数,参数)]
当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
第一列:欲共享出去的目录,也就是想共享到网络中的文件系统;
第二列:可访问主机
192.168.152.13 指定IP地址的主机
nfsclient.test.com 指定域名的主机
192.168.1.0/24 指定网段中的所有主机
*.test.com 指定域下的所有主机
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
例如可以编辑/etc/exports为:
/tmp *(rw,no_root_squash)
/home/public 192.168.0.*(rw) *(ro)
/home/test 192.168.0.100(rw)
/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)