本文使用Debian12.
安装nfs。
apt install nfs-kernel-server nfs-common
配置nfs。
vi /etc/exports
在最下方加入行。
/需要共享文件路径 *(rw)
例如:/www *(rw),意为共享根路径www目录为所有人访问并可读写。
如仅局域网内使用,建议配置为:
/dir 10.10.10.0/24(rw,insecure,no_root_squash)
共享根路径dir目录且仅网段10.10.10可访问并读写。
配置参考:
ro 该主机对该共享目录有只读权限
rw 该主机对该共享目录有读写权限
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash 客户机用root访问该共享文件夹时,不映射root用户
all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
anonuid 将客户机上的用户映射成指定的本地用户ID的用户
anongid 将客户机上的用户映射成属于指定的本地用户组ID
sync 资料同步写入到内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
其他指令
Win10安装NFS客户端
打开 控制面板 —> 程序 —> 启用或关闭Windows功能
也可以用【Win+R】运行,复制输入以下命令:
OptionalFeatures
勾选 NFS服务 ,点击确定,安装完毕即可。
显示指定IP全部共享的目录
showmount -e NFSIP
完整的用法:
showmount -e [server] 显示 NFS 服务器导出的所有共享。
showmount -a [server] 列出客户端主机名或 IP 地址,以及使用“主机:目录”格式显示的安装目录。
showmount -d [server] 显示 NFS 服务器上当前由某些 NFS 客户端安装的目录。
将远程磁盘共享目录dir挂载到本地。
关于如何配置远程电脑上的NFS请自行Google 完整的用法:
用法: mount [-o options] [-u:username] [-p:<password | >] <\computernamesharename> <devicename | >
-o rsize=size 设置读取缓冲区的大小(以 KB 为单位)。
-o wsize=size 设置写入缓冲区的大小(以 KB 为单位)。
-o timeout=time 设置 RPC 调用的超时值(以秒为单位)。
-o retry=number 设置软装载的重试次数。
-o mtype=soft|hard 设置装载类型。
-o lang=euc-jp|euc-tw|euc-kr|shift-jis|big5|ksc5601|gb2312-80|ansi 指定用于文件和目录名称的编码。
-o fileaccess=mode 指定文件的权限模式。这些模式用于在 NFS 服务器上创建的新文件。使用 UNIX 样式模式位指定。
-o anon 作为匿名用户装载。
-o nolock 禁用锁定。
-o casesensitive=yes|no 指定在服务器上执行区分大小写的文件查找。
-o sec=sys|krb5|krb5i|krb5p
将服务器共享的dir映射为E盘
windows:mount \IPdir E:
将服务器共享的dir挂载至根目录public
linux:mount -t nfs IP:/dir /public
查看是否加载成功
df -hT
取消挂载。
windows:umount E:
linux:umount /public
取消所有NFS挂载。
umount -f -a
将配置文件中的目录全部重新export一次!无需重启服务。
exportfs -rv
查看NFS的运行状态
nfsstat
查看rpc执行信息,可以用于检测rpc运行情况
rpcinfo
其他问题
1.连接共享后只读,不能写入。
尝试使用chmod -R 777 /dir,将目录权限提升。
或
使用all_squash解决权限问题,使客户端无论用什么用户链接,都映射到NFS服务器指定用户执行。
配置加入 anonuid=0,anongid=0,all_squash,sync
服务端 uid$gid 为 0 即等于root 用户的权限。
此时对文件的读写都是:root。缺陷:权限控制过于笼统,容易误操作。
2.部分客户端可以连接且访问正常,部分可连接但无法读取其他目录。
参数中加入 insecure。