server虚拟机
1.设置IP信息( 172.25.254.117)
2.配置yum源
3.修改服务端主机名server
desktop虚拟机
1.设置IP信息
172.25.254.217
2.配置yum源
3.修改服务端主机名desktop
Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现.Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,提供CIFS(Common Internet File System)协议,由服务器及客户端程序构成.
应用场景:
支付宝用户将个人信息上传,当服务器存储损坏,用户信息丢失了,如何处理?
支付宝用户注册时,注册的那台服务器挂掉,如何处理?
支付宝用户支付时,服务器挂掉会显示支付宝余额不足,这是不允许的,如何处理?
支付宝会用很多台服务器来实现用户注册,防止某台服务器挂掉,影响用户注册。系统和存储放在一块,对外开放的系统安全性要差。所以有一台不共享的存储设备,这台主机是不对外开放的,所有用户信息都放在这台存储设备中(存储分离的手段),当有一台主机损坏时,用户可以通过其他主机来访问存储设备中的用户信息。存储分离-数据被访问更加高效。
CIFS(Common Internet File System)是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现
1.在服务端安装samba samba-common samba-client
yum install samba samba-common samba-client -y ##安装smb服务
systemctl start smb ##开启smb服务
firewall-cmd --list-all ##查看火墙策略
systemctl stop firewalld ##关闭火墙
systemctl disable firewalld ##火墙开机不自启
3设置内核级火墙为警告模式(情况1)
getenforce ##查看内核级火墙状态
Enforcing ##如果显示为Enforcing
setenforce 0 ##设置内核级火墙为警告模式
4增加smb用户,增加的smb用户必须是系统中已经存在的用户
smbpasswd -a student ##添加smb登陆用户student
smbpasswd -a westos ##添加smb登陆用户westos,因为westos用户不存在,显示添加失败
useradd westos ##创建用户westos
smbpasswd -a westos ##添加smb登陆用户westo
pdbedit -L ##显示系统中的smb用户
pdbedit -x student ##删除某一指定smb用户
ls -ld /home/westos/ ##查看共享目录/home/westos/的权限
cd /home/westos
touch westosfile ##在/home/westos/创建westosfile
yum install samba-client -y ##安装smb客户端
2.匿名用户在不知道root密码的前提下查看不了内容
smbclient -L //172.25.254.117 ##不知道root密码。查看不了里边的内容
smbclient -L //172.25.254.117 -U westos ##用smb用户westos身份显示内容
smbclient //172.25.254.117/westos ##匿名用户访问共享服务器的文件共享地址
smbclient //172.25.254.117/westos -U westos ##以westos身份访问共享服务器的文件共享地址
客户端:
mount -o username=westos,password=westos //172.25.254.117/westos /mnt ##挂载
cd /mnt
touch file{1..5} ##创建五个file文件
服务端可以看到这五个文件
1.服务端设置内核级火墙为强制模式模式(情况2)
getenforce ##查看内核级火墙状态
Permissive ##之前设置的是警告模式
setenforce 1 ##设置内核级火墙为强制模式
smbclient //172.25.254.117/westos -U westos
输入密码后,查看内容,我们发现系统提示访问被拒绝
在服务端查看samba_enable_home_dirs的sebool值,并将其打开。
getsebool -a | grep samba ##查看sebool值
setsebool -P samba_enable_home_dirs on ##打开开启selinux上控制samba的接口(-P表示永久设定)
smbclient //172.25.254.117/westos -U westos
rpm -qc samba-common
vim /etc/samba/smb.conf
89行 workgroup = WESTOS
systemctl restart smb.service ##重启服务可以不做
smbclient //172.25.254.117/westos -U westos
域名由MYGROUP修改成WESTOS
3.smb访问允许(白名单)
vim /etc/samba/smb.conf
96行 hosts allow =172.25.254.217 ##smb只允许IP为172.25.254.217虚拟机访问
smbclient //172.25.254.117/westos -U westos ##IP为172.25.254.117虚拟机,无法访问
smbclient //172.25.254.117/westos -U westos ##只有IP为172.25.254.217虚拟机可以访问
vim /etc/samba/smb.conf
97行 hosts deny =172.25.254.117 ##拒绝172.25.25.254.117虚拟机smb访问
systemctl restart smb.service
黑名单上的用户无法访问:
smbclient //172.25.254.117/westos -U westos ##172.25.25.254.117虚拟机smb访问共享目录被拒绝
(一) smb上共享自己建立的目录
1.建立目录
mkdir /westos
2.修改smb的主配置文件
vim /etc/samba/smb.conf
[linux] ##用户可以看到的共享名称
comment = westos dir share ##用户可以看到的共享描述
path = /westos ##共享目录的绝对路径
systemctl restart smb.service
ls -Zd /westos/ ##查看安全上下文
semanage fcontext -a -t samba_share_t '/westos(/.*)?' ##修改安全上下文
restorecon -RvvF /westos/
smbclient //172.25.254.117/linux -U westos
(二) smb上共享系统目录
1.修改smb的主配置文件
vim /etc/samba/smb.conf
[mnt] ##共享的系统目录
comment =mnt directory ##共享系统目录的描述
path= /mnt ##共享系统目录的绝对路径
systemctl restart smb.service
3.开放权限使得不再对smb读服务有任何限制
前面提到自己建立的目录可以通过修改安全上下文的方式,系统目录也可以通过修改安全上下文使得smb服务可以用。但是系统目录/mnt不是只有smb服务用,如果修改了安全上下文,修改后别的服务用不了,显然是不合理的。
虽然开放权限使得所有人对smb读服务没有任何限制对于系统来说不安全,但是没有办法,满足客户需求,必须怎么做!
getsebool -a | grep samba
setsebool -P samba_export_all_ro on ##开放权限
smbclient //172.25.254.117/mnt -U westos
1.所用用户都可以写
vim /etc/samba/smb.conf
writeable = yes
systemctl restart smb.service
vim /etc/samba/smb.conf
; writeable = yes ##屏蔽掉对所有人可写
write list =@westos 对于组是westos的用户可以写
systemctl restart smb.service
usermod -G westos student ##用户student附加组是westos
vim /etc/samba/smb.conf
browseable = no ##隐藏
systemctl restart smb.service
4.设定指定用户为root用户,指定用户上传的文件的拥有人是root
vim /etc/samba/smb.conf
admin users= westos ##创建的用户是以root的身份,普通用户上传的文件的拥有人是root
systemctl restart smb.service
westos用户上传的文件的拥有人是root
5.匿名用户上传的文件
vim /etc/samba/smb.conf
126 map to guest = bad user
330 guest ok =yes
systemctl restart smb.service
在配置文件设置匿名用户不允许访问的前提下,客户端root用户以服务端westos身份挂载访问共享目录
切换到客户端student用户,竟然可以访问共享目录和创建目录。显然是不安全不合理的
客户端设置smb安全锁,使得客户端限制没有通过smb认证的客户不可以用用户身份.
1.客户端安装认证插件
yum install cifs-utils -y ##安装认证插件
man mount.cifs
rpm -qa | grep samba
vim /root/smbpass
username=westos
password=westos
chmod 600 /root/smbpass ##为了安全设置认证文件权限为600
4.挂载
mount -o credentials=/rootsmbpass,sec=ntlmssp,multiuser //172.25.254.117/linux /mnt/
cifscreds add [-u username] [-d] ##添加认证用户
cifscreds clear [-u username] [-d] ##清除指定已认证的用户
cifscreds clearall ##清除所有认证用户
cifscreds update [-u username] [-d] ##更新认证信息