NFS简介
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
nfs配置文件:/etc/exports
语法: 文件系统 客户端(导出选项) 客户端(选项)
客户端处可填写:IP、FQDN或DOMAIN、NETWORK
文件系统导出选项
ro:读
rw:读写,默认是只读访问
sync:同步
async:异步写入
secure:这个选项是缺省选项,他使用了1024以下的TCP/IP端口实现NFS的连接,指定insecure可以禁用这个选项
用户映射:
root_squash:这个选项不允许 root 用户访问挂载上来的 NFS 卷。
no_root_squash:这个选项允许 root 用户访问挂载上来的 NFS 卷。
all_squash:这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。
anonuid和 anongid: 这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。
查看NFS服务器端共享的文件系统
–e SERVER_IP
客户端使用NFS文件系统
mount –t nfs SERVER:/path/to/sharedfs /path/to
exportfs:维护exports文件导出的文件系统表的专用工具
export –ar:重新导出所有的文件系统
–au:关闭导出的所有文件系统
–u FS:关闭指定的导出的文件系统
开机自动挂载nfs:
SERVER:/PATH/TO/EXPORTED_FS /mount_point nfs defaults,_netdev 0 0
_netdev:说明此共享是一个网络文件系统,如果联系不上,就会跳过此文件系统
示例:
172.16.4.100:/share/nfs /mnt nfs defaults,_netdev 0 0
NFS使用演示
示例:将本机的/share/nfs使用nfs共享出去,让其他客户端可以访问
[root@nfs ~]# mkdir -p /share/nfs
[root@nfs ~]# vim /etc/exports
/share/nfs 172.16.4.136(rw)
验证nfs是否成功共享
[root@client ~]# showmount -e 172.16.4.100
Export list for 172.16.4.100:
/share/nfs 172.16.4.136
客户端挂载使用
[root@client ~]# mount -t nfs172.16.4.100:/share/nfs /mnt/
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 299M 19G 2% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 28M 153M 16% /boot
/dev/mapper/vg0-usr 9.8G 2.0G 7.4G 21% /usr
/dev/mapper/vg0-var 20G 267M 19G 2% /var
172.16.4.100:/share/nfs
20G 312M 19G 2% /mnt
这个时候nfs就可以正常使用了
由于服务器默认将root用户映射为了来宾用户,如果以root用户访问nfs服务器是没有写权限的
[root@client ~]# cp /etc/fstab /mnt/
cp: cannot create regular file `/mnt/fstab':Read-only file system
服务器端设置允许root用户以root权限访问这个共享服务器
[root@nfs ~]# vim /etc/exports
/share/nfs 172.16.4.136(rw,no_root_squash)
设置完成之后重启服务器,在使用root用户复制文件就有权限了
[root@client ~]# cp /etc/fstab /mnt/
[root@client ~]# ll /mnt/
total 4
-rw-r--r-- 1 nobody nobody 921 Apr 23 18:51 fstab
验证:nfs是通过用户id来认证用户,而不是用户名
创建用户gentoo使用户对/share/nfs有读写执行权限,然后在里面创建一个文件
[root@Server ~]# useradd -u 600 gentoo
[root@Server ~]# setfacl -m u:gentoo:rwx/share/nfs/
[root@Server ~]# su - gentoo
[gentoo@Server ~]$ cd /share/nfs/
[gentoo@Server nfs]$ touch a.gentoo
[gentoo@Server nfs]$ ll
total 4
-rw-rw-r-- 1 gentoo gentoo 0 Apr 23 18:55 a.gentoo
客户端操作:
创建相同id,然后不同的用户名,进行写入
[root@client ~]# useradd -u 600 fedora
[root@client ~]# su - fedora
[fedora@client ~]$ cd /mnt/
[fedora@client mnt]$ ll
total 4
-rw-rw-r-- 1 nobody nobody 0 Apr23 18:55 a.gentoo
[fedora@client mnt]$ touch a.fedora
[fedora@client mnt]$ ll
total 4
-rw-rw-r-- 1 nobody nobody 0 Apr 23 18:59 a.fedora
-rw-rw-r-- 1 nobody nobody 0 Apr 23 18:55 a.gentoo
创建不同id,相同用户名,进行写入
[root@client ~]# useradd gentoo
[root@client ~]# id gentoo
uid=602(gentoo) gid=602(gentoo) groups=602(gentoo)
[root@client ~]# su - gentoo
[gentoo@client ~]$ cd /mnt/
[gentoo@client mnt]$ ll
total 4
-rw-rw-r-- 1 nobody nobody 0 Apr 24 2015 a.fedora
-rw-rw-r-- 1 nobody nobody 0 Apr 24 2015 a.gentoo
[gentoo@client mnt]$ touch b.gentoo
touch: cannot touch `b.gentoo': Permission denied
结论:相同用户名,无法成功写入,相同id可以成功写入。
转载于:https://blog.51cto.com/ximenfeibing/1652146