CIFS文件存储系统

#######CFIS文件的存储###########
如果web服务器压力太大,用多台站点为1台服务器分担压力
3台主机 如果每台主机分别存有支付宝帐号注册信息
如果1号主机挂了,应该怎么办?
技术:存储分离,把东西分享出去给别人用。
最底层1个存储服务器
3台主机把存储目录都存放在存储服务器里面
如果1号挂了,2号可以通过网络访问其他主机存进去的信息
因此把内容共享出去给别人用CIFS。
cifs协议(共享文件)


cifs协议与samba服务*

**
基本概念:
CIFS是实现文件共享服务的一种文件系统,主要用于实现windows系统中的文件共享,linux系统中用的比较少linux系统中利用CIFS文件系统实现文件共享,需要安装samba服务。它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。

SMB协议Server Message Block

SMB 一种客户机/服务器、请求/响应协议。通过 SMB
协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB
协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。

SMB文件共享(windows),cifs(linux) 共享信息块,属于一种方式。只不过在不通系统叫的名字不一样.
两个系统共享
windows:\172.25.254.200 共享

###########################################################

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

##在linux里面共享给windows####
客户端,命令,服务
samba-client ##客户端应用程序
samba-common ##Samba的支持文件,命令,(有了这个才能执行pdbedit 14-20行代码)
samba.x86_64 ##服务器应用程序
服务名称:smb nmb
服务端口: 通常使用 TCP/445 进行所有连接。还使用UDP137、UDP138和TCP/139 进行向后兼容。
主配置文件: /etc/samba/smb.conf

注意:
samba 用户必须是系统用户
SMB 密码和系统密码无关
SMB 默认共享的都是自己的家目录

cifs文件存储需要的服务为smb服务
存储服务器:*
1.smaba的基本配置和登陆访问:

服务端(ip为172.25.254.111):

  yum search samba  ## ##查看客户,共享命令,服务
  yum install samba-client.x86_64 samba-common.x86_64 samba.x86_64 -y
  systemctl start smb
  systemctl enable smb
  netstat -antlupe | grep smb    ##139 445 smb默认端口,目前比较倾向与445端口。

CIFS文件存储系统_第1张图片
CIFS文件存储系统_第2张图片

firewall-cmd --list-all
firewall-cmd --permanent --add-service=samba
firewall-cmd --permanent --add-service=samba-client 
firewall-cmd --reload        ##默认smb服务安装完成

CIFS文件存储系统_第3张图片

14  pdbedit -L                    ##查看创建的smb用户
15  useradd westos			
16  useradd lee
17  smbpasswd  -a westos          ##创建smb用户,必须是系统用户才能添加到smb用户,-a添加,-x删除用户
18  smbpasswd  -a lee
19  smbpasswd  -a lee1
20  pdbedit  -L 
smb默认不允许匿名

CIFS文件存储系统_第4张图片

实现共享
客户端(211)

 第一种:
ssh [email protected]
1  yum install samba-client -y

2  smbclient  -L //172.25.254.100  ##匿名用户登陆,没有密码直接回车,-L查看列表,列出服务端所提供的共享文件夹。
3  smbclient  -L //172.25.254.100 -U westos 		   ##用户登陆,列表,-L查看列表,列出服务端所提供的共享文件夹。利用某个用户登陆,列出共享文件,用户登录时会将其家目录共享。
4  smbclient   //172.25.254.100/westos -U westos       ##用户登陆,每一个smb用户共享默认是家目录
5  pwd								   ##查看当前路径
6  ls								   ##查看当前路径下的文件
7  smbclient   //172.25.254.100/westos -U westos 	   ##上传只能上传当前路径下的文件,可以!ls查看当前路径下的(可以上传的文件)
	smb:\> !ls
	smb:\> put anaconda-ks.cfg
	smb:\>quit

CIFS文件存储系统_第5张图片
CIFS文件存储系统_第6张图片
smbclient -L //172.25.254.100 -U westos ##用户登陆,列表,利用某个用户登陆,列出共享文件,用户登录时会将其家目录共享。
CIFS文件存储系统_第7张图片

 smbclient   //172.25.254.100/westos -U westos       ##用户登陆,每一个smb用户共享默认是家目录,可以ls列出当前目录下的文件。

 扩展:(如果是student用户登陆,共享student家目录,ls查看报错会被拒绝。。)
 首先把student添加到smb用户中 
 smbpasswd -a student  ##自己设置密码
 smbclient   //172.25.254.100/student -U student
 在服务端:
 getsebool -a | grep samba   ##查看samba的bool值
 setsebool -P samba_enable_home_dirs on 打开服务
 客户端:
 -L列出共享的目录
 smbclient -L //172.25.25.111 -U student
 smbclient   //172.25.254.100/student -U student   ##进入目录并查看,查看成功,证明是selinux值的影响

