文件共享
NFS
NFS的优点:
安装和设置简单,轻量级的文件共享软件。可以实现linux和unix系统之间的文件共享。在win7/win10系统中也可以访问nfs共享。支持基于IP的访问控制。
缺点:
不支持基于用户名的访问控制。即访问nfs共享时,无需输入用户名和密码。如果要解决此问题,可采用ftp、samba、apache、nginx共享。
网络环境拓扑:
客户机client 服务器server
192.168.11.1(win7/10) 192.168.11.11(centos)
192.168.11.12(centos)
NFS:网络文件系统(Network File System)。Unix系统之间共享文件的一种协议,客户端主要是Linux,支持多节点同时挂载以及并发写入,提供网络文件系统平台,需要借助RPC(远程过程调用)协议来发送文件传输的控制指令。
发布时间:1984年
公司:SUN公司。典型产品有JAVA。SUN公司被Oracle公司收购
NFS软件:
nfs-utils、rpcbind
说明:如果是安装了centos桌面环境,这两个软件包都已经安装好了。
如果是安装了centos最小环境,需要手动安装这两个软件包。
NFS的部署思路:
(网络服务的部署通用思路)
0.关闭安全功能,并查状态:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce
1.查软件是否已安装,如果未安装就安装软件。
2.启动服务,并允许开机自动启动
3.设置共享目录,重新加载设置。
4.做本地(内测)访问测试,做异地(公测)访问测试。
环境准备:
关闭安全功能,并查状态:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce
NFS安装:
查是否已安装:rpm -q nfs-utils rpcbind
安装:yum install -y nfs-utils rpcbind
查软件的文件列表:rpm -ql nfs-utils
查配置文件列表:rpm -qc nfs-utils
NFS服务管理:
重启动服务:systemctl restart nfs rpcbind
允许开启自动启动:systemctl enable nfs rpcbind
查服务状态:systemctl status nfs rpcbind
共享需要的文件:
通过/etc/exports共享配置文件来实现。查man exports来了解配置文件的格式。
exports配置文件语法如下:man exports查帮助中的EXAMPLE例子
共享目录的绝对路径 1号客户主机名或IP(共享选项) n号客户主机名或IP(共享选项)
/usr *(ro) 192.168.11.13(rw)
/opt *(rw,no_root_squash) 192.168.11.0/24(rw)
客户主机名或IP:
*号 表示任何IP的主机
主机名 可以指定客户机的主机名
192.168.11.0/24 表示允许192.168.11.0这个网段的所有主机访问共享
共享选项:
ro (常用选项)可读ReadOnly
rw (常用选项)可读可写read + write
sync (常用选项)同步传输
async (常用选项)异步传输
no_root_squash (常用选项)不将root映射成nfsnobody匿名用户,即让root用自己的身份和权限访问共享
no_all_squash (默认启用)不将所有用户映射成nfsnobody匿名用户,即让所有用户用自己的身份和权限
访问共享
root_squash 将root映射成nfsnobody匿名用户(默认启用)
all_squash 将所有用户映射成nfsnobody匿名用户
anonuid 匿名用户的uid号
anongid 匿名用户的gid号
nfs的其他配置文件:
(仅了解一下,无需修改)
cat /var/lib/nfs/etab 记录nfs共享的完整设置选择,此文件的内容来源于/etc/exports文件。当重启nfs服务时,会自动更新etab文件内容。
nfs压制用户
nfs默认在使用的时候会压制root用户的权限,root用户会被压制成nfsnobody,如果不想root用户被
压制成最小权限的用户,就可以在共享的时候加上一个属性。选择这个选项的同时,不需要对共享目录由
w权限,客户端就可以写入文件。
[root@ever dir2]# ll
total 8
-rw-r--r-- 1 nfsnobody nfsnobody 158 Oct 30 16:11 hosts
[root@ever ~]# vi /etc/exports
/share 172.16.100.95(rw,sync,no_root_squash)
[root@student ~]# mount -o remount /mnt/nfs2
[root@student ~]# touch /gggg.txt
[root@student ~]# cp -rf /gggg.txt /mnt/dir2
[root@ever ~]# cd /share/dir2/
[root@ever dir2]# ll
total 8
-rw-r--r-- 1 root root 0 Oct 30 16:42 gggg.txt
-rw-r--r-- 1 nfsnobody nfsnobody 158 Oct 30 16:11 hosts
例:
通过nfs将/usr目录以只读方式共享,允许任何IP的主机来访问。
vim /etc/exports
/usr *(ro)
平滑重启(重加载)nfs服务:
exportfs -rav 或 systemctl reload nfs
本地(内测)查共享资源列表:
showmount -e 127.0.0.1
exportfs命令选项:man exportfs
-r 重新共享所有目录
-a 打开或取消所有目录共享。
-v 输出详细信息。当共享或者取消共享时,显示在做什么。
-f 在“新”模式下,刷新内核共享表之外的任何东西。
在异地(公测)做挂在访问测试:
本地(内测)查共享资源列表:
showmount -e 192.168.11.11
创建挂载点:
mkdir -pv /mynfs
挂载:
mount -t nfs 192.168.11.11:/usr /mynfs
查磁盘空间使用状态:
df -hT
showmount选项:
man showmount
-a或--all 以 host:dir 这样的格式来显示客户主机名和挂载点目录。
-d或--directories 仅显示被客户挂载的目录名。
-e或--exports 显示NFS服务器的输出清单。
在Win7/10中访问NFS共享:
1.安装nfs客户端(client)程序。
运行Win+R–>control控制面板–>程序–>打开或关闭windows功能–>NFS服务–>勾选“NFS客户端”–>确定。
2.运行Win+R–>cmd–>输入如下命令。
查共享资源列表:showmount -e 192.168.11.11
挂载共享资源为K盘:mount 192.168.11.11:/usr k:
打开共享:win+E—>双击K盘图标
附加操作:卸载共享的k盘:右击K盘图标—>断开
练习:
用nfs服务以可读可写(rw)方式共享/opt目录,允许任何IP的主机访问。做本地访问测试,将其挂载到/optnfs目录,在挂载点目录中touch a.txt文件,看是否有写入权限。
问题:让root用户在挂载点目录下touch a.txt文件时提示"无法创建/optnfs/a.txt权限不够"。怎么办?
问题分析:
首先,看exports共享中是否以rw可读可写方式共享了指定的目录。
其次,查看共享目录自身的权限,用ls -ld /opt查看权限结果。权限结果如下:
drwxr-xr-x. 3 root root 16 1月 3 12:11 /opt
请回答权限的五个问题?
再次,root用户在访问nfs共享时,root是以匿名访问的,属于其他用户,而/opt目录自身对于other其他用户的权限是r-x,无w可写的权限。但是普通用户是以no_all_squash不以匿名用户身份,而是以自己真实访问共享。
权限解决方案:将/opt目录的other权限用chmod o+w /opt来设置之后,再用touch命令在挂载点目录做创建测试,发现可以写了。
附加操作:查看touch后的a.txt权限如下:
-rw-r–r--. 1 nfsnobody nfsnobody 0 1月 21 10:49 a.txt
说明:a.txt的属主、属组均为nfsnobody匿名用户账号。
文件共享权限要考虑的2个要素:
1.用户对目录自身的访问权限。
2.目录做共享时设置的访问权限。
警告:用户访问共享时想可读可写,必须是以上两个权限都为可读可写。
虚拟机克隆
第一步
1.将linx系统设置成开机自动进入CLI命令行界面:
cat /etc/inittab 查看inittab系统启动的运行等级配置文件
systemctl get-default 查看当前系统的启动运行等级
systemctl set-default multi-user.target 设置系统启动的运行等级为3,即多用户的CLI命令行界面
附注(不做这一步):
systemctl set-default graphical.target 设置系统启动的运行等级为5,即GUI桌面图形界面
第二步
2.将node12c虚拟机开机,并执行如下操作。
cd /etc/sysconfig/network-scripts
ls
cp -v ifcfg-ens33{,.bak}
vim ifcfg-ens33 修改网卡配置文件全文内容如下[删掉不需要的内容即可]
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.11.11
PREFIX=24
GATEWAY=192.168.11.2
DNS1=114.114.114.114
DNS2=8.8.8.8
第三步
3.重启网络服务:
systemctl restart network
ip a 或 ifconfig
第四步
4.将虚拟机用poweroff关机,编辑虚拟机硬件设置,将内存设置为512M,创建名称为"CLI-OK"的快照。
第五步
5.(选做)将"CLI-OK"快照克隆出一台虚拟机,虚拟名称为"node12c"。然后编辑node12c虚拟机的硬件设置中的网卡的mac地址(–>高级–>MAC地址–>生成–>看生成的新MAC地址是多少)。
第六步
6.将node12c虚拟机开机,执行如下操作。
cd /etc/sysconfig/network-scripts
ls
vim ifcfg-ens33 修改文件中的如下内容[其他内容保持不变]
IPADDR=192.168.11.12
重启网络服务,并查看IP地址:
systemctl restart network
ip a 或 ifconfig 看ens33的IP是否变成了192.168.11.12这个IP地址
第七步
7.用poweroff命令关闭node12c虚拟机。关机后创建一个名称为"IP12"的快照。
第八步
8.参考nod12c虚拟机的克隆操作步骤,再克隆出一台名称为"node13c"的虚拟机。参考上面的6、6、7步骤来操作。
附