Linux之文件共享

文件共享

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步骤来操作。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值