smbclient //172.25.254.100/westos -U westos
CIFS文件存储系统_第8张图片

测试:111真机
ifconfig eth0
ls /home/westos/ 家目录下可以看到112主机上传的文件
CIFS文件存储系统_第9张图片

第二种:在112主机还可以通过挂载的方法去验证共享

    ##也可以使用挂载的方法
    客户端
 10  mount //172.25.254.100/westos /mnt -o username=westos,password=lee
 11  cd /mnt/
 12  ls
 13  rm -fr anaconda-ks.cfg 
 14  ls
 15  touch file{1..10}    ##在mnt下建立文件

CIFS文件存储系统_第10张图片

服务端验证
ls /home/westos

CIFS文件存储系统_第11张图片

在211主机删除
 rm -fr file*

在这里插入图片描述

111真机验证
ls /home/westos

在这里插入图片描述

全局访问控制
211主机:
smbclient  -L //172.25.254.100 -U westos 	
域名是MYGROUP 
111主机:
rpm -qc samba-common ##查看smb配置文件
vim /etc/samba/smb.conf  ##主配置文件
更改域名: workgroup = WESTOS

systemctl restart smb.service

在211主机:
smbclient  -L //172.25.254.100 -U westos  ##域名已更改

##全局访问控制:(黑白名单)
hosts allow
hosts deny

 94;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
 95 ;       hosts allow = 127. 192.168.12. 192.168.13.
 96 ;       hosts allow = 172.25.254.211    ##只允许211访问smb  
 96 ;       hosts allow = 172.25.254.      ##允许一个网段
 97 ;       hosts deny = 172.25.254.10     ##不允许10
 98 ;       max protocol = SMB2

211主机:
smbclient -L //172.25.254.100 -U westos
域名是MYGROUP
CIFS文件存储系统_第12张图片
111主机:(服务端)
rpm -qc samba-common ##查看smb配置文件
vim /etc/samba/smb.conf ##主配置文件
CIFS文件存储系统_第13张图片

更改域名: workgroup = WESTOS
 96 ; hosts allow = 172.25.254.211    ##只允许211访问smb  

CIFS文件存储系统_第14张图片
在这里插入图片描述
CIFS文件存储系统_第15张图片
CIFS文件存储系统_第16张图片
CIFS文件存储系统_第17张图片重启服务
CIFS文件存储系统_第18张图片

 96 ;       hosts allow = 172.25.254.      ##允许一个网段
 97 ;       hosts deny = 172.25.254.10     ##不允许10

CIFS文件存储系统_第19张图片
CIFS文件存储系统_第20张图片

#######共享目录: 默认是家目录############
vim /etc/sysconfig/selinux
打开selinux
reboot
加载很慢,因为要更改安全上下文

(1)只可以修改自己建立目录的安全上下文,不可以更改系统家目录安全上下文。

(2)如果更改共享系统安全上下文:打开布尔值,就不需要更改安全上下文。但是安全性变差

建立文件都是以登陆用户的身份建立的

##共享自己建的目录####
##建立目录更改安全上下文######

vim /etc/sysconfig/selinux
打开selinux
reboot   
加载很慢,更改安全上下文

vim /etc/samba/smb.conf   ##可以查看详细的更改默认系统家目录权限

mkdir /westos_smb
ls -ld /westos_smb    ##查看其他用户没有写的权限
vim /etc/samba/smb.conf 
 【HAHA】             ##共享出去给别人看的目录的名字
comment = Share Directory  ##目录说明
 path = /westos_smb   ##服务器真实存在目录的名字
 
systemctl restart smb.service

在这里插入图片描述
CIFS文件存储系统_第21张图片
在这里插入图片描述
CIFS文件存储系统_第22张图片
在主配置文件可以查找如果selinux为强制状态,对于创建的目录和系统级目录应该怎么解决
CIFS文件存储系统_第23张图片
CIFS文件存储系统_第24张图片
CIFS文件存储系统_第25张图片
【HAHA】 ##共享出去给别人看的目录的名字
comment = Share Directory ##目录说明
path = /westos_smb ##服务器真实存在目录的名字
在这里插入图片描述
在这里插入图片描述

