Centos中配置NFS
NFS服务器端需要安装nfs-utils和portmap这两个安装包,同时要确保nfs、portmap服务启动。把需要共享出去的目录添加在/etc/exports文件中,格式为:
服务器上共享的目录 客户端主机名称1或IP1(参数1,参数2) 客户端主机名称2或IP2(参数3,参数4)
注意:可以在一条中设置多个客户端,也可以使用字码的方式来确定某一个网段的客户机,例如:192.168.1.0/24,参数和前面的ip之间没有空格,可以指定多个参数,可用的参数如下:
- rw:可读写的权限;
- ro:只读权限
- no_root_squash:客户端登陆 NFS 主机使用共享目录的使用者,如果是 root 的话,那么对于这个共享的目录来说,他就具有 root 的权限,这个参数可能造成安全隐患
- root_squash:客户端登陆 NFS 主机使用共享目录的使用者,如果是 root 的话,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份;
- all_squash:不论客户端登陆 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是 nobody ;
- anonuid:前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody,但是您可以自行设定这个 UID 的值,当然,这个 UID 必需要存在于您的 /etc/passwd 中;
- anongid:同 anonuid ,但是变成 group ID 就是了;
- sync:数据同步写入到内存与硬盘当中;
- async:数据会先暂存于内存当中,而非直接写入硬盘。
需要说明的是通过rw设置的读写权限还需要根据当前登录的用户来判断,例如使用参数(rw,root_squash),假设服务器的上的目录owner是用户 test ,且目录权限是744,这样的话,客户端mount上的共享文件还是没有写的权限。对于权限这一块比较搞人,最简单的办法是使用参数(rw,no_root_squash),这样,只要客户端是使用root登陆的,那么它mount上的共享目的就有一切权限了。
例如把服务器端目录/data/nfs-dir-192.168.1.211共享给ip为192.168.1.211的客户端,配置如下:
/data/nfs-dir-192.168.1.211 192.168.1.211(rw,sync,no_root_squash)
这样就配置完成了,启动portmap和nfs服务(service port start、service nfs start 或 /etc/init.d/portmap start、/etc/init.d/nfs start),可以通过命令exportfs -v查看共享的目录。修改了配置文件后,在不重启nfs服务的情况下也可以使用exportfs -r来使新的配置生效。
客户端使用mount命令就可以把服务器端的共享目录mount到本地,例如把上述服务器端的目录mount到本地的/data目录上:
mount -t nfs 192.168.1.68:/data/nfs-dir-192.168.1.211/ /data
可以把上述命令加入到/etc/rc.local中,这样重启后会自动挂载服务器的共享目录到本地。