linux下的网络文件系统

linux下的网络文件系统

  • 1 samba
    • 1.1 samba服务简介
    • 1.2 samba基本信息
    • 1.3 samba安装与启用
    • 1.4 samba用户的建立
    • 1.5 samba用户访问家目录
    • 1.6 samba服务共享目录
    • 1.7 samba的访问控制
    • 1.8 samba的常用配置参数
    • 1.9 samba的多用户挂载
  • 2 NFS(网络文件系统)
    • 2.1 nfs基本信息
    • 2.2 nfs的启用
    • 2.3 nfs配置参数及其使用
  • 3 自动挂载
    • 3.1 autofs
    • 3.2 samba+autofs
    • 3.3 nfs+autofs
    • 3.4 nfs+samba+autofs
  • 3 iscsi
    • 3.1 iscsi磁盘共享服务的部署
    • 3.2 iscsi设备的删除

1 samba

1.1 samba服务简介

  • smb = Server Message Block(服务器消息块)
  • cifs = Common Internet File System(通用因特网文件系统)
  • Windows系统共享文件时用到的协议是smb
  • Linux使用的协议是cifs
  • smb服务主要的作用是是使客户机可以通过该服务访问服务器上的文件共享系统
  • cifs客户端可以访问服务器上的文件并要求服务器提供服务,cifs是smb的一种特殊实现,所以smb和cifs的客户端之间可以相互访问,但是ntf客户端是无法直接和smb服务器交互的
  • nfs用于linux系统和客户端之间的连接,而windows和linux客户端混合使用时,就应该用samba
  • apache和ftp的文件共享都需要依赖于客户端使用工具去访问,不能在客户端直接挂载。要实现挂载就需要把整个文件系统共享,samba和nfs可以实现文件系统共享,而iscsi可以实现整个设备的共享。这就是企业中的存储分离,举个简单的例子,就像是我们在某台主机上注册了账号等信息,若这台主机突然宕机,我们依旧可以实现在另一台主机上使用之前注册的账号登陆。

1.2 samba基本信息

基本信息 含义
smb.service 服务启动脚本
/etc/samba 主配置目录
/etc/smb.conf 主配置文件
samba_share_t 安全上下文
139/445 端口
samba、samba-common 安装包

1.3 samba安装与启用

注意在做本章实验时,selinux是开启的强制状态
1)samba服务端、客户端以及工具包安装:
linux下的网络文件系统_第1张图片

2)samna服务的开启以及将samba服务添加到火墙策略中:
linux下的网络文件系统_第2张图片
3)输入“smbclient -L //172.25.254.136”命令测试,后面不加“-U 用户名”时,默认是root用户登陆smb,要求输入密码时,直接回车即可,此时可以看到列出的信息是没有可以使用的:
linux下的网络文件系统_第3张图片
当后面加-U参数时,可以指定samba用户登陆,此时登陆上去后,默认家目录就是可以使用的,是被共享出来的:
linux下的网络文件系统_第4张图片

1.4 samba用户的建立

命令 含义
smbpasswd -a liu 将已经存在的liu用户,添加为smb用户
pdbedit -L 查看smb用户列表
pdbedit -x liu 删除smb用户

samba用户必须是当前主机已经存在的用户,此处设置密码时,时samba用户的密码,和本机密码没有任何关系:
linux下的网络文件系统_第5张图片

1.5 samba用户访问家目录

1)注意,下面命令和前些写的不一样,前面的命令有-L参数,表示显示服务器所分享出来的所有资源;这里在ip后面的目录,就是该smb用户的家目录,可以直接登陆查看,进入后可以看到在列出文件时,受到了权限限制,无法访问加目录:
linux下的网络文件系统_第6张图片
2)是因为selinux的samba允许访问家目录功能默认是关闭的,需要将他开启。注意这张章所作的实验都是在selinux开启的状态下进行的:
linux下的网络文件系统_第7张图片
3)开启允许访问家目录后,就可以成功登陆liu这个smb用户的家目录了:
linux下的网络文件系统_第8张图片linux下的网络文件系统_第9张图片

1.6 samba服务共享目录