211主机:
smbclient -L //172.25.254.100 -U westos
可以看到HAHA
CIFS文件存储系统_第26张图片
111:
vim /etc/samba/smb.conf
【WESTOS】 ##更改目录名字为WESTOS
comment = Share Directory
path = /westos_smb
在这里插入图片描述
112主机:
smbclient -L //172.25.254.100 -U westos
可以看到WESTOS共享目录
CIFS文件存储系统_第27张图片

smbclient //172.25.254.100/WESTOS -U westos
ls -->服务禁止
CIFS文件存储系统_第28张图片
111:
ls -ld /westos_smb/
setenforce 0 ##更改为警告模式
在这里插入图片描述
112:
ls -->可以查看目录
CIFS文件存储系统_第29张图片
111:
也可以不更改selinux
使用安全上下文更改为samba_share_t
restorecon -RvvF /westos_smb/
CIFS文件存储系统_第30张图片
211:
smbclient //172.25.254.100/WESTOS -U westos
ls -->可以看到目录下的文件
CIFS文件存储系统_第31张图片
使用挂载的方式看实验更清晰
mount //172.25.254.111/WESTOS /mnt -o username=westos,password=lee

df

cd /mnt/
touch file
命令被禁止,普通用户没有写的权限
CIFS文件存储系统_第32张图片
111主机
主配置文件下添加writeable=yes 表示smb服务可写开启
在这里插入图片描述
重启systemctl restart smb.service
211主机
touch file1 依然禁止
在这里插入图片描述
因为还需要更改文件系统权限
111:
chmod 777 /westos_smb/
在这里插入图片描述
112:
touch file1
ll 查看建立的所属人和所属组

因为是以westos身份登陆的,因此共享目录下建立的文件所属组及拥有着都是westos身份。
CIFS文件存储系统_第33张图片

因为使用westos用户登陆的
id westos 值是多少,在112主机里面建立的文件的id就是多少

111:
这种方式更改目录权限不安全,因此恢复权限,只对westos用户设置权限
chmod 755 /westos_smb/
setfacl -m u:westos:rwx /westos_smb/
在这里插入图片描述
112:
touch /mnt/file2
ll 查看,和文件file1一样
CIFS文件存储系统_第34张图片

#####共享/mnt/系统目录###########
手动临时挂载点/mnt/
概念:
打开布尔值作用:可以共享读写系统级目录
系统级文件不能直接修改其安全上下文,因为系统级文件可能不止smb一个服务会读取,如果修改会影响其他。只能修改smb 服务在selinux中的安全级别

chcon -t 临时的
semanager fcontext更改内核,不会当前生效

可以更改布尔值
-P 永久 重启系统之后还有
打开布尔值之后selinux不再管smb的读写访问
smb访问任何用户都不受selinux影响

例:共享 /mnt 目录
1.编辑配置文件: vim /etc/samba/smb.conf
在最后添加		【mnt】
		comment = Share system mnt direcotry ## 解释目录的备注信息,可任 意写
		path = /mnt  ##服务器自己的目录,即共享目录的绝对路径
		writable = yes

systemctl restart smb.service
ll -Zd /mnt	可以看出安全上下文与smb服务不匹配
系统级文件不能直接修改其安全上下文,因为系统级文件可能不止smb一个服务会读取,如果修改会影响其他。只能修改smb 服务在selinux中的安全级别。

getsebool -a | grep samba	过滤出selinux中 smb的权限
   //打开该布尔值后可以共享所有系统级目录,比安全上下文的级别高 
   2:  setsebool -P samba_export_all_ro on | 1  ###设置selinux对smb服务的只读权限永久开启,-P 永久属性不会随着系统的重启而失效。
   3:  setsebool -P samba_export_all_rw on | 1 ##设置selinux对smb服务的读写权限永久开启,开启此权限后selinux对smb服务的所有安全策略跳过,降低smb服务的安全性。
   4:  getsebool -a | grep samba                   
   5:  setfacl -m u:westos:rwx /mnt             ###设置westos用户对/mnt的读写执行权限

打开这个以后,smb服务就不受selinux安全上下文的管制,查看其他共享系统级目录或自建目录就不需要修改安全上下文

  测试:
  mount //172.25.254.112/mnt /mnt -o username=westos,password=lee	
 cd /mnt
 touch file1 

在服务端;
cd /mnt
ls       ##可以看到在客户端建立的file1文件
 打开布尔值后,共享不再受selinux影响,自己创建的文件不需要更改安全上下文,共享出去客户端依然可以创建文件
  验证:
    	步骤:
  	 服务端:mkdir /lee/
   	chmod 777 /lee      ##为了验证安全上下文已经不影响。所以直接把目录权限设置为777
       vim    /etc/samba/smb.conf
     [WESTOS]                  
   comment = Share Directory
   path = /lee         
   writable = yes         ##设置目录可写   
     
  systemctl restart  smb.service
  
 测试:
   客户端:  mount //172.25.254.111/WESTOS  /mnt -o username=westos,password=westos
           cd /mnt
           touch file  ##有权限
  服务端:cd /lee/
     ls   ##有创建的文件file

