Samba共享服务搭建
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
文章目录
前言:
一、配置Samba共享目录
Samba账号管理
lab设计(一)
lab设计(二)
SELinux预设策略的开关控制(布尔值):
二、访问Samba共享目录
lab(三)
三、multiuser多用户访问支持
lab(四)
前言:
Samba 是 Linux/Unix 系统中用来实现 文件共享和打印共享 的服务,它能让 Linux 和 Windows 像在同一个局域网里一样互相访问共享目录。 下面给你讲清楚最实用的内容:
一、Samba 的作用
✔ Linux ↔ Windows 之间共享文件/文件夹
✔ Linux 服务器作为局域网共享中心
✔ Windows 用户可以像访问共享盘一样访问 Linux
✔ 可设置账户验证、权限控制
一、配置Samba共享目录
发布Samba共享目录
用途:为客户机提供共享文件夹、共享打印机资源
软件包(S):samba
软件包(C):samba-client、cifs-utils
协议和端口:
CIFS,Common Internet File System,通用网际文件系统 —— TCP 445
SMB,Server Message Block,服务消息块 —— TCP 139
系统服务:smb
关于配置文件 /etc/samba/smb.conf: 【man smb.conf】
[global]
共享服务器的全局设置。。。
workgroup = 工作组名
[homes]
本地用户家目录的隐藏共享。。。
browseable = no
[printers]
打印机共享设置
[printer$]
打印机共享设置
[共享名]
配置语句 = 值
path = 文件夹路径
comment = 说明文字
browseable = yes|no
public = no|yes
read only = yes|no
valid users = 用户1 用户2 @组名3 .. ..
write list = 用户1 用户2 @组名3 .. ..
hosts allow = 客户机1 网段1 .. ..
hosts deny = 客户机1 网段1 .. ..
Samba账号管理
系统账号:/etc/passwd记录的用户账号
共享账号:存放在独立的账号数据库文件里的用户账号,必须有同名的系统账号(方便给权限)
pdbedit -a 用户名 //启用xx用户
pdbedit -L [用户名] //查看/列出xx用户
pdbedit -x 用户名 //删除xx用户
smbpasswd 用户名 //为xx用户设置密码
lab设计(一)
在servera上配置Samba共享,将目录/public3共享为common
!!!! smb服务器属于TEDU工作组
!!!! 只允许lab.example.com域的客户端访问common共享
!!!! 用户zhsan可以使用redhat密码,以只读权限访问common共享
!!!! 禁止其他用户访问此共享
!!!! 为SMB通信提供加密支持,支持的最低协议版本是SMB3
1)装包
[root@servera ~]# dnf -y install samba //装包
2)配置资源
[root@servera ~]# useradd -r -s /sbin/nologin zhsan //准备同名的系统用户
[root@servera ~]# pdbedit -a zhsan //启用xx共享用户(必须先有同名的系统用户),
new password: //设置共享访问密码(比如redhat)
retype new password: //重复一次共享访问密码
[root@servera ~]# mkdir /public3 //准备目录
[root@servera ~]# vim /etc/samba/smb.conf //配置共享
[global]
workgroup = STAFF //设置工作组名
security = user //设置安全级别(share、user、server、domain)
passdb backend = tdbsam //账号数据库类型
smb encrypt = required //要求访问共享时采用加密方式
server min protocol = SMB3 //设置服务端支持的最低版本为SMB3
.. ..
[common]
path = /public3
valid users = zhsan
hosts allow = 172.25.250.0/24 //只允许xx客户机访问(推荐使用网段地址,对应lab.example.com 域的)
3)起服务
[root@servera ~]# firewall-cmd --permanent --add-service=samba
[root@servera ~]# firewall-cmd --reload
[root@servera ~]# systemctl enable smb --now
4)检查本机的共享配置,确认smb服务在运行
[root@servera ~]# systemctl status smb //确认服务已经是running运行状态
.. ..
[root@servera ~]# testparm //查看配置内容
.. ..
lab设计(二)
在servera上配置Samba共享,将目录/public4共享为data
!!!! 只有lab.example.com域的客户端可以访问data共享
!!!! 用户lisi可以只读访问data共享,密码为bluehat
!!!! 用户wangwu可以读写访问data共享,密码为whitehat
1)配置资源
[root@servera ~]# useradd -r -s /sbin/nologin lisi //准备用户
[root@servera ~]# useradd -r -s /sbin/nologin wangwu //准备用户
[root@servera ~]# pdbedit -a lisi //启用lisi用户,根据提示设置共享访问密码(比如bluehat)
[root@servera ~]# pdbedit -a wangwu //启用wangwu用户,根据提示设置共享访问密码(比如whitehat)
[root@servera ~]# mkdir /public4 //准备目录
[root@servera ~]# chown -R wangwu /public4 //确保wangwu有写入权限
[root@servera ~]# vim /etc/samba/smb.conf //配置共享
.. ..
[data]
path = /public4
valid users = lisi, wangwu //只允许lisi、wangwu作为有效用户
write list = wangwu //只允许wangwu有写入权限
hosts allow = 172.25.250.0/24 //只允许xx客户机访问(推荐使用网段地址,对应lab.example.com 域的)
2)重起服务
[root@servera ~]# systemctl restart smb
SELinux预设策略的开关控制(布尔值):
# getsebool -a | grep samba_ex
# setsebool -P samba_export_all_rw=on
Samba共享目录的SELinux标签:
# semanage fcontext -a -t samba_share_t '/smbshare(/.*)?'
# ls -ldZ /smbshare/
drwxrwsr-x. 2 root marketing unconfined_u:object_r:default_t:s0 6 Sep 17 14:28 /smbshare/
++ 启用SELinux的情况下,目录安全策略的调整:
[root@servera ~]# semanage fcontext -a -t samba_share_t '/public3(/.*)?'
[root@servera ~]# semanage fcontext -a -t samba_share_t '/public4(/.*)?'
[root@servera ~]# restorecon -Rv /public3 /public4
二、访问Samba共享目录
1. 测试Samba共享资源(需要软件包samba-client)
!!!! 列出目标主机提供了哪些Samba共享
# smbclient -U 用户名 -L 服务器地址
比如:
[root@serverb ~]# smbclient -U zhsan -L //servera
Enter SAMBA\zhsan's password: 验证密码
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
common Disk
data Disk
IPC$ IPC IPC Service (Samba 4.11.2)
zhsan Disk Home Directories
SMB1 disabled -- no workgroup available
!!!! 连接目标主机的某个Samba共享目录
# smbclient -U 用户名 //服务器地址/共享名 【需要密码】
比如:
[root@serverb ~]# smbclient -U zhsan //servera/common
Enter SAMBA\zhsan's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Fri Sep 17 14:28:04 2021
.. D 0 Fri Sep 17 15:11:47 2021
49087060 blocks of size 1024. 47202756 blocks available
smb: \> quit
2. 挂载Samba共享资源(需要软件包cifs-utils)
!!!! 临时将Samba共享目录挂载到本地的目录
# mount //服务器地址/共享名 挂载点目录
!!!! 配置Samba共享目录的开机挂载
# vim /etc/fstab
//服务器地址/共享名 挂载点目录 cifs _netdev,username=用户名,password=密码 0 0
#### 为了提高安全性,也可以把账号密码拿出来放到独立的文件,
#### 然后在/etc/fstab文件中通过credentials=/etc/samba/creds.txt方式调用
比如:
[root@serverb ~]# vim /etc/samba/creds.txt
username=zhsan
password=redhat
[root@serverb ~]# chmod 600 /etc/samba/creds.txt
[root@serverb ~]# vim /etc/fstab
//servera.lab.example.com/common /mnt/smbdir cifs _netdev,credentials=/etc/samba/creds.txt 0 0
[root@serverb ~]#
lab(三)
在serverb上访问Samba共享
!!!! 在serverb上,检查servera上提供了哪些Samba共享目录
!!!! 以用户zhsan的凭据永久挂载servera提供的common共享,挂载到serverb的/mnt/smbdir目录
1)装包
[root@serverb ~]# dnf -y install samba-client cifs-utils
2)测试Samba资源(按需,可选)
[root@serverb ~]# smbclient -U zhsan -L //servera //列出共享资源项
Enter SAMBA\zhsan's password: //验证密码
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
common Disk
data Disk
.. ..
[root@serverb ~]# smbclient -U zhsan //servera/common //连接common共享
Enter SAMBA\zhsan's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Fri Sep 17 16:32:11 2021
.. D 0 Fri Sep 17 15:11:47 2021
a.txt N 5 Fri Sep 17 16:32:19 2021
49087060 blocks of size 1024. 47220228 blocks available
smb: \> quit
3)配置挂载
[root@serverb ~]# mkdir /mnt/smbdir
[root@serverb ~]# vim /etc/fstab
//servera.lab.example.com/common /mnt/smbdir cifs _netdev,username=zhsan,password=redhat 0 0
.. ..
[root@serverb ~]#mount -a
[root@serverb ~]# df -hT /mnt/smbdir/ //确认结果
Filesystem Type Size Used Avail Use% Mounted on
//servera.lab.example.com/common cifs 47G 1.8G 46G 4% /mnt/smbdir
三、multiuser多用户访问支持
#### 客户端multiuser挂载技术
!!!! 在客户端访问Samba共享的挂载点目录时,可以切换不同的共享账号/密码,以便获得不同的权限
!!!! 切换用户不需要重新挂载共享资源
!!!! 客户机的root用户对多用户挂载点有读权限
!!!! 客户机的普通用户对多用户挂载点无权限
!!!! 客户机的普通用户设置了Samba访问凭据以后,拥有对应共享用户的权限
#### 挂载参数:
username=共享用户名,password=密码,multiuser,sec=ntlmssp,_netdev
#### 普通用户在访问Samba挂载点时,临时切换用户的方法
$ cifscreds add -u 共享用户名 服务器地址
....Password:输入正确密码
lab(四)
以multiuser方式挂载、访问Samba共享
!!!! 以用户lisi的凭据永久挂载servera提供的data共享,挂载到serverb的/mnt/smbdata目录
!!!! 在serverb上,任何普通用户(baicai)采用lisi的凭据可以获取/mnt/smbdata这个目录的读取权限
!!!! 在serverb上,任何普通用户(luobo)采用wangwu的凭据可以获取/mnt/smbdata这个目录的写入权限
1)配置开机挂载
[root@serverb ~]# mkdir /mnt/smbdata
[root@serverb ~]# vim /etc/fstab //以低权限用户lisi挂载
//servera.lab.example.com/public4 /mnt/smbdata cifs _netdev,username=lisi,password=bluehat,multiuser,sec=ntlmssp 0 0
.. ..
[root@serverb ~]# mount -a
2)测试多用户访问
[root@serverb ~]# useradd luobo //在客户机上创建一个普通用户
[root@serverb ~]# su - daluobo
[luobo@serverb ~]$ cifscreds add -u wangwu servera.lab.example.com //设置访问凭据(使用wangwu验证)
Password: 共享账号wangwu的密码
[luobo@serverb ~]$ touch /mnt/smbdata/a.txt //可以写入文档(有写权限)
[luobo@serverb ~]$ ls -lh /mnt/smbdata/ //可以列出资源(有读权限)
.. ..
[root@serverb ~]# useradd baicai //在客户机上换一个其他的普通用户
[root@serverb ~]# su - baicai
[baicai@serverb ~]$ cifscreds add -u lisi servera.lab.example.com //设置访问凭据(使用lisi验证)
Password: 共享账号lisi的密码
[baicai@serverb ~]$ touch /mnt/smbdata/a.txt //不可以写入文档(没有写权限)
[baicai@serverb ~]$ ls -lh /mnt/smbdata/ //可以列出资源(有读权限)