1)共享自己创建的目录

  • 建立新的共享目录:
    在这里插入图片描述
  • 当selinux处于开启状态时,若想共享自己建立的目录,必须修改安全上下文支持smb服务,修改完成后刷新/westos目录:
    linux下的网络文件系统_第10张图片
  • 修改完安全上下文后,进入主配置目录,将smb.conf主配置文件复制成smb.conf.bak,再将将模板复制成smb.conf主配置文件,防止想恢复时不好恢复:
    linux下的网络文件系统_第11张图片
  • 编辑主配置文件smb.conf,写入以下内容,’[ ]'里的内容是共享时可以被客户端看到的名称;comment是对该目录的说明;path是共享目录的路径:
    linux下的网络文件系统_第12张图片
  • 重启服务,使用之前添加的smb用户查看服务器共享的目录;然后再进入该共享目录查看内容:
    在这里插入图片描述
    可以看到服务器共享出来的目录名称和目录说明:
    linux下的网络文件系统_第13张图片
    进入服务器的共享目录查看,可以看到共享目录的内容:
    linux下的网络文件系统_第14张图片

2)共享系统中存在的目录

  • 编辑主配置文件,再添加一个系统级的共享目录:
    linux下的网络文件系统_第15张图片

  • 查看/mnt下的内容,重启smb服务:
    在这里插入图片描述

  • 重启服务后,查看共享目录,可以看到MNT共享目录名,但是进入后无显示内容,这同样也是因为selinux的原因。但是在共享系统目录时,不要修改目录安全上下文,会造成一些系统问题:
    linux下的网络文件系统_第16张图片

  • 解决方法是打开selinux的samba_export_all_ro功能,表示smb开启对所有文件读的功能,不管是否符合安全上下文,开启后samba服务将不再受安全上下文的影响。想要写的功能时,可以开启下面rw写的功能:
    linux下的网络文件系统_第17张图片

  • 此时再进入MNT共享目录,就可以看到系统级目录/mnt下的内容:
    linux下的网络文件系统_第18张图片

1.7 samba的访问控制

若遇到想让某些用户访问,而其他用户不能访问,也就是对不同ip进行访问控制,通俗来讲就是设置用户的黑白名单,可以使用另一台samba客户端进行测试,客户端需要安装samba-client软件。
1)可以使用不同ip的主机去访问smb服务器共享出来的目录,在没有设置访问控制前默认任何主机都是可以访问到的:
linux下的网络文件系统_第19张图片linux下的网络文件系统_第20张图片

2)编辑主配置文件,在约91行处这里是全局配置,输入“ hosts allow = 172.25.254.136”命令,也可以说是白名单,表示所有smb共享只允许在该主机上访问,然后重启服务;若有多个想要设置的用户,就输入空格,将ip写在后面:
在这里插入图片描述

3)此时再使用两台主机分别访问服务器共享出来的目录,只有136主机的smb用户可以访问,也就是用户白名单:
linux下的网络文件系统_第21张图片在这里插入图片描述

4)编辑主配置文件,在约91行处,将上面的allow改为deny,表示全局的黑名单,输入“ hosts deny = 172.25.254.136”,命令,表示smb的所用共享只有该主机不允许访问,然后重启服务:
linux下的网络文件系统_第22张图片

5)此时再使用两台主机分别访问服务器共享出来的目录,只有136主机的smb用户不可以访问,也就是用户黑名单:
在这里插入图片描述linux下的网络文件系统_第23张图片
注意:在使用第二台主机查看smb服务器共享出来的目录时,要先安装smb客户端,查看共享出来的目录的内容时,也用的是之前建立的smb用户。
6)上面的实验都是写入全局共享,[GLOBAL]处是对samba整体生效;当将访问权限写到单独共享处时,则只对此共享生效,如下表示只有136主机可以访问WESTOS目录:
在这里插入图片描述linux下的网络文件系统_第24张图片
7)此时其他主机访问WESTOS共享目录是不行的,因为WESTOS目录只允许136主机访问,但是没有经过访问限制的MNT目录就可以被访问:
linux下的网络文件系统_第25张图片

1.8 samba的常用配置参数

