CIFS概述:
1.cifs文件系统简介
CIFS(Common Internet File System)文件系统也称通用Internet文件系统,它使程序可以访问远程
Internet计算机上的文件并要求此计算机的服务。CIFS使用客户/服务器模式。客户程序请求远在服务器上的服务程序为它提供服务,
服务器获得请求并返回响应。CIFS是公开的开放的SMB协议版本。SMB协议现在是在局域网上用于服务器文件访问和打印的协议。
像SMB协议一样,CIFS在高层运行。可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
2.cifs文件系统功能
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码文件名
实验前提:
已经做好了samba共享 ,并且匿名用户无法访问samba服务,因为匿名用户无法访问才需要用户认证机制
1. 普通挂载方式
[root@client ~]# mount //172.25.254.134/linux /mnt -o username=westos,password=westos
[root@client ~]# df
@1.因为是以root用户身份挂载,故root用户对其挂载目录可以读写
[root@client ~]# cd /mnt
[root@client mnt]# ls
initial-setup-ks.cfg
[root@client mnt]# touch file1
[root@client mnt]# ls
file1 initial-setup-ks.cfg
[root@client mnt]# cd
@2.但发现非挂载用户对其目录也可以读写,这样很不合理!
[root@client ~]# su - student
Last login: Sat Nov 17 23:12:59 CST 2018 on :0
[student@client ~]$ cd /mnt
[student@client mnt]$ ls
file1 initial-setup-ks.cfg
[student@client mnt]$ touch file2
touch: cannot touch ‘file2’: Permission denied
[student@client mnt]$ ls
file1 file2 initial-setup-ks.cfg
[student@client mnt]$ exit
logout
@3.并且发现不论是挂载用户还是非挂载用户均用的是1001用户身份创建的文件,这样很不合理!
[root@client ~]# ls -l /mnt
total 4
-rw-r--r--. 1 1001 1001 0 Nov 25 09:28 file1
-rw-r--r--. 1 1001 1001 0 Nov 25 09:28 file2
-rwxr--r--. 1 nobody nobody 1841 Nov 24 17:21 initial-setup-ks.cfg
[root@client ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
@4.发现1001用户为服务端的samba用户:westos
[root@service ~]# pdbedit -L
student:1000:
westos:1001:
[root@service ~]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos),1000(student)
非挂载用户也可以访问挂载目录的内容信息,这说明通过普通挂载的方式来实现samba共享是很不安全的
2.使用cifs协议实现多用户挂载
(1).指定挂载用户认证(本次用户认证)
##1.卸载
[root@client ~]# umount /mnt
##2.安装cifs工具
[root@client ~]# yum install -y cifs-utils.x86_64
##看到samba客户端软件是4.2版本
[root@client ~]# rpm -qa | grep samba
##3.添加samba用户认证(首次认证); 认证用户任意,只要是samba用户均可
[root@client ~]# vim /root/smbpass
################
username=westos ##westos为samba用户
password=westos ##samba用户密码
##4.更改权限
[root@client ~]# chmod 600 /root/smbpass
[root@client ~]# ll /root/smbpass
-rw-------. 1 root root 32 Nov 25 09:43 /root/smbpass
##5.挂载
[root@client ~]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.134/linux /mnt
注解:
credentials=/root/smbpass ##用于指定挂载用户认证信息文件
multiuser ##表示使用多用户挂载
sec=ntlmssp ##指定认证方式(kernel3.8之后是默认选项)
[root@client ~]# df
测试:
##此时非挂载用户(即未认证的用户)对挂载目录便没有访问权限
[root@client ~]# su - student
Last login: Sun Nov 25 10:09:31 CST 2018 on pts/0
[student@client ~]$ cd /mnt
[student@client mnt]$ ls
ls: reading directory .: Permission denied
非挂载用户可以通过samba用户认证实现访问挂载目录中的文件资源
##1.添加samba用户
[root@service ~]# pdbedit -L
student:1000:student
westos:1001:
[root@service ~]# useradd lee
##添加samb用户
[root@service ~]# smbpasswd -a lee
New SMB password:
Retype new SMB password:
Added user lee.
[root@service ~]# pdbedit -L
student:1000:student
westos:1001:
lee:1002:
[root@service ~]# id lee
uid=1002(lee) gid=1002(lee) groups=1002(lee)
##2.添加samba用户认证; student用户通过samba用户:lee登陆认证,(此处的认证用户任意,只要是samba用户即可)
[student@client mnt]$ cifscreds add -u lee 172.25.254.134
Password:
测试:
##发现以student用户身份建立的文件实质上是以samba用户:lee身份建立的
[student@client mnt]$ ls
file1 file2 initial-setup-ks.cfg rootfile
[student@client mnt]$ touch studentfile
[student@client mnt]$ ll