server端
先确定server端和客户端能相互ping通,注意防火墙与selinux
yum -y install nfs-utils
#Ubuntu用 apt install -y nfs-kernel-server
mkdir /nfs/date1
chmod 766 /nfs/date1
#创建要共享的目录
vim /etc/exports
/nfs/date1 x.x.x.x(rw,sync,no_root_squash)
#共享目录 一个地址段 权限参数
systemctl start nfs
exportfs -v
#显示共享目录
参数:
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_squash root 用户具有根目录的完全管理访问权限
anonuid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID
anongid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID
客户端
/nfsfile
#要挂载的目录
mount -t nfs x.x.x.x:/nfs/date1 /nfsfile
#挂载nfs 服务端地址和目录 本机的挂载目录
-t :指定类型
df -h
#查看挂载
问题一:客户端创建文件后属主属组不是操作用户
1. 服务端与客户端存在相同的uid和gid,所以属主属组显示的是客户端那个相同uid,gid的名字,更改一下就好:
usermod -u 1001 text 更改text用户uid
groupmod -g 1001 text 修改text组gid
find / -user 1001 -exec chown -h text {} \; 家目录会自动修改,其他文件需自己修改
find / -group 1001 -exec chgrp -h text {} \;2.server端配置文件修改,这样所有文件属主属组都会是anonymous,适合公用目录:
vim /etc/exports
/nfs/date1 x.x.x.x(rw,sync,no_root_squash,all_squash)