配置参数 含义
writable = yes 可写(建立、删除)
write list = westos 指定用户可写
write list = +westos/@westos 指定组可写
valid users = lee 指定访问用户
valid users = +lee/@lee 前面加+/@符号,表示指定访问组
browseable = yes/no 是否隐藏共享,不需要重启服务
map to guest = bad user 允许匿名用户访问,写到全局设定中
guest ok = yes 允许匿名用户访问,写在某个设定的目录中
admin users = westos 指定此共享的超级用户身份

1)编辑主配置文件,在系统级共享目录下写入valid users = liu,表示基于用户的共享,也就是只有该用户可以访问该共享,其他用户不能访问:
linux下的网络文件系统_第26张图片

重启服务,使用liu用户访问MNT目录,可以访问,使用其他smb用户(可以再建立一个smb用户方便观察实验效果)是无法访问该目录的,此时使用liu用户可以实现对该共享目录的挂载,而其他用户不可:
linux下的网络文件系统_第27张图片
linux下的网络文件系统_第28张图片

2)编辑主配置文件,在系统级共享目录下写入valid users = +liu或者valid users = @liu,都表示只有该组的用户可以访问该共享,其他组用户不能访问。给某个用户添加该组后,该用户即可访问MNT目录:
linux下的网络文件系统_第29张图片linux下的网络文件系统_第30张图片

3)默认/mnt目录和/westos目录对其他人是不可写的,为了实验效果,给/westos个目录777权限,以排除本地文件系统的干扰,实际上这样是不合理的:
linux下的网络文件系统_第31张图片

4)编辑主配置文件,设定“writable = yes ”所有用户对/westos目录可写,注意这里的可写指的是smb用户可写,目录本身是否可写要看本地文件系统的权限:
linux下的网络文件系统_第32张图片

配置完成后使用客户端挂载westos目录时,就可以挂载成功,此时进入该挂载去建立文件是可以建立的,建立完成后,在该主机上文件所有者和所有组属于root。但是实际上在服务端看到的是用哪个用户挂载的所有者和所有组就属于那个用户:
linux下的网络文件系统_第33张图片在这里插入图片描述

5)编辑主配置文件,设定“write list = westos”表示westos目录对指定用户可写,其他用户不可以:
linux下的网络文件系统_第34张图片linux下的网络文件系统_第35张图片
linux下的网络文件系统_第36张图片

6)编辑主配置文件,设定"write list = +liu",表示只有该组用户对该目录可写,其他用户组不可以:
linux下的网络文件系统_第37张图片

可以看在服务器上到westos用属于liu组,所以对个该目录可写:
在这里插入图片描述linux下的网络文件系统_第38张图片

在服务器上,去除westos用户的liu组,此时在客户端westos对该目录不可写:
在这里插入图片描述linux下的网络文件系统_第39张图片

7)编辑主配置文件,设定"browseable = no"表示隐藏共享资源:
linux下的网络文件系统_第40张图片

设置完成后,可看到服务器共享的WESTOS资源被隐藏:
linux下的网络文件系统_第41张图片

编辑主配置文件,设定"browseable = yes"表示不隐藏共享:
linux下的网络文件系统_第42张图片

设置完成后,可看到服务器共享的WESTOS资源可以查看:
linux下的网络文件系统_第43张图片

8)编辑主配置文件,在[global]全局里面输入“map to guest = bad user”,表示所有匿名身份指向为guest,不能在非全局处写该参数,否则会出现问题无法挂载。在WESTOS共享资源处输入“guest ok = yes”,表示允许匿名用户访问,当这两个参数设置后,才表示匿名用户允许访问:
linux下的网络文件系统_第44张图片linux下的网络文件系统_第45张图片

匿名用户挂载成功:
linux下的网络文件系统_第46张图片

注意:以上实验都是使用服务端的smb用户,不是smb用户是无法使用挂载的。即使在客户端没有建立过该用户,依旧可以在客户端使用该smb用户,但smb用户的实际控制权在服务器上

1.9 samba的多用户挂载

在客户端如果用以上的挂载方式,没有用户验证的该客户端主机的其他用户也可以访问已认证用户挂载的samba共享资源里的内容,而且smb用户的用户名和密码也直接显示在外面,这种方式不安全。所以可以通过设置特殊参数,使用户名密码等信息不会被直接看到,并且其他用户在没有samba认证时不能看已认证用户挂载的samba共享资源里的内容。
linux下的网络文件系统_第47张图片

