NFS
一. 概述
- NFS(Network File System): 可以让客户端把服务器的共享目录挂载到本机使用, 就像使用本机分区一样, 非常方便
- NFS是被RPC服务管理的, NFS需要到RPC服务去注册自己主进程端口号以及子进程端口号, 所以必须安装RPC的主程序
rpcbind
- NFS端口: 2049
- RPC端口: 111
- NFS daemon端口, 随机
二. 权限说明
linux系统目录权限会生效
NFS服务共享权限也会生效
NFS没有用户登录认证机制, 所以客户端登录到服务器之后, 会把客户端的身份映射到服务器端, 就会出现以下四种情况:
- client和server上刚好有相同的账户和用户组, 用户名和UID都要相同, 则client上用户可以在server上按照用户权限使用文件
- 当client和server上拥有相同的UID, 但是用户名不同, 假设client有用户aa(UID:500), server上有用户bb(UID:500), 在client上使用server共享目录时, 身份识别为bb, 但是以client看, 是aa在操作, 因为Linux权限绑定在UID上, 此种情况尽量避免, 容易出现逻辑混乱
- server上没有client的UID, 则client用户访问server时, 会将此用户自动转变为nfsnobody(UID:65534)用户
- client上是root使用共享, 默认吧root也转变为nfsnobody, 服务器端可以修改配置文件, 允许root访问nfs服务器
三. NFS服务端设置
- 服务端: web01(192.168.5.131)
- 客户端: web02(192.168.5.132)
NFS主程序: nfs-utils
RPC主程序: rpcbind(旧版本是portmap)
配置文件: /etc/exports
- 将nfs和rpcbind设置开机自启动
[root@web01 ~]# chkconfig --level 2345 nfs on
[root@web01 ~]# chkconfig --list | grep nfs
nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
nfslock 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
[root@web01 ~]# chkconfig --level 2345 rpcbind on
[root@web01 ~]# chkconfig --list | grep rpcbind
rpcbind 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
- 启动rpcbind和nfs, 需要先启动rpcbind
[root@web01 ~]# service rpcbind start
正在启动 rpcbind: [确定]
[root@web01 ~]# service nfs start
启动 NFS 服务: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
- 查看进程
- rpc.rquotad: nfs配额
- rpc.mountd: 处理客户端挂载
- nfsd: nfs守护进程
- rpcbind: rpcc守护进程
- RPC服务注册情况
rpcinfo -p IP或主机名
四. NFS配置文件
/etc/exports
共享目录 客户端 (权限)
-
共享目录
-
客户端:
- 指定IP: 192.168.5.132
- 指定网段: 192.168.44.0/24(表示整个网段可以访问)
- 指定主机名:
- 所有主机: *
-
常用权限
- rw: 读写
- ro: 只读
- all_squash: 不论登陆是谁, 都压缩为匿名用户nfsnobody
- no_all_squash: bu压缩
- root_squash: 如果登陆的是root, 压缩为nfsnobody
- no_root_squash: 允许root身份登陆(不推荐)
- anonuid: 把所有登陆用户, 不再压缩为匿名用户, 而是压缩为指定uid用户
- sync: 同步写入
- async: 异步写入, 现将数据先保存在内存缓冲区中, 必要时才写入磁盘
示例如下
修改配置文件vi /etc/exports
/home/share 192.168.5.132(rw,no_root_squash) *(ro)
常用命令
-
exportfs 选项
选项:- -a: 按照配置文件挂载/卸载所有目录
- -r: 重新挂载
- -u: 卸载
- -v: 显示详细信息
exportfs -arv 重新挂载所有目录, 不重启NFS服务
exportfs -auv 全部卸载所有目录
-
showmount命令
- 查看共享目录
- showmount -e IP或主机名 查看某个主机的共享目录
-
新增/home/share目录, 将所有者改为nfsnobody
[root@web01 home]# mkdir /home/share
[root@web01 home]# chown nfsnobody share
[root@web01 home]# ll -d share/
drwxr-xr-x 2 nfsnobody root 4096 1月 23 06:07 share/
五. 客户端使用
- 首先需要开启rpcbind服务
- 使用
showmount -e 192.168.5.131
查看服务器共享的目录
Export list for 192.168.5.131:
/home/share (everyone)
[root@web02 ~]#
- 把服务器共享目录挂载到客户端
- mkdir /home/uar/share
- 建立挂载点 mount -t nfs web01:/home/share /home/uar/share
- 查看挂载 mount
web01:/home/share on /home/uar/share type nfs (rw,vers=4,addr=192.168.5.131,clientaddr=192.168.5.132)
- web02中进入到share, 创建文件phpinfo.php, 文件所有者和所有组都市nfsnobody
-rw-r--r-- 1 nfsnobody nfsnobody 18 1月 23 06:07 phpinfo.php
网友评论