NFS 即 网络文件系统 (Network File System),是一种 分布式 文件系统协议,该协议允许客户端主机可以像访问本地文件系统一样通过网络访问服务器端文件,即可以将远程服务器文件直接 mount ( 挂载 )到本地的文件目录结构中进行访问。
一、软件安装
服务器端需要安装 nfs-kernel-server 软件包:
$ sudo apt-get update
$ sudo apt-get install nfs-kernel-server
二、服务器配置
默认情况下,NFS 服务器上定义了某个共享目录,则该目录及其子目录下的所有文件都可被访问。
出于对安全的考虑,客户端任何需要 超级用户 (即 root 用户,UID=0 & GID=0)权限的文件操作都默认映射到 UID=65534 和 GID=65534 的用户,即 Ubuntu 系统中的 nobody:nogroup。
例如客户端使用 root 权限在挂载的共享目录中创建文件时,该文件的 属主 和 属组 自动变为 nobody:nogroup ,而非 root:root 。
1. 在服务器端创建共享目录
sudo mkdir -p /var/nfs/gernel
sudo mkdir -p /var/nfs/public
sudo chown nobody:nogroup /var/nfs/gernel
2. 修改 exports 文件
为了使 NFS 服务器定义的共享文件可被指定的客户端主机访问,需要在服务器端的 /etc/exports 文件中添加对应的记录。
该文件的格式如下:
Directory Host(Options ...) Host(Options) #comment 关于 /etc/exports 文件的详细语法格式可参考 man exports 。
文件示例:
/var/nfs/gernel 192.168.56.0/24(rw,insecure,sync,no_subtree_check)
/var/nfs/public *(ro,insecure,sync,no_subtree_check)
/home/starky 192.168.56.1(rw,insecure,no_root_squash,sync,no_subtree_check)
第一条纪录表示 192.168.56.0/24 子网 中的所有主机都可挂载 var/nfs/gernel 目录并拥有读写( rw )权限
第二条纪录表示 所有 主机都可挂载 /var/nfs/public 目录且拥有 只读 ( ro )权限
第三条纪录表示客户端 IP 地址为 192.168.56.1 的主机可以挂载 /home/starky 目录并拥有 读写 权限,而且任何 root 权限(UID=0 , GID=0)的文件操作都不默认映射给 nobody:nogroup,而保持属主(组)仍为 root( no_root_squash )
insecure选项:允许通过任意端口的远程访问
sync选项ÿ