1)在服务器,编辑主配置文件,设定任何用户对westos目录都可写:
linux下的网络文件系统_第48张图片

2)在客户端安装cifs-utils :
linux下的网络文件系统_第49张图片

编辑一个文件/root/smb_auth,该文件名可自定义,将用户名和密码存入:
在这里插入图片描述

将该文件权限设为只有自己可读写:
在这里插入图片描述

3)此时使用“mount //172.25.254.136/WESTOS /media -o credentials=/root/smb_auth”命令挂载,credentials表示将存有用户名和密码的文件写入。注意这样挂载时,若-o写在前面,会显示挂载不存在:
linux下的网络文件系统_第50张图片

输入“mount //172.25.254.160/WESTOS /media -o credentials=/root/smb_auth,multiuser”命令,表示多用户,但有smb认证的用户才能进入,。没有认证的用户可以进入该目录,但是无法查看内容:
linux下的网络文件系统_第51张图片

输入“mount //172.25.254.160/WESTOS /media -o credentials=/root/smb_auth,multiuser,sec=ntlmssp”命令,ntlmssp表示sam用户的认证方式:
在这里插入图片描述

4)添加客户端的westos为sam用户,也就是该用户为自己做一个samba认证,此时若输入错误密码进入时,会显示权限被拒绝:
在这里插入图片描述

被拒绝后,重新添加该用户,会显示该用户已经存在:
在这里插入图片描述

此时需要先清除之前添加的该用户,然后在重新添加该用户,输入正确密码即可进入:
linux下的网络文件系统_第52张图片
该用户进入后会看到所有文件的所有者和所有组都是自己:
linux下的网络文件系统_第53张图片

5)在服务端,查看westos目录,看到的是真实的文件所有者和所有组:
linux下的网络文件系统_第54张图片

2 NFS(网络文件系统)

2.1 nfs基本信息

基本信息 含义
nfs-utils 安装包
nfs-server 服务脚本
/etc/exports 共享配置文件

2.2 nfs的启用

1)在服务端安装nfs软件:
linux下的网络文件系统_第55张图片

2)需要开启nfs,然后在火墙策略中添加rpc-bind、mountd、nfs服务。
在这里插入图片描述

若只添加了rpc-bind,在客户端,输入“showmount -e 172.25.254.136”命令查看:
在这里插入图片描述在这里插入图片描述

若再添加mountd,在客户端,输入“showmount -e 172.25.254.136”命令查看:
在这里插入图片描述在这里插入图片描述

若再添加nfs,在客户端,输入“showmount -e 172.25.254.136”命令查看,此时就可以查看看到正确显示:
在这里插入图片描述在这里插入图片描述

3)在服务端,编辑/etc/exports文件,写入以下内容,其中ro表示只读挂载,*表示将该目录共享给所有人,此处也可以指定ip;输入“exportfs -rv ”命令进行刷新,注意这里不能使用重启服务:
在这里插入图片描述

4)在客户端输入“showmount -e 172.25.254.136”命令查看,看到westos目录对所有人可挂载:
在这里插入图片描述

5)测试,使用“mount 172.25.254.136:/westos /media/”命令进行挂载,挂载好后进入查看:
在这里插入图片描述

2.3 nfs配置参数及其使用

参数 含义
anonuid=1000,anongid=1000 指定用户身份
sync 更改生成后同步数据到服务器
async 实时同步数据到服务器
rw 读写
ro 只读
no_root_squash root用户挂载不转换身份

1)在服务端,编辑/etc/exports文件,表示对所有人该目录可读写挂载,刷新:
在这里插入图片描述

在客户端,进入挂载点,建立文件,查看文件权限看到nfs用户默认的拥有者和拥有组都是noboby:
linux下的网络文件系统_第56张图片

在服务端查看文件权限,看到文件拥有者和拥有组同样是noboby:
linux下的网络文件系统_第57张图片

2)在服务端,编辑/etc/exports文件,表示读写且root用户挂载不转换身份,刷新:
linux下的网络文件系统_第58张图片

在客户端,进入挂载点,建立文件,查看文件权限看到文件的拥有者和拥有组依旧是root用户:
linux下的网络文件系统_第59张图片

