一.基本概念
CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,提供CIFS(Common Internet File System)协议,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
二.samba服务器的安装及访问调试
在服务端
yum install samba-client samba-common samba -y
systemctl stop firewalld
systemctl start smb
setsebool -P samba_enable_home_dirs on ##在selinux打开访问家目录bool开关
smbpasswd -a student ##设定密码,student必须为本机用户
pdbedit -L ##查看
pdbedit -x student ##删除
测试
在客户端
yum install samba-client -y
smbclient -L //172.25.254.220 -U student ##用smb用户显示内容
smbclient //172.25.254.220/student -U student ##登陆
三.samba共享目录
1.共享自建目录
vim /etc/samba/smb.conf ##主配置文件
[HELLO] ##共享名称
comment = samba dir ##共享说明
path = /samba ##共享目录路径
systemctl restart smb
semanage fcontext -a -t samba_share_t '/samba(/.*)?' ##共享自建立目录时需要修改的selinux属性,只针对自建目录
restorecon -FvvR /samba
测试
在客户端查看
2.共享系统原有文件
不能更改安全上下文,否则其他程序在使用系统原有文件时可能会产生问题,共享系统建立目录要修改的selinux属性,此方式针对所有目录,一旦开放,selinux不保护目录访问,可在smb配置文件中查看说明
vim /etc/samba/smb.conf
[mnt]
comment=samba dir
path=/mnt
system restart smb
setsebool -P samba_export_all_rw on ##可以读写
setsebool -P samba_export_all_ro on ##只读
测试
在客户端
smbclient //172.25.254.220/共享名称 -U student
四.samba共享目录的管理参数
vim /etc/samb/smb.conf
writable= yes ##可写,并且修改/jay的权限为777才可写
write list =student ##可写的用户
write list =+/@ student ##可写的组
admin users=student ##所设定共享的管理员
valid users = student ##指定用户可登陆
valid users = +/@studen ##指定组可登陆
browseable= no ##共享目录被隐藏
测试
在客户端
mount //172.25.254.220/hello /mnt -o username=student,password=123
五.访问控制
在服务端
vim /etc/samba/smb.conf
[HELLO]
comment = samba dir
path = /samba
hosts deny = 172.25.254.120 ##相当于黑名单,不允许120访问 allow则是白名单,也可以设置网段172.25.254. ,多个用户则用空格隔开
systemctl restart smb.service
测试
mount //172.25.254.120/hello /mnt -o username=student,password=123
利用挂载的方式访问
发现120不能挂载
六.samba的匿名访问
vim /etc/samba/smb.conf
workgroup = MYGROUP ##修改共享目录的domin,全局设定
125 map to guest = bad user ##准许通过匿名用户方式访问
[HELLO]
comment = samba dir
path = /samba
hosts allow = 172.25.254.120
guest ok = yes ##HELLO准许匿名用户访问
测试
mount //172.25.254.220/HELLO /mnt -o username=guest
七.samba多用户挂载
在客户端安装多用户挂载软件
yum install cifs-utils
vim /root/smbpassfile ##编写一个认证文件
username=smb用户
password=smb用户密码
chmod 600 /root/smbpassfile
测试
mount //172.25.254.220/HELLO /mnt -o credentials=/root/smbpassfile,multiuser,sec=ntlmssp
su - student ##与smb用户同名
ls /mnt
cifscreds add 172.25.254.220 ##添加认证
ls /mnt 查看成功
su - test ##与smb用户不同名
ls /mnt
cifscreds add 172.25.254.220
ls /mnt 依然不成功
cifscreds update -u test 172.25.254.220 ##更新认证信息
cifscreds clearall ##清除认证信息
cifscreds add -u student 172.25.254.220 ##成功,身份是student