实验流程:
111
(1)编辑配置文件: vim /etc/samba/smb.conf
在最后添加 【mnt】
comment = Share system mnt direcotry
path = /mnt
CIFS文件存储系统_第35张图片
211
(2)登陆之后可以看到mnt共享目录
挂载
CIFS文件存储系统_第36张图片
CIFS文件存储系统_第37张图片
111:服务端
(3)
cd /mnt
touch file{1…10}建立文件
ll
CIFS文件存储系统_第38张图片

211
cd /mnt
看不见共享目录下的文件
CIFS文件存储系统_第39张图片

111
打开读的布尔值
CIFS文件存储系统_第40张图片
211
ls 看见/mnt下的文件
但是不可以建立文件,没有写的功能
在这里插入图片描述
111
vim /etc/samba/smb.conf
在最后添加 【mnt】
comment = Share system mnt direcotry
path = /mnt
writable = yes ##共享的目录可以被其他用户写
CIFS文件存储系统_第41张图片重启服务

211
还是无法建立文件
在这里插入图片描述
111
更改文件系统权限太危险,因此设置只要以westos身份登陆,就会具有rwx权限
CIFS文件存储系统_第42张图片
211
无法建立文件
CIFS文件存储系统_第43张图片
111
如果更改seliux的值就可以建立文件
在这里插入图片描述在这里插入图片描述
在不更改的情况下不可以建立
在这里插入图片描述在这里插入图片描述
因此需要打开写的布尔值
211
可以进行读写操作
CIFS文件存储系统_第44张图片
CIFS文件存储系统_第45张图片
注意:
在打开布尔值之后,即使不更改安全上下文也可以使用户建立文件,可以共享同于自行建立的目录。
CIFS文件存储系统_第46张图片
在这里插入图片描述
CIFS文件存储系统_第47张图片
CIFS文件存储系统_第48张图片

#######smb配置文件参数###############

(1)browseable	默认(yes)不隐藏,smb共享目录的隐藏(no),-L查看时在列表隐藏,但可以登陆与进入,可以ls查看
(2)write list	可写的列表 后面接用户,只对该用户可写,  + |@  是对其组成员可写

(3)valid users	有效用户,后面接用户,该目录只能由该用户登陆进行共享,+ |@ 对其组成员可登陆

(4)
匿名用户:
126 map to guest = bad user	#####把匿名用户身份影射为guest用户的访问

共享目录配置文件添加	guest ok = yes  ##匿名用户可以登陆,且登陆不需要输入密码,直接回车。
使用游客身份去登陆的时候会提示输入密码,直接回车,如果不想要提示输入密码

游客用户挂载加上 username=guest,password=""  ##表示免密登陆,密码为空
再次挂载就没有提示输入密码。

(1)browseable 默认(yes)不隐藏,smb共享目录的隐藏(no),-L查看时在列表隐藏,但可以登陆与进入,可以ls查看
CIFS文件存储系统_第49张图片
CIFS文件存储系统_第50张图片在这里插入图片描述
CIFS文件存储系统_第51张图片
CIFS文件存储系统_第52张图片在这里插入图片描述
CIFS文件存储系统_第53张图片

(2)write list	可写的列表 后面接用户,只对该用户可写,  + |@  是对其组成员可写