3)在服务端,编辑/etc/exports文件,表示读写且指定用户为westos,刷新:
在这里插入图片描述

客户端,进入挂载点,建立文件,查看文件权限看到文件的拥有者是westos用户,拥有组是nobody:
linux下的网络文件系统_第60张图片

4)在服务端,编辑/etc/exports文件,表示读写且指定用户和用户组为westos,刷新:
在这里插入图片描述

客户端,进入挂载点,建立文件,查看文件权限看到文件的拥有者和拥有组都是westos:
linux下的网络文件系统_第61张图片

5)还有两个常用参数,分别是:sync,表示在客户端更改文件,等更改完保存后才同步到服务端,其缺点是遇到断电等问题,文件未同步时,造成文件内容损失;async,表示实时更新,边写边更新,其缺点是消耗资源大。

3 自动挂载

3.1 autofs

1)在客户端,安装autofs 软件:
linux下的网络文件系统_第62张图片

2)开启该服务:
在这里插入图片描述

3)服务启动后会自动出现/net,只需要进入/net,然后再进入以服务端ip命令的目录,输入cd westos即可挂载上,输入cd就可退出挂载,但是退出挂载默认时间是300秒,300秒后会自动卸载:
linux下的网络文件系统_第63张图片

4)编辑/etc/autofs.conf文件更改卸载时间,将卸载时间缩短,方便观察实验效果,编辑完后重启服务即可。
默认卸载时间:
linux下的网络文件系统_第64张图片
更改为5秒后卸载:
linux下的网络文件系统_第65张图片
重启服务后,查看,挂载已经自动卸掉:
linux下的网络文件系统_第66张图片

3.2 samba+autofs

1)samba自动挂载可以编辑/etc/auto.master 文件,输入“/media /etc/automount”,其中automount文件名是自定义的,表示将该文件挂载再media下,这叫最终挂载自定义点子策略文件:
linux下的网络文件系统_第67张图片

2)编辑自定义的子策略文件,挂载文件输入“samba -fstype=cifs,username=liu,password=westos : //172.25.254.136/WESTOS”,表示表示将该目录,以samba的方式挂载,重启服务:
在这里插入图片描述

3)进入media下,然后输入cd samba,进入即挂载上,输入cd退出挂载:
linux下的网络文件系统_第68张图片linux下的网络文件系统_第69张图片

3.3 nfs+autofs

1)nfs的挂载同上,首先可以编辑/etc/auto.master 文件,输入“/media /etc/automount”,其中automount文件名是自定义的,表示将该文件挂载再media下,这叫最终挂载自定义点子策略文件:
linux下的网络文件系统_第70张图片

2)编辑自定义的子策略文件,挂载文件输入“nfs 172.25.254.136:/westos”,表示表示将该目录,以nfs的方式挂载,重启服务:
在这里插入图片描述

3)进入media下,然后输入cd nfs,进入即挂载上,输入cd退出挂载:
linux下的网络文件系统_第71张图片linux下的网络文件系统_第72张图片

3.4 nfs+samba+autofs

同时写两种挂载方式
1)编辑/etc/automount文件,写入
samba -fstype=cifs,username=liu,password=westos : //172.25.254.136/WESTOS
nfs 172.25.254.136:/westos,如下所示,重启服务:
在这里插入图片描述

2)输入“cd /media/nfs ”命令,实现nfs挂载,cd退出:
linux下的网络文件系统_第73张图片

3)输入“cd /media/samba”命令,实现samba挂载,cd退出:
linux下的网络文件系统_第74张图片

3 iscsi

使用nfs和samba都会是以软件的方式将文件系统共享出去,而iscsi主要用于共享硬盘,直接共享设备权限

3.1 iscsi磁盘共享服务的部署

  • 服务端:

1)保证服务端有闲置的硬盘,将硬盘的所有空间都分配给一个分区:
linux下的网络文件系统_第75张图片

2)在服务端安装服务“dnf install targetcli -y”并开启服务:
linux下的网络文件系统_第76张图片在这里插入图片描述

输入“targetcli”命令,就会进入交互运行环境,输入ls可以查看:
linux下的网络文件系统_第77张图片

