1.Samba基本概述2.Samba服务配置3.Win挂载Samba4.Linux挂载Samba5.SMB多用户挂载
1.Samba基本概述
Server Message Block (SMB)是Windows服务器和客户端之间实现文件共享的服务协议。
Samba服务通常用来做跨系统文件共享服务,实现不同操作系统之间的资源共享。
Samba相关功能
用户验证
文件共享
打印共享
域名解析
Samba软件包
samba: samba服务端共享程序
common: samba服务配置文件语法检验testparm
cifs-utils: samba客户端软件, 提供所需工具指令集
Samba主要程序

2.Samba服务配置
实践环境准备

1.安装Samba服务程序
1[root@xuliangwei ~]# systemctl stop firewalld
2[root@xuliangwei ~]# setenforce 0
3[root@xuliangwei ~]# yum -y install samba
2.samba主配置文件,默认存放于/etc/samba/smb.conf
1//筛选Samba注释配置文件
2[root@xuliangwei ~]# egrep -v '^#|^$' /etc/samba/smb.conf
3[global] //全局参数
4 workgroup = SAMB //工作组名称
5 hosts allow = 192.168.56. //表示允许IP或网段, 允许使用通配符或主机名
6 interfaces = eth0 //SambaServer监听网卡, 也可以写IP地址
7 max connections = 0 //最大连接数目, 超出拒绝, 0表示不限制
8 max log size = 50 //定义日志文件的最大容量为50KB
9 security = user //安全验证方式,总共有4种
10 //share:无需验证身份, 简单方便, 安全性差
11 //user:需要验证用户密码才可访问, 安全性高
12 //server:需要通过三方服务验证账号密码, (集中管理账户)
13 //domain: 使用域控制器进行身份验证
14 passdb backend = tdbsam//定义用户密码的类型,共有3种
15 //smbpasswd:为系统用户设置Samba服务程序的密码
16 //tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
17 //ldapsam: 基于LDAP服务进行账户验证
18 printing = cups //设置Samba共享打印机的类型(bsd, sysv, plp, lprng, aix, hpux, qnx)
19 printcap name = cups //设置共享打印机的配置文件
20 load printers = yes //设置在Samba服务启动时是否共享打印机设备
21 cups options = raw //打印机的选项
22//为了更方便查阅共享重要参数的功能, 共享参数如下:
23[共享名/访问名]
24comment = 任意字符串
25path = 共享目录路径
26browseable = 指定该共享是否可以浏览
27writable = 指定该共享路径是否可写
28valid users = 允许访问该共享的用户
29invalid users = 禁止访问该共享的用户
30write list = 允许写入该共享的用户
31guest ok = 指定该共享是否允许guest账户访问
3.建立访问共享资源, 在Linux7系统中, Samba服务程序默认使用的是用户口令认证模式,确保仅让有密码且受信任的用户访问共享资源, 不过需要使用pdbedit建立账户信息数据库来管理SMB服务程序
1pdbedit [选项] 账户
2-a 用户名 建立Samba用户
3-x 用户名 删除Samba用户
4-L 列出用户列表
5-Lv 列出用户详细信息的列表
6[root@xuliangwei ~]# useradd bgx
7[root@xuliangwei ~]# pdbedit -a -u bgx
8new password: //输入密码
9retype new password: //确认密码
4.创建用于共享资源的文件目录, 要考虑到文件读写权限的问题
1[root@xuliangwei ~]# mkdir /share/smb -p
2[root@xuliangwei ~]# chown -R bgx.bgx /share/smb/
5.修改Samba服务程序的主配置文件, 可以删除[homes][printers]
1[global]
2 workgroup = SAMBA
3 security = user
4 passdb backend = tdbsam
5 printing = cups
6 printcap name = cups
7 load printers = yes
8 cups options = raw
9//建立共享目录
10[share]
11 comment = This is share SMB Service
12 path = /share/smb
13 public = no
14 writable = yes
6.重启smb服务并加入开机自启动
1[root@xuliangwei ~]# systemctl restart smb
2[root@xuliangwei ~]# systemctl enable smb
3//如果必须开启防火墙, 注意执行如下指令
4[root@xuliangwei ~]# firewall-cmd --permanent --add-service=samba
5[root@xuliangwei ~]# firewall-cmd --reload
3.Win挂载Samba
要在Windows系统中访问共享资源,只需在我的电脑上方输入
\\192.168.69.112然后再加服务器的IP地址即可, 如下图1-1所示:

图1-1 在Windows系统中访问共享资源
正确输入bgx账户名以及使用pdbedit命令设置的密码后,就可以登录到共享界面中了,如图1-2所示。此时,我们可以尝试执行查看、写入、更名、删除文件等操作。

