配置参数语法
配置文件路径
/etc/exports
可以使用#进行注释说明
一个完整的配置实例至少需要3个参数
1.被共享的目录
必须是存在的目录
2.向谁共享
可以指定主机或网络范围,支持通配符*(表示谁都可以访问)
10.0.0.1,10.0.0.0/24,10.0.0.0/255.255.255.0都是有效的参数
3.怎么共享
在“向谁共享”参数后边以“()”存在,之间没有空格,不同的参数之间以“,”相隔
实例:/data 192.168.220.0/24(rw)
默认参数
在配置一个nfs实例,并启动nfs服务之后,在/var/lib/nfs/etab文件中生成该实例的配置信息
我配置了一个nfs实例/data 192.168.220.0/24()没有指定任何参数,获取到的默认参数如下:
[root@nfs ~]# cat /var/lib/nfs/etab /data (ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,ro,root_squash,no_all_squash)
参数详解请执行man exports
常用参数
rw/ro 客户端在挂载了共享目录之后对该目录所具备的的权限,ro(只读),rw(读写);
async/rsync 同步/异步,async表示客户端向文件中即使只写了1K的数据服务端也会立刻同步到硬盘中,可以保证数据不被丢失;rsync则会先将数据存放在内存中适时的往硬盘中写,可以提高系统系能;
no_root_squash/root_squash 是否启用对root身份压缩为nfsnobody(默认的是nfsnobody,可以通过anonuid指定用户)的功能,如果是以root的身份登录的客户机,进入共享目录之后将会具备root权限(no_root_squash),反之为(nfsnobody);
all_squash/no_all_squash 不管登录NFS的用户的身份如何,他的身份都会被压缩成nfsnobody(默认);
anonuid 指定运行nfs进程用户的UID;
anongid 指定运行nfs进程用户组的GID;
以上是常用的参数,可以根据需求进行调整,其他的参数保持默认即可。
nfs的权限问题:
nfs的权限由两部分组成
1.远端主机对该目录的权限(rw,ro),在exports中决定,这是第一扇门;
2.被共享目录在nfs服务器端的权限,由该目录的属组,属主,权限大小决定,这是第二扇门
注意:如果,第一扇门的权限是ro,即使第二扇门的权限是777,那么这个目录也是不可写的。
如果第一扇门的权限是rw,客户端的用户在该目录的权限就和客户端用户的身份和该目录本身的权限,属主,属组有关,客户端用户的身份会被折射到服务器端:
比如:
客户端以along的身份登录,而在服务器端改目录的属主也是along,客户端和服务器端along的UID也要一样,那么客户端就可以在该目录为所欲为;
如果客户端是以root的身份登录,因为服务器端默认有root_squash参数,所以root的身份会被压缩成nfsnobody,假如改目录的属主是along,权限是755,那么客户端的权限是只读。