ubuntu 18.04 安装配置 nfs 服务

最近在学习 hi3519av100 camera 开发,为避免频繁使用 u 盘 copy 文件,因此需要搭建 nfs 服务。

1. 安装服务端和客户端

1
sudo apt install nfs-kernel-server nfs-common

其中 nfs-kernel-server 为服务端, nfs-common 为客户端。

2. 配置 nfs 共享目录

在家目录创建共享目录,并在 /etc/exports 中导出:

1
2
3
qiushao@qiushao-pc:~$ mkdir nfs-share
qiushao@qiushao-pc:~$ sudo vim /etc/exports
/home/qiushao/nfs-share *(rw,sync,no_root_squash,no_subtree_check)

格式如下:
共享目录 可访问共享目录的ip(共享目录权限列表)
各字段解析如下:
/home/qiushao/nfs-share: 要共享的目录
:指定可以访问共享目录的用户 ip, * 代表所有用户。192.168.3. 指定网段。192.168.3.29 指定 ip。
rw:可读可写。如果想要只读的话,可以指定 ro。
sync:文件同步写入到内存与硬盘中。
async:文件会先暂存于内存中,而非直接写入硬盘。
no_root_squash:登入 nfs 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!但如果你需要在客户端对 nfs 目录进行写入操作。你就得配置 no_root_squash。方便与安全不可兼得。
root_squash:在登入 nfs 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。
subtree_check:强制 nfs 检查父目录的权限(默认)
no_subtree_check:不检查父目录权限

配置完成后,执行以下命令导出共享目录,并重启 nfs 服务:

1
2
3
qiushao@qiushao-pc:~$ sudo exportfs -a      
qiushao@qiushao-pc:~$ sudo service nfs-kernel-server restart
qiushao@qiushao-pc:~$

这样服务端就配置完成啦。

3. 客户端访问测试

1
2
3
4
5
6
qiushao@qiushao-pc:~$ sudo mount localhost:/home/qiushao/nfs-share /mnt
qiushao@qiushao-pc:~$ cd /mnt
qiushao@qiushao-pc:/mnt$ ls
qiushao@qiushao-pc:/mnt$ touch foobar
qiushao@qiushao-pc:/mnt$ ls ~/nfs-share/
foobar

我们把 nfs-share 共享文件系统挂载到 /mnt, 可以看到我们在 /mnt 目录下创建一个 foobar 文件,然后在 nfs-share 目录下也有一个 foobar 文件。看起来 nfs 的配置是已经 ok 了。