图1-2 成功访问Samba共享资源
4.Linux挂载Samba
Samba服务可以实现Linux系统之间的文件共享, 在客户端安装支持文件共享服务的软件包cifs-utils
1.安装可以访问samba资源的客户端
1[root@xuliangwei ~]# yum -y install cifs-utils
2.临时查看SMB服务端共享资源
1//以匿名身份查看授权资源,直接回车即可
2[root@samba-client ~]# smbclient -L 192.168.56.11
3Enter SAMBA\root's password:
4Anonymous login successful
5OS=[Windows 6.1] Server=[Samba 4.6.2]
6Sharename Type Comment
7 --------- ---- -------
8 samba-share Disk This is Share /data/samba/share
9 IPC$ IPC IPC Service (Samba 4.6.2)
10//以bgx身份查看授权资源,直接回车即可
11[root@samba-client ~]# smbclient -L 192.168.56.11 -U bgx%123
12Domain=[SAMBA-SERVER] OS=[Windows 6.1] Server=[Samba 4.6.2]
13Sharename Type Comment
14 --------- ---- -------
15 samba-share Disk This is Share /data/samba/share
16 IPC$ IPC IPC Service (Samba 4.6.2)
17
18//直接访问共享
19[root@samba-client ~]# smbclient //192.168.56.11 -U bgx%123
3.手动挂载SMB访问共享
1//建立挂载点
2[root@samba-client ~]# mkdir /cifs
3//以匿名的身份挂载资源
4[root@samba-client ~]# mount -t cifs -o guest //192.168.56.11/samba-share /cifs
5//以账户密码身份挂载
6[root@samba-client ~]# mount -t cifs -o rw,user=bgx,pass=123 //192.168.56.11/samba-share /cifs
4.也可以将登陆账户密码保存至配置文件,可以免输入密码去访问挂载
1//创建相应文件, 并赋予安全权限
2[root@samba-client ~]# vim /etc/samba/bgx
3username=bgx
4password=1
5domain=MYGROUP
6[root@samba-client ~]# chmod 600 /etc/samba/bgx
7//挂载时执行用户密码文件credentials=/etc/samba/bgx
8[root@samba-client ~]# mount -t cifs -o rw,credentials=/etc/samba/bgx //192.168.56.11/samba-share /cifs
5.自动挂载SMB共享
1[root@samba-client ~]# vim /etc/fstab
2//第一种方式,以用户名密码的方式
3//192.168.69.112/samba-share /cifs cifs domain=WORKGROUP,user=bgx,pass=123 0 0
4//第二种方式,通过上述的配置文件定义账户与密码以及域
5//192.168.69.112/samba-share /cifs cifs credentials=/etc/samba/bgx 0 0
6#第二种方式的定义的配置文件
7[root@samba-client ~]# vim /etc/samba/bgx
8username=bgx
9password=1
10domain=MYGROUP
5.SMB多用户挂载
在Samba Server服务器上, 共享/data/samba/public,实现对访问挂载后的共享的每个用户单独的验证,实现权限隔离。
允许bgx1 能够读写
允许bgx2 能够读
允许bgx3 不能访问
1.创建系统用户
1[root@samba-server ~]# useradd bgx1 -s /sbin/nologin
2[root@samba-server ~]# useradd bgx2 -s /sbin/nologin
3[root@samba-server ~]# useradd bgx3 -s /sbin/nologin
2.添加系统用户至samba服务
1[root@samba-server ~]# pdbedit -a bgx1
2[root@samba-server ~]# pdbedit -a bgx2
3[root@samba-server ~]# pdbedit -a bgx3
4[root@samba-server ~]# pdbedit -L
5bgx2:1008:
6bgx1:1007:
7bgx3:1009:
3.修改samba配置文件共享目录
1[root@samba-server ~]# cat >> /etc/samba/smb.conf <<-EOF
2[samba-public]
3comment = This is a Share samba-public
4path = /data/samba/public
5public = no
6valid users = bgx1,bgx2
7invalid users = bgx3
8writable = yes
9EOF
4.创建共享目录, 并设置权限
1[root@samba-server ~]# mkdir -p /data/samba/public -p
2[root@samba-server ~]# chown bgx1 /data/samba/public/
5.使用testparm测试
1[root@samba-server ~]# testparm
2Processing section "[samba-share]"
3Processing section "[samba-public]"
4Loaded services file OK.
5#testparm命令报错:
6rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
7//临时生效
8[root@samba-server ~]# ulimit -n 16384
9//重启后生效
10[root@samba-server ~]# echo "root - nofile 16384" >> /etc/security/limits.conf
6.重启smb服务
1[root@samba-server ~]# systemctl restart smb nmb
2[root@samba-server ~]# systemctl enable smb nmb
7.客户端挂载, 并测试权限
1[root@samba-client ~]# mkdir /bgx{1..3}
2[root@samba-client ~]# mount -t cifs -o username=bgx1,pass=123 //192.168.69.112/samba-public /bgx1/
3[root@samba-client ~]# mount -t cifs -o username=bgx2,pass=123 //192.168.69.112/samba-public /bgx2
4[root@samba-client ~]# mount -t cifs -o username=bgx3,pass=123 //192.168.69.112/samba-public /bgx3
5mount error(13): Permission denied
6Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
8.自动挂载
1//挂载属性_netdev是关键选项,网络连通后挂载, 否则容易引起服务器无法启动
2[root@samba-client ~]# echo "//192.168.69.112/samba-public /bgx1 cifs defautlts,username=bgx1,password=123,_netdev 0 0" >> /etc/fstab
3[root@samba-client ~]# echo "//192.168.69.112/samba-public /bgx2 cifs defautlts,username=bgx2,password=123,_netdev 0 0" >> /etc/fstab
4[root@samba-client ~]# echo "//192.168.69.112/samba-public /bgx3 cifs defautlts,username=bgx3,password=123,_netdev 0 0" >> /etc/fstab
<关注下方公众号系列好文持续推送>





