暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第29篇 集群架构-Samba文件共享服务

运维大叔 2021-06-04
625

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




<关注下方公众号系列好文持续推送>



文章转载自运维大叔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论