首先考虑一个问题,现在很多服务的流量都很大,由很多服务器一起承担。假如小绿在A服务器注册了,小红在B服务器注册了,小蓝在C服务器注册了。假如A服务器突然瘫痪了,其他的服务器也无法访问A的数据,那么小绿就无法登陆这个服务了,这种事情理论是不允许发生的。那么怎么解决呢?
我们考虑到存储分离的思想,操作系统和真正的存储不在一起,假如A服务器坏了,其他服务器还可以从存储里读到小绿的数据。提高数据交互的稳定性,实际中,后方的存储会把自己共享给前面的系统使用,看似在服务器中操作,其实数据存在在了后方的存储里。所以就要用到今天学习的网络共享系统samba。
1、samba基本信息与安装
samba可以支持windows和linux之间文件互相共享。他的主配置目录是/etc/samba
,主配置文件是/etc/smb.conf
。dnf install samba samba-common samba-client -y
安装相关软件,systemctl enable --now smb
开启samba服务,并设置火墙允许。
2、samba用户的建立
(1)smbpasswd -a lee
添加用户(用户必须是真实存在的)
(2)pdbedit -L
查看用户列表
(3)pdbedit -x lee
删除用户
3、windows共享文件时
当windows(ip是94)的文件想共享给linux文件时,首先windows用图形的方式开启共享,然后进入linux系统,安装dnf install samba-client -y
客户端,smbclient -L //172.25.254.94 -U administrator
列出94的administrator的共享目录,smbclient //172.25.254.94/westos -U administrator
访问共享的administrator的目录。
或者使用挂载的方式,mount //172.25.254.94/westos /mnt -o username=administrator,password=westos
,df查看挂载成功,进入mnt就可以对共享的westos目录读写。
4、linux共享文件时
当linux的文件想共享给linux时,我们假设从虚拟机a(ip88)共享文件给虚拟机b(ip99)。进入虚拟机a系统,首先mkdir /westos
创建准备共享的目录,创建目录中的测试文件touch testfile
,dnf install samba samba-common -y
安装samba服务,开启samba服务。
如果selinux开启的话,需要semanage fcontext -a -t samba_share_t '/westos(/.*)?'
设定目录及目录中的文件的安全上下文,restorecon -RvvF /westos
刷新刚设定的安全上下文。为了保险,chmod 777 /westos
。
配置samba的配置文件,vim /etc/samba/smb.conf
,如下图,设定共享的名称,说明,路径,权力可写。systemctl restart smb.service
重启samba服务
设置samba的用户,smbpasswd -a lee
,添加用户lee(用户必须是系统里存在的用户,可以useradd -s /sbin/nologin -M lee
专门给samba设置一个用户),pdbedit -L
查看samba用户的列表,pdbedit -x lee
可以删除lee这个用户。
现在在虚拟机b中进行测试,dnf install samba-client -y
安装samba客户端。smbclient -L //172.25.254.88-U lee
输入密码后,查看samba用户lee的共享的目录列表,smbclient //172.25.254.88/xixi -U lee
,输入密码后,用户lee进入共享的xixi目录,可以看到测试文件。
或者使用挂载的方式,mount //172.25.254.88/xixi /mnt -o username=lee,password=westos
,df查看挂载成功,进入mnt就可以对共享的xixi目录进行读写。
selinux对samba影响时,可以把自建的/westos
修改安全上下文,使其可以共享。但是系统目录比如/mnt
其他服务也要用,修改安全上下文为samba_share_t
不合适,所以让selinux把samba读写的权限直接全开放。bool值,setsebool -P samba_export_all_rw on
打开。
5、samba的访问控制
samba的访问控制,分为全局的和对于指定目录的,打开/etc/samba/smb.conf
配置文件
91行 hosts deny 172.25.254.99 全局黑名单,表示无法访问samba共享服务
hosts allow 172.25.254.99 全局白名单(白名单一开,只有白名单的用户可以,其他用![在这里插入图片描述](https://img-blog.csdnimg.cn/20210615104411849.png)
户都不可以)
如果在特定目录下写,只对该共享目录生效
注意,全局的访问控制大于指定目录的访问控制,也就是说如果全局拒绝,指定目录允许,结果是拒绝;如果全局允许,指定目录拒绝,结果是允许。
6、samba的常用配置参数
(1)writable = yes
所有用户可写
(2)write list = westos
指定用户westos可写
(3)write list = +westos/@westos
指定westos组可写
(4)valid users = lee
指定有效访问用户,类似白名单
(5)valid users = +lee/@lee
指定有效访问组
(6)browseable = no
在列表中隐藏共享目录,但是真正登陆时可以的使用。
(7)map to guest = bad user
允许匿名用户以bad user身份访问(写到全局设定中)
(8)guest ok = yes
允许匿名用户访问
(9)admin users = lee
指定此共享目录的超级用户身份是lee
测试,在配置文件中指定lee是超级用户身份,以lee的身份挂载共享目录,建立文件,查看原始被共享的目录,发现实际的拥有者是root,不是lee。