CIFS (Common Internet File System)
通用Internet文件系统这里写链接内容
在windows主机之间进行网络文件共享是通过使用微软公司自己的CIFS服务实现的。
功能
CIFS 可以使您达到以下功能:
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码(Unicode)文件名:文件名可以使用任何字符集,而不局限于为英语或西欧语言设计的字符集。
优点
一般来说,CIFS使用户得到比FTP更好的对文件的控制。它提供潜在的更直接地服务器程序接口,这比使用HTTP协议的浏览器更好。CIFS最典型的应用是windows用户能够从“网上邻居”中找到网络中的其他主机并访问其中的共享文件夹。
CIFS 是开放的标准而且已经被作为Internet应用程序标准被提交到IETF。
用于Java与DCom通信的开源第三方库J-Interop就是利用CIFS协议实现的。
CIFS和NFS的对比
(1)CIFS面向网络连接的共享协议,对网络传输的可靠性要求高,常使用TCP/IP;NFS是独立于传输的,可使用TCP或UDP;
(2)NFS缺点之一,是要求client必须安装专用软件;而CIFS集成在OS 内部,无需额外添加软件;
(3)NFS属无状态协议,而CIFS属有状态协议;NFS受故障影响小,可以自恢复交互过程,CIFS不行;从传输效率上看,CIFS优于NFS,没用太多冗余信息传送;
(4)两协议都需要文件格式转换,NFS保留了unix的文件格式特性,如所有人、组等等;CIFS则完全按照win的风格来作。
使用
在实际应用中,当linux需要挂载window上的目录上,大家首先想到的是samba和VM tools等工具,其实cifs是最简单用法,它不需要你安装任何工具,是windows和linux自带功能
samba,基于smb协议并由服务端和客户端组成的开元文件共享软件,实现了linux和windows之间的文件共享。
一.samba的安装启用
若出现错误:
protocol negotiation failed: NT_STATUS_IO_TIME
解决:
edit /etc/hosts and add my IP and my hostaname
1.实验环境:samba服务端(172.25.254.210),客户端(172.25.254.110),配置好yum源。
**服务端:
yum search samba ##搜索samba服务安装包
yum install samba samba-common samba-client -y ##安装这三个软件包
systemctl start smb.service #启动samba服务
systemctl stop firewalld.service #关闭防火墙
samba的基本配置信息:
端口:139/tcp 139/udp 445/tcp 445/udp
主配置文件:/etc/samba/smb.conf
主配主文件基本配置信息
vim /etc/samba/smb.conf
89 workgroup = MYGROUP ## 工作组的设定
90 server string = Samba Server Version %v ##全局共享信息
95 ; hosts allow = 127. 192.168.12. 192.168.13. ## 客户端白名单设置说明信息
可添加hosts deny = 172.25.254.(*) ##设置客户端黑名单
设置主配置文件,设置工作组为WESTOS,全局共享说明hello linux
2.客户端设置
安装samba-client
yum install samba-client.x86_64 -y
smbclient -L //172.25.254.210 测试
二.本地用户的建立及访问
1.在服务端(samba必须是本地用户)
useradd westos
useradd lee
smbpasswd -a westos
smbpasswd -a lee
pdbedit -L 列出samba用户
pdbedit -x lee 删除samba用户
setsebool -P samba_enable_home_dirs on
客户端测试
smbclient -L //172.25.254.109 -U westos
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Hello World)
westos Disk Home Directories
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
2. 进入服务端家目录
smbclient //172.25.254.109/westos -U westos
服务端进入/home/westos,新建文件westos1~3
客户端再次测试
samba交互界面无法使用大多数命令,挂载加目录到指定位置即可,samba交互界面可查看能使用的所有命令
3.挂载服务端家目录
(使共享文件系统和本机文件系统环境一致,命令通用,在客户端mnt下创建的文件会同步到服务端/home/westos下)
mount //172.25.254.109/westos /mnt/ -o username=westos,password=westos
进入mnt,可执行多数命令,并且同步到服务端/home/westos/
服务端
4. 永久挂载服务端家目录
vim /etc/fstab
//172.25.254.109/westos /mnt/ cifs defaults,username=westos,password=westos 0 0
完成后客户端操作同步到服务端/home/westos/
客户端
服务端
三.自定义共享目录
- 当目录是用户建立时,安全上下文存在问题,selinux处于enforcing状态,新建目录安全上下文和samba服务目录安全上下文不一致,需要修改新建目录(永久)安全上下文,并刷新及目录下的一切
服务端
mkdir /sambardir
semanage fcontext -a -t samba_share_t '/sambardir(/.*)?'
restorecon -FvvR /sambardir/
编辑主配置文件
vim /etc/samba/smb.conf
[DATA]
comment = hello world
path =/sambardir
完成后重启服务,
确保实验效果可往/sambadir里边新建文件
客户端实验:
2.当目录是系统目录时(不能修改安全上下文,否则该系统目录对于其他服务可能无法使用,因此需要将权限全部打开)
setsebool -P samba_export_all_ro on
vim /etc/samba/smb.conf
[SYSTEMDATA]
common = hello
path =/mnt
客户端 测试
smclient -L //172.25.254.109 -U westos
smclient //172.25.254.109/DATA -U westos
为实验效果服务端/mnt下新建文件1~3
客户端再次测试
3. 匿名用户登录权限开放
guest ok =yes 匿名用户可以登录(注意位置局部控制与全局控制)
map to guest = bad user 匿名用户可以使用guest名称挂载(全局控制)
实验客户端
smbclient //172.25.254.210/DATA
四.权限控制
1.服务端对于指定目录/ sambadir ,用户可写权限,可读权限,可进入该目录权限
chmod 777 /sambadir
同时该目录安全上下文要求具有写权限
setsebool -P samba_export_all_rw on
2.服务端编辑主配置文件,完成后重启smd服务
vim /etc/samba/smb.conf
writable =yes 开启写权力
客户端测试
3.只对特定用户开反复写权限
vim /etc/samba/smb.conf
writable =no 关闭写权力
write list =westos 写权力仅仅对westos用户开放
完成后重启服务,客户端测试,对于westos用户是可写的,对于lee无法写
4.对于特定组赋予写权限
vim /etc/samba/smb.conf
writable = no 关闭写权力
write list =+|@westos 写权力对westos组用户开放
服务端将lee纳入westos组,客户端测试
服务端:
客户端测试:
同步服务端,查看属性
5.设定westos用户为当前共享的root
vim /etc/samba/smb.conf
# write list =+westos 写权力对westos组用户开放
admin users = westos 设定westos用户为当前共享的root
客户端测试:1002为westos 所有人为root,
6.设定有效用户
vim /etc/samba/smb.conf
writable =yes 开启写权力
# write list =+westos #写权力对westos组用户开放
# admin users = westos #设定westos用户为当前共享的root
valid users = lee 设定当前共享的有效用户(是否能进去)
客户端测试
服务端将westos列为有效用户
客户端再次测试
7.browseable = yes 当前共享是否隐藏
vim /etc/samba/smb.conf
writable =yes 开启写权力
# write list =+westos #写权力对westos组用户开放
# admin users = westos #设定westos用户为当前共享的root
valid users = lee 设定当前共享的有效用户(是否能进去)
browseable = yes 当前共享是否隐藏
服务端设置隐藏,客户端查看
服务端设置不隐藏,客户端查看
五.samba的多用户挂载
客户端
yum install cifs-utils -y
vim /root/sambapasswd
username=westos
password=westos
chmod 600 /root/sambapasswd
mount -o credentials=/root/sambapasswd,sec=ntlmssp,multiuser //172.25.254.210/DATA /mnt
## credentials=/root/sambapasswd 挂载时的用户认证
## sec=ntlmssp 支持其他用户认证
## multiuser 其他用户认证方式
客户端测试
测试
ls /mnt
su - student
ls /mnt
ls: cannot access /mnt: Permission denied
在student用户下
cifscreds add -u westos 172.25.254.210
ls /mnt
touch /mnt/westos
可以看到建立/mnt/westos所用到的用户身份为samba用户westos
实验之前:服务端清理环境
客户端:
**安装cifs-utils
新建认证文件,改权限
挂载实验