CIFS文件存储系统_第54张图片
在这里插入图片描述
在这里插入图片描述
CIFS文件存储系统_第55张图片
CIFS文件存储系统_第56张图片
CIFS文件存储系统_第57张图片
CIFS文件存储系统_第58张图片
CIFS文件存储系统_第59张图片
CIFS文件存储系统_第60张图片
(3)valid users 有效用户,后面接用户,该目录只能由该用户登陆进行共享,+ |@ 对其组成员可登陆
CIFS文件存储系统_第61张图片
CIFS文件存储系统_第62张图片
CIFS文件存储系统_第63张图片
在这里插入图片描述
注释掉参数,避免影响之后的实验。
CIFS文件存储系统_第64张图片
(4)
匿名用户:
126 map to guest = bad user #####把匿名用户身份影射为guest用户的访问
在这里插入图片描述
CIFS文件存储系统_第65张图片
共享目录配置文件添加 guest ok = yes ##匿名用户可以登陆,且登陆不需要输入密码,直接回车。
CIFS文件存储系统_第66张图片
CIFS文件存储系统_第67张图片
使用游客身份去登陆的时候会提示输入密码,直接回车,如果不想要提示输入密码
CIFS文件存储系统_第68张图片
游客用户挂载加上 username=guest,password="" ##表示免密登陆,密码为空
再次挂载就没有提示输入密码。
CIFS文件存储系统_第69张图片
(5)
smb共享目录下配置文件
admin users = westos 表示以westos身份登陆smb共享目录的时候拥有超户的身份,组身份不变
CIFS文件存储系统_第70张图片
CIFS文件存储系统_第71张图片
CIFS文件存储系统_第72张图片
CIFS文件存储系统_第73张图片
在这里插入图片描述
更改文件系统权限
在这里插入图片描述
CIFS文件存储系统_第74张图片
在这里插入图片描述
表示以westos身份登陆smb共享目录的时候拥有超户的身份,组身份不变
CIFS文件存储系统_第75张图片
CIFS文件存储系统_第76张图片

#################实现smb多用户挂载#######

针对客户端设置:

1:yum install -y cifs-utils.x86_64   ##安装客户端samab认证程序,实现多用户挂载的服务
  man mount.cifs ##可以查看cifs系统的挂载策略

  2: vim /root/smbpassword   ##smb挂载用户身份的一个认证文件,//根据挂载规则编写认证所需的文件
username=westos
password=123456

  3:chmod 600 /root/smbpasswd	修改权限只对所有人可读,保护登陆的用户密码
    ls -l /root/smbpassword
    mount //172.25.254.111/WESTOS /mnt -o credentials=/root/smbpasswd     ##指定挂载所用到的用户文件

  4:mount //172.25.254.111/WESTOS /mnt -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser
## 以文件登陆,可以保护登陆的用户名和密码,但是普通用户依然可以读取超户挂载登陆的目录 

  6: su - student
     cd /mnt/
     ls   //无法查看 ,,因为student没有做smb认证,必须指定用户挂载通过smb认证才可以共享

  cifscreds --help          //查看相关命令
  7: cifscreds add -u lee 172.25.254.112      //需要通过smb认证,增加lee用户登陆认证
  8: cd /mnt/
     ls            //此时可以查看mnt下面的文件
     touch file  被拒绝
在服务端:
 chmod 777 /westos_smb/
在客户端:
  touch file   
   ll             ##建立文件的身份为lee的身份。
	


详解: credentials=filename :指定原始的认证
     credentials=/root/smbpass ##文件指定的用户名、密码,
     sec=ntlmssp               ##认证方式是ntlmssp;
     rpm -ql | grep samba      ##为查询方式
     multiuser                 ##为多用户挂载,关联方式和密码

1:yum install -y cifs-utils.x86_64 ##安装客户端samab认证程序,实现多用户挂载的服务
CIFS文件存储系统_第77张图片
2: vim /root/smbpassword ##smb挂载用户身份的一个认证文件,//根据挂载规则编写认证所需的文件
username=westos
password=lee
CIFS文件存储系统_第78张图片
在这里插入图片描述
3:chmod 600 /root/smbpasswd 修改权限只对所有人可读,保护登陆的用户密码
ls -l /root/smbpassword
mount //172.25.254.111/WESTOS /mnt -o credentials=/root/smbpasswd ##指定挂载所用到的用户文件
在这里插入图片描述
CIFS文件存储系统_第79张图片
在这里插入图片描述
4:mount //172.25.254.111/WESTOS /mnt -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser
## 以文件登陆,可以保护登陆的用户名和密码,但是普通用户依然可以读取超户挂载登陆的目录
在这里插入图片描述
CIFS文件存储系统_第80张图片
CIFS文件存储系统_第81张图片
6: su - student
cd /mnt/
ls //无法查看 ,,因为student没有做smb认证,必须指定用户挂载通过smb认证才可以共享
CIFS文件存储系统_第82张图片
cifscreds --help //查看相关命令
7: cifscreds add -u lee 172.25.254.112 //需要通过smb认证,增加lee用户登陆认证
8: cd /mnt/
ls //此时可以查看mnt下面的文件
touch file 被拒绝
CIFS文件存储系统_第83张图片
在服务端:
chmod 777 /westos_smb/
CIFS文件存储系统_第84张图片
在客户端:
touch file
ll ##建立文件的身份为lee的身份。
CIFS文件存储系统_第85张图片

你可能感兴趣的:(CIFS文件存储系统)