RHCE第五章:NFS服务器
一、NFS(network file system)
网络文件系统:在互联网中共享服务器中的文件资源(用于Linux主机共享文件的协议)。
使用nfs服务需要安装:nfs-utils 以及 rpcbind
nfs-utils : 提供nfs服务的程序
rpcbind :管理nfs所有进程端口号的程序
二、实验1:服务器与客户端共享文件
(1)
[root@Server ~]# dnf install nfs-utils #在服务器安装nfs服务
[root@Server ~]# dnf install rpcbind #在服务器安装rpc服务
[root@Server ~]# systemctl enable --now nfs-server.service #立即永久开机自启动nfs服务
[root@Server ~]# systemctl enable --now rpcbind #立即永久开机自启动rpc服务
[root@Client ~]# dnf install nfs-utils #在客户端安装nfs服务
[root@Client ~]# dnf install rpcbind #在客户端安装rpc服务
[root@Client ~]# systemctl enable --now rpcbind #客户端只需要开启rpc服务
(2)
[root@Server ~]# mkdir /nfs_share #在服务器的家目录下创建共享目录
[root@Server nfs_share]# rpm -ql nfs-utils #查看nfs服务产生那些文件
/etc/exports.d #nfs服务共享的配置文件(可能不会自动创建)
······
[root@Server ~]# man 5 exports #查看配置文件(配置文件都在5区,所以一般要加个5)
在命令行打/EXAMPLE #可以查到exports配置文件的编辑方法
# sample /etc/exports file
/ master(rw) trusty(rw,no_root_squash) #编辑方法
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
/pub *(ro,insecure,all_squash)
/srv/www -sync,rw server @trusted @external(ro)
/foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
/build buildhost[0-9].local.domain(rw)
[root@Server ~]# vim /etc/exports #编辑nfs服务共享的配置文件
/nfs_share *(rw,sync,all_squash)
要共享的文件夹 IP地址(拥有的权限)
ro:只读
rw:读写
sync:同步,每进行一步操作都会共享给对方。性能弱
async:异步,在共享文件编辑好保存完后,立即发送给对方。性能强
root_squash:当客户端以root用户去访问时,隐匿root用户为nobody
no_root_squash:当客户端以root用户去访问时,不隐匿root用户(不安全)
all_squash:当客户端以任何账户去访问时,都隐匿账户为nobody(安全,推荐)
no_all_squash:当客户端以任何账户去访问时,都不隐匿账户
anonuid= anongid= :将文件的用户和工作组映射成指定的UID和GID,不指定则默认为65534(nobody)
[root@Server ~]# exportfs -rv #更新nfs服务
exporting *:/nfs_share
[root@Client ~]# showmount -e 192.168.153.100 #查看服务器的共享文件有没有共享出来
Export list for 192.168.153.100:
/nfs_share *
[root@Client ~]# mount 192.168.153.100:/nfs_share /mnt #将服务器下的共享文件挂载到/mnt
[root@Server ~]# echo "hello nfs" > /nfs_share/hellonfs #在服务器共享文件夹下创建共享文件(如:hellonfs)并在"hellp nfs"编辑到共享文件中
[root@Client ~]# ls /mnt #查看有没有共享到文件
hellonfs
[root@Client ~]# cat /mnt/hellonfs #查看共享文件中的信息
hello nfs
三、实验2:是否隐匿账户
(1)
[root@Server ~]# vim /etc/exports #编辑共享配置文件
/nfs_share *(rw,sync,root_squash) #隐匿root用户
[root@Server ~]# exportfs -rv #更新nfs服务
exporting *:/nfs_share
[root@Client mnt]# ll #查看/mnt下的文件详细信息
总用量 4
-rw-r--r--. 1 root root 10 4月 14 20:40 hellonfs
[root@Server ~]# chmod 777 /nfs_share #在/nfs_share目录时,给其他用户可读可写的权限
[root@Client mnt]# touch 123 #创建文件123
[root@Client mnt]# ll #再次查看文件信息
总用量 4
-rw-r--r--. 1 nobody nobody 0 4月 14 20:43 123 #客户端root用户创建文件的root用户被隐匿
-rw-r--r--. 1 root root 10 4月 14 20:40 hellonfs
(2)
[root@Server ~]# vim /etc/exports
/nfs_share *(rw,sync,no_root_squash) #不隐匿root用户
[root@Server ~]# exportfs -rv
exporting *:/nfs_share
[root@Client mnt]# touch abc #创建文件abc
[root@Client mnt]# ll
总用量 4
-rw-r--r--. 1 nobody nobody 0 4月 14 20:43 123
-rw-r--r--. 1 root root 0 4月 14 20:49 abc #客户端root用户创建文件的root用户不被隐匿
-rw-r--r--. 1 root root 10 4月 14 20:40 hellonfs
(3)
[root@Client mnt]# su xing #切换xing用户
[xing@Client mnt]$ touch aaaaa #创建文件aaaaa
[xing@Client mnt]$ ll
总用量 4
-rw-r--r--. 1 nobody nobody 0 4月 14 20:43 123
-rw-r--r--. 1 xing xing 0 4月 14 20:52 aaaaa #创建文件的xing用户不被隐匿
-rw-r--r--. 1 root root 0 4月 14 20:49 abc
-rw-r--r--. 1 root root 10 4月 14 20:40 hellonfs
[root@Server ~]# vim /etc/exports
/nfs_share *(rw,sync,all_squash) #隐匿所有用户
[root@Server ~]# exportfs -rv
exporting *:/nfs_share
[xing@Client mnt]$ touch bbbbb #xing用户创建文件bbbbb
[xing@Client mnt]$ ll
总用量 4
-rw-r--r--. 1 nobody nobody 0 4月 14 20:43 123
-rw-r--r--. 1 xing xing 0 4月 14 20:52 aaaaa
-rw-r--r--. 1 root root 0 4月 14 20:49 abc
-rw-r--r--. 1 nobody nobody 0 4月 14 20:56 bbbbb #创建文件的xing用户被隐匿
-rw-r--r--. 1 root root 10 4月 14 20:40 hellonfs
四、实验3:自动挂载
(1)
[root@Client mnt]# df #在客户端上查看挂载信息
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
······
192.168.153.100:/nfs_share 26578944 6055424 20523520 23% /mnt #被挂载共享目录信息
[root@Client mnt]# cd #返回家目录(如果一直处在被挂载的目录,是取消不了挂载的)
[root@Client ~]# umount /mnt #取消挂载
[root@Client ~]# df 再次查看挂载信息
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
······
(2)
[root@Client ~]# dnf install autofs -y #安装自动挂载服务
[root@Client ~]# cd / #进到根目录
[root@Client /]# ls #查看根目录下的文件
afs boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@Client /]# systemctl start autofs.service #激活autofs服务
[root@Client /]# ls #再次查看根目录下的文件
afs boot etc lib media mnt opt root sbin sys usr
bin dev home lib64 misc net proc run srv tmp var #autofs服务会产生两个文件'misc'和'net',/net就是自动挂载的目录
(3)
[root@Client /]# cd /net/ #进入自动挂载目录
[root@Client net]# ls #查看文件时什么都没有
[root@Client net]# cd 192.168.153.100 #进入要被挂载的服务器,此时客户端会立刻自动挂载
[root@Client 192.168.153.100]# ls #再次查看文件
nfs_share
[root@Client 192.168.153.100]# cd nfs_share/ #进入共享目录
[root@Client nfs_share]# pwd #查看当前文件所处位置
/net/192.168.153.100/nfs_share
[root@Client nfs_share]# df #查看挂载信息
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
·····
192.168.153.100:/nfs_share 26578944 6055424 20523520 23% /net/192.168.153.100/nfs_share #共享目录被自动挂载
(4)
[root@Client nfs_share]# cd #退出共享目录
[root@Client ~]# #300秒内不操作与共享目录有关的事,自动挂载的目录会自动删除
[root@Client ~]# vim /etc/autofs.conf #编辑autofs服务的配置文件
26 timeout = 5 #默认超时时间为300秒,修改为5秒
[root@Client ~]# systemctl restart autofs.service #重启autofs服务
[root@Client ~]# cd /net/192.168.153.100/nfs_share/ #进入自动挂载服务器下的共享目录
[root@Client nfs_share]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
·····
192.168.153.100:/nfs_share 26578944 6055424 20523520 23% /net/192.168.153.100/nfs_share #共享目录被自动挂载上
[root@Client nfs_share]# cd #退出共享目录5
[root@Client ~]# df #5秒后查看挂载信息
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
······ #共享目录自动删除(超时时间一般不修改)
五、实验4:指定自动挂载目录
[root@Client ~]# vim /etc/auto.master #修改指定挂载目录要进入auto.master配置文件
13 /net -hosts #将访问的主机(虚拟器)挂载到/net目录下
14 /nfs /etc/autofs.nfs_share #创建指定挂载的主目录/nfs,/etc/autofs.nfs_share是子目录的配置文件
[root@Client ~]# vim /etc/autofs.nfs_share #编辑子目录的配置文件
nfs_share -rw 192.168.153.100:/nfs_share
创建在主目录/nfs下的文件 可读可写 服务器的共享文件
[root@Client ~]# systemctl restart autofs.service #重启autofs服务
[root@Client ~]# ls /nfs #查看指定挂载目录/nfs