3)进入该编辑环境,输入“/backstores/block create westos_storage /dev/vdb1”,表示将该分区变成一个网络磁盘,westos_storage是自定义的网络磁盘名称:
linux下的网络文件系统_第78张图片

输入“/iscsi create iqn.2021-02.org.westos:storage”,表示创建一个iqn表达方式的链,用于时别单个iscsi目标:
linux下的网络文件系统_第79张图片

输入“/iscsi/iqn.2021-02.org.westos:storage/tpg1/luns create /backstores/block/westos_storage”,将网络磁盘和iqn关联起来:
linux下的网络文件系统_第80张图片

输入“/iscsi/iqn.2021-02.org.westos:storage/tpg1/acls create iqn.2021-02.org.westos:westoskey”,建立一个钥匙:
linux下的网络文件系统_第81张图片

此时再输入ls查看,exit退出:
linux下的网络文件系统_第82张图片

4)添加火墙策略,允许3260端口访问:
linux下的网络文件系统_第83张图片

  • 客户端

1)在客户端安装软件“dnf install iscsi-initiator-utils.x86_64 -y”:
linux下的网络文件系统_第84张图片

2)编辑/etc/iscsi/initiatorname.iscsi 认证文件,修改客户端的iscsi认证钥匙与服务端一致,systemctl restart iscsid ,重启服务:
在这里插入图片描述

3)输入“iscsiadm -m discovery -t st -p 172.25.254.136”命令,表示列出服务端可用的网络磁盘,此处若没有在火墙策略处允许端口,就会显示无法链接:
在这里插入图片描述

4)输入“iscsiadm -m node -T iqn.2021-03.org.westos:storage -p 172.25.254.136 -l”,表示启用服务端的存储设备,-l表示登陆:
在这里插入图片描述

5)认证成功后,输入“fdisk -l”命令,就可以查看到设备存在:
在这里插入图片描述

6)对该设备进行分区,格式化文件系统并挂载使用:
linux下的网络文件系统_第85张图片在这里插入图片描述linux下的网络文件系统_第86张图片linux下的网络文件系统_第87张图片

3.2 iscsi设备的删除

  • 客户端

1)卸载挂载好的设备,输入“tree /var/lib/iscsi”查看网络共享设备:
linux下的网络文件系统_第88张图片

输入“iscsiadm -m discovery -t st -p 172.25.254.136”命令,表示查看网络共享设备存在:
在这里插入图片描述

2)输入“iscsiadm -m node -T iqn.2021-03.org.westos:storage -p 172.25.254.136 -u”,-u表示登出,这种操作是临时的,当服务重启时,设备就会加载回来:
在这里插入图片描述

输入“fdisk -l”,登出后查看,设备被移除:
linux下的网络文件系统_第89张图片

3)输入“systemctl restart iscsi”重启服务,重启后再次查看设备,可以看到设备又加载回来:
linux下的网络文件系统_第90张图片

4)所以正确的删除方式是,先卸载挂载殿,再登出,然后删除设备,删除/etc/iscsi/initiatorname.iscsi文件中的认证。
“iscsiadm -m node -T iqn.2021-03.org.westos:storage -p 172.25.254.136 -u”登出:
在这里插入图片描述

“iscsiadm -m node -T iqn.2021-03.org.westos:storage -p 172.25.254.136 -o delete”删除,“systemctl restart iscsi”重启服务:
在这里插入图片描述

查看设备被删除:
linux下的网络文件系统_第91张图片linux下的网络文件系统_第92张图片

  • 服务端:

1)输入“targetcli ”,进入后发现设备信息仍然在:
linux下的网络文件系统_第93张图片

2)输入“/iscsi/”进入该目录,输入“/iscsi delete iqn.2021-03.org.westos:storage”删除设备:
linux下的网络文件系统_第94张图片

3)返回上一层查看,并没有删除干净,输入“clearconfig confirm=True”表示删除其他配置,删除完后查看,最后退出保存:
linux下的网络文件系统_第95张图片linux下的网络文件系统_第96张图片

注意:想要获取该交互页面的目录的帮助,可以进入目录,然后输入help即可:
linux下的网络文件系统_第97张图片

你可能感兴趣的:(Linux系统管理与网络服务,linux,linux,运维)