1.存储分离
CIFS文件的储存
SMB文件共享 : Windows里叫SMB------- Linux里叫CIFS
用Internet 文件系统(CIFS)也称为服务器信,是适用于MicrosoftWindows服务器和客户端的标准文件和打印机共享系统息块(SMB)
Samba 服务可用于将Linux文件系统作为CIFS/SMB 网络文件共享进行共享,并将Linux打印机作为CIFS/SMB 打印机共享
Samba 服务的组成部分
软件包:
Samba-common Samba 的支持文件
Samba-client 客户端应用程序
Samba 服务器应用程序
服务名称:smb nmb
服务端口: 通常使用 TCP/445 进行所有连接。
还使用UDP137、UDP138和TCP/139 进行向后兼容
主配置文件: /etc/samba/smb.conf
samba 用户必须是本地存在的用户
SMB 密码和系统密码无关
SMB 默认共享的都是自己的家目录
###################################
2.实现存储分离:
在服务器:
yum install samba-client.x86_64 samba-common.x86_64 samba.x86_64 -y
安装samba的客户端和命令,服务
systemctl start smb 打开服务
netstat -antlupe | grep smb 查看smb的端口
firewall-cmd --list-all 查看火墙的服务列表
firewall-cmd --permanent -add-service=samba 将samba服务添加到火墙
firewall-cmd --permanent -add-service=samba-client 将samba的客户端添加到火墙
firewall-cmd --reload 重启火墙
firewall-cmd --list-all
pdbedit -L 查看所有的共享用户
useradd weswtos 添加本地用户
useradd CC 添加本地用户
smbpasswd -a westos 更改用户westos共享的smb密码,和用户系统密码无关
smbpasswd -a CC 更改用户CC共享的smb密码,与用户系统密码无关
pdbedit -L
在客户端:
yum insatll samba-client -y
smbclient -L //172.25.254.203 匿名登陆查看可使用的共享目录(ip地址为服务器的)
登陆时会有提示需要输入超户密码,因为没有设置,所以直接回车即可
smbclient -L //172.25.254.203 -U CC 输入密码实名登陆查看可使用的共享目录
smbclient //172.25.254.203/CC -U CC 输入密码实名登陆共享目录CC
在共享目录中只能上传自己登陆时所在目录的内容。
ls 查看共享目录内容
!ls 查看可上传内容
quit退出
除了smbclient登陆操作,还可以使用挂载
mount //172.25.254.203/CC /mnt/ -o username=CC,password=westos
df 查看挂载
所有操作都作用于服务器的/home/CC
例:在客户端,挂载到 /mnt 后
cd /mnt
touch file1{1..3}
ls 挂载后进入 /mnt 创建三个文件,并查看是否创建成功
cd -
umount /mnt 切换到其他目录,卸载挂载到/mnt的共享目录
df
ls /mnt 查看是否卸载并查看/mnt是否有刚刚创建的三个文件
在服务器
ls /home/CC
####################################################
3.对配置文件的修改
在服务器:
vim /etc/samba/smb.conf
89 workgroup = WESTOS 修改smb的域
96 hosts allow = 172.25.254.
修改黑白名单,允许某个单独ip,或某网段可以使用smb访问
hosts deny =172.25.254. 拒绝某ip或某网段使用smb访问
注释用# 或 ;
例:将白名单设置为172.25.254.103 允许此ip可以使用smb访问
重启服务生效后分别使用172.25.254. 103 和 172.25.254.3 进行访问
先以172.25.254.103 访问
然后以172.25.254.3进行访问
##################################################
4.指定新建目录的共享:
首先打开selinux
getenforce ---> enforcing
在服务器编辑配置文件
vim /etc/samba/smb.conf
在最后一行添加
【haha】 指定共享出去的目录名称,可任意取
comment = Share Directory 解释目录的备注信息,可任意写
path = /westos_smb 指定共享的目录路径,必须真实存在
writable = yes smb用户对共享出去的目录可写
mkdir /westos_smb
touch file{1..3}
在客户端
smbclient -L //172.25.254.203 -U westos
查看刚刚设置的共享目录有没有出现在列表内
smbclient //172.25.254.203/haha -U westos
登陆到共享目录haha
ls查看内容
会发现查看不到
在服务器 setenforce 0 关闭selinux
在客户端重新ls查看内容,可以查看
说明之前是服务器的selinux打开着,安全上下文不匹配,smb服务读不到
如果不关闭selinux,则需要在服务器修改安全上下文
semanage fcontext -a -t samba_share_t '/westos_smb(/.*?)?' 修改安全上下文
restorecon -RvvF /westos_smb 重新加载安全上下文
修改安全上下文后,ls可再次看到目录内容
在客户端登陆进入/westos_smb 对其内内容是否可写
进行put上传或删除文件操作
无法上传和删除,没有写的权限
因为在服务器上目录/westos_smb 的权限对登陆用户westos没有写的权限
需要在服务器上添加给westos用户写的权限
setfacl -m u:westos:rwx /westos_smb
在客户端重新登陆 /westos_smb 目录 并进行读写操作
#######################
5.共享系统级文件
例:共享 /mnt 目录
编辑配置文件:
vim /etc/samba/smb.conf
在最后添加 【mnt】
comment = Share system mnt direcotry
path = /mnt
writable = yes
systemctl restart smb.service
ll -Zd /mnt 可以看出安全上下文与smb服务不匹配
系统级文件不能直接修改其安全上下文,因为系统级文件可能不止smb一个服务会读取,如果修改会影响其他。只能修改smb 服务在selinux中的安全级别
getsebool -a | grep samba 过滤出selinux中 smb的权限
setsebool -P samba_export_all_rw 1 | on 永久打开smb服务 在selinux中的读写服务 reboot不影响
打开这个以后,smb服务就不受selinux安全上下文的管制,查看其他共享系统级目录或自建目录就不需要修改安全上下文
#####################################
6.smb配置文件参数
/etc/samba/smb.conf
browseable = yes | no
smb共享目录的隐藏,-L查看时在列表隐藏,但可以登陆进入
在添加参数之前可以 -L 看到列表有mnt
添加参数后,列表没有显示 mnt ,但是可以登陆进入mnt目录
write list 可写的列表 后面接用户,只对该用户可写 + |@ 是对其组成员可写
添加参数前,CC 用户和 westos用户分别登陆,都可写
添加参数后,CC 用户和 westos 用户分别登陆,CC 不可写,westos可写
以用户CC挂载使用
以用户westos挂载使用
valid users 后面接用户,该目录只能由该用户登陆 + |@ 只对其组成员可登陆
添加参数前俩个用户都能挂载,添加参数后CC 可以登陆挂载,westos不可以
匿名用户:
126 map to guest = bad user 把所有没有用户身份的访问都定义成guest
共享目录配置文件添加 guest ok = yes
smb共享目录下配置文件
admin users = westos
表示以westos身份登陆smb共享目录的时候拥有超户的身份,组身份不变
在服务器 ll -d /mnt 查看目录权限只能root用户有w权限
修改参数后添加参数后,以westos身份挂载登陆,创建文件并查看其所有人及所有组
###########################################################
7.smb服务的加密 谁挂载谁能用
在客户端:
yum install cifs-utils -y
vim /root/smbpasswd
username=westos
password=westos
chmod 600 /root/smbpasswd 修改权限只对所有人可读,保护登陆的用户密码
mount //172.25.254.203/haha /mnt -o credentials=/root/smbpasswd
以文件登陆,可以保护登陆的用户名和密码,但是普通用户依然可以读取超户挂载登陆的目录
mount //172.25.254.203/haha /mnt -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser
以文件挂载登陆,谁登陆谁能用
如果想要指定用户可用
cifscreds add -u student 172.25.254.203 增加student用户的认证