阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS部署Samba企业文件共享服务

166次阅读
没有评论

共计 10418 个字符,预计需要花费 27 分钟才能阅读完成。

目录:

1、Samba 服务概述:

1.1、Samba 的原理

1.2、NETBIOS 协议

2、Samba 应用环境

3、samba 服务

3.1、samba 的安装包:

3.2、samba 的进程文件:

3.3、samba 的文件:

4、主要配置文件 smb.conf

4.1、samba 配置简介

4.2、Global Settings

4.2.1)设置工作组或域名称

4.2.2)服务器描述

4.2.3)设置 samba 服务器安全模式

4.3、Share Definitions 共享服务的定义

4.3.1)设置共享名

4.3.2)共享资源描述

4.3.3)共享路径

4.3.4)设置匿名访问

4.3.5)设置访问用户

4.3.6)设置目录只读

4.3.7)设置目录可写

5、配置一个共享资源

6、samba 的命令与客户端访问

6.1、testparm:测试有效的 exports 内的属性

6.2、pdbedit:管理 smb 的用户数据库

6.3、smbpasswd:改变 samba 账户的密码

6.4、smbclient:unix 客户端访问工具

6.5、挂载访问

7、samba 搭建实例

7.1、smb 服务端搭建

8、修改配置文件,实战举例

8.1、例 1:匿名共享

8.2、例 2:通过用户名和密码共享文件。把 /sales 共享出去,只有知道用户名和密码的同事可以看这个共享

9、扩展参数

9.1、客户端访问控制

9.2、设置 Samba 的权限,允许 sales 组可以写

10、使用 GUI 工具 SWAT 管理 samba

 

 

1、Samba 服务概述:

samba 是基于 smb(Server Message Block)协议的一种实现方式。Samba 最先在 Linux

和 Windows 两个平台之间架起了一座桥梁,正是由于 Samba 的出现,我们可以在 Linux

系统和 Windows 系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等

等,我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提

供本地和远程联机打印。

1.1、Samba 的原理

CentOS 部署 Samba 企业文件共享服务

1
2
3
1.SMB 是基于 NetBIOS 的一个网络文件共享协议,允许 cilent 从服务器端访问文件资源。
2.NetBIOS 协议是一个用来让局域网内的主机互相连接的通讯协议,被广泛用于 windows 平台间的通信。
3.samba 就是基于 smb 开发的,让 unix 主机能够通过 mbr 协议与 windows 平台进行文件共享。

1.2、NETBIOS 协议

NetBIOS 是 Network Basic Input/Output System 的简称,网络基本输入 / 输出系统协

议。协议,一般指用于局域网通信的一套 API,是由 IBM 公司开发。主要作用:通过

NETBIOS 协议获得计算机名称,然后把计算机名解析为对应 IP 地址。

模式:C/S 模式

 

2、Samba 应用环境

1
2
3
4
文件和打印机共享:文件和打印机共享是 Samba 的主要功能,SMB 进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问哈。
身份验证和权限设置:smbd 服务支持 user mode 和 domain mode 等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。
名称解析:Samba 通过 nmbd 服务可以搭建 NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的 NetBIOS 名解析为 IP 地址。
浏览服务:局域网中,Samba 服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问 Windows 网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。

 

3、samba 服务

3.1、samba 的安装包:

1
2
3
4
5
6
samba samba 服务器端程序。
libsmbclient samba 客户端库文件。
samba-client samba 客户端程序。
samba-common samba 客户端以及服务端都会用到的文件,如 samba.conf 等。
samba-winbind samba 对于 windows 域的支持的服务端的库。
samba-winbind-clients samba windwos 域的客户端。

 

 

3.2、samba 的进程文件:

1
2
nmbd:负责管理工作组,NetBIOS 名解析,并提供浏览服务显示网络上的共享资源列表。工作在 UDP 的 137,138 端口上。
smbd:其主要功能就是用来管理 Samba 服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管,工作在 TCP 的 139 或 445 端口上。

 

3.3、samba 的文件:

1
2
3
4
/etc/samba/smb.conf samba 的主要配置文件。
/etc/samba/smbusers 共享服务中,linux 与 windows 的账号的映射,格式为 linuxuser = windowSUSEr1,windowsuser2
/var/lib/samba/private/passdb.tdb / secrets.tdb samba 用户账号密码存放的数据
库。

4、主要配置文件 smb.conf

4.1、samba 配置简介

smb.conf 文件的开头部分为 samba 配置简介,告诉我们 smb.conf 文件的作用及相关信息。

smb.conf 中以“#”开头的为注释,为用户提供相关的配置解释信息,方便用户参考,不用修改它哈。

smb.conf 中还有以“;”开头滴,这些都是 samba 配置的格式范例,默认是不生效滴,可以通过去掉前面的“;”并加以修改来设置想使用的功能。

4.2、Global Settings

Global Settings 设置为全局变量区域。那什么是全局变量哈?全局变量就是说我们只要在 global 时进行设置,那么该设置项目就是针对所有共享资源生效滴。这与以后我们学习的很多服务器配置文件相似哈。

该部分以 [global] 开始:

smb.conf 配置通用格式,对相应功能进行设置:字段 = 设定值 

下面我们说下 [global] 常用字段及设置方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[global]
[network]
workgroup = MYGROUP # 工作组名称,要与 windows 的工作组名称一致。
server string = Samba Server Version %v #samba 服务器描述
; netbios name = MYSERVER
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # 设置监听
的网卡
; hosts allow = 127. 192.168.12. 192.168.13. # 设置可以访问的网段

  此处含有隐藏内容,登录后即可查看!

log file /var/log/samba/log.%m # 日志文件路径。
max log size = 50 # 一个日志文件最大多少 Kb 进行轮替。
[独立服务器设定  Standalone Server]
    security = user|share|domain  # 安全认证方式   
                        share:# 共享模式 
                        user:# 使用 samba 服务器的密码库   
                        domain:# 使用外部域服务器的密码。
    passdb backend = tdbsam     # 密码库格式。

1)设置工作组或域名称

工作组是网络中地位平等的一组计算机,可以通过设置 workgroup 字段来对 samba 服务器所在工作组或域名进行设置。

我们设置 samba 服务器的工作组为 CentOS

2)服务器描述

服务器描述实际上类似于备注信息哈,在一个工作组中,可能存在多台服务器,为了方便用户浏览,我们可以在 server string 配置相应描述信息,这样用户就可以通过描述信息知道自己要登录哪台服务器了啊~

我们设置 samba 描述信息为“CentOS File Server”。

3)设置 samba 服务器安全模式

samba 服务器有 share、user、server、domain 和 ads 五种安全模式,用来适应不同的企业服务器需求。

1
2
3
4
5
6
7
8
9
10
(1)share 安全级别模式
客户端登录 samba 服务器,不需要输入用户名和密码就可以浏览 samba 服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证 samba 服务器的安全性。
(2)user 安全级别模式
客户端登录 samba 服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。
(3)server 安全级别模式
客户端需要将用户名和密码,提交到指定的一台 samba 服务器上进行验证,如果验证出现错误,客户端会用 user 级别访问。
(4)domain 安全级别模式
如果 samba 服务器加入 windows 域环境中,验证工作服将由 windows 域控制器负责,domain 级别的 samba 服务器只是成为域的成员客户端,并不具备服务器的特性,samba 早期的版本就是使用此级别登录 windows 域滴。
(5)ads 安全级别模式
当 samba 服务器使用 ads 安全级别加入到 windows 域环境中,其就具备了 domain 安全级别模式中所有的功能并可以具备域控制器的功能。

4.3、Share Definitions 共享服务的定义

Share Definitions 设置对象为共享目录和打印机,如果我们想发布共享资源,需要对 Share Definitions 部分进行配置。Share Definitions 字段非常丰富,设置灵活。

我们先来讲下几个最常用的字段哈~

1)设置共享名

共享资源发布后,必须为每个共享目录或打印机设置不同的共享名,给网络用户访问时使用,并且共享名可以与原目录名不同。

共享名设置非常简单:[共享名]

我们来看个例子,Samba 服务器中有个目录为 /share,需要发布该目录成为共享目录,定义共享名为 public

2)共享资源描述

网络中存在各种共享资源,为了方便用户识别,可以为其添加备注信息,以方便用户查看时知道共享资源的内容是什么哈。

格式:comment = 备注信息

举个例子哈,samba 服务器上有个 /sales 目录存放公司销售部的数据,为了对公司部门员工进行区分,可以添加备注信息。

3)共享路径

共享资源的原始完整路径,可以使用 path 字段进行发布,务必正确指定。

格式:path =  绝对地址路径

samba 服务器上 /share/tools 目录存放常用工具软件,需要发布该目录为共享,我们可以这样做。

4)设置匿名访问

共享资源如果对匿名访问进行设置,可以更改 public 字段。

格式:

1
2
public = yes     # 允许匿名访问
public = no      # 禁止匿名访问

samba 服务器 /share 共享目录允许匿名用户访问,可以这样设置。

5)设置访问用户

如果共享资源存在重要数据的话,需要对访问用户审核,我们可以使用 valid users 字段进行设置哈~

格式:

1
2
valid users = 用户名
valid users = @组名

我们来看下面一个例子哈,samba 服务器 /share/tech 目录存放了公司技术部数据,只允许技术部员工和经理访问,技术部组为 tech, 经理帐号为 gm

6)设置目录只读

共享目录如果限制用户的读写操作,我们可以通过 readonly 实现哈~

格式:

1
2
readonly yes    # 只读
readonly = no     # 读写

samba 服务器公共目录 /public 存放大量共享数据,为保证目录安全我们只允许读取,禁止写入哈~

7)设置目录可写

如果共享目录允许用户写操作,可以使用 writable 或 write list 两个字段进行设置哈~

1
2
3
4
5
6
writable 格式:
writable = yes      # 读写
writable = no       # 只读
write list 格式:
write list = 用户名
write list = @组名

注意:

[homes]为特殊共享目录,表示用户主目录。

[printers]表示共享打印机。

 

5、配置一个共享资源

1
2
3
4
5
6
[share] # 设置共享名
comment = Home Directories # 描述
browseable = yes # 是否允许查看此共享内容。如果是否,后期通过绝对路径,可以查看到。
path = /share # 共享路径,写绝对路径
public = yes # 允许匿名查看
readonly yes

6、samba 的命令与客户端访问

6.1、testparm:测试有效的 exports 内的属性

6.2、pdbedit:管理 smb 的用户数据库。

1
2
3
4
5
pdbedit -L [-vm] 列出数据库中的用户等信息,-v详细信息,- w 使用 smbpasswd 格式。
pdbedit -a -u [user] 新增一个用户,但必须存在实体用户。
pdbedit -r -u [user] 修改一个用户的信息,需搭配其他参数,可参考 man 文档。
pdbedit -x -u [user] 删除一个用户。
pdbedit -a -m -u [machine account 计算机账号] 添加一个计算机账号,域相关。

 

6.3、smbpasswd:改变 samba 账户的密码。

1
2
3
4
5
smbpasswd -a [user] 新增用户以及密码。
smbpasswd -r [user] 修改用户密码。
smbpasswd -x [user] 删除用户。
smbpasswd -d [user] 禁止登陆。
smbpasswd -e [user] 启用用户。

 

6.4、smbclient:unix 客户端访问工具。

1
2
3
4
5
6
7
8
9
smbclient -L //IPADDR [-U smbuser] 测试查看目标服务器所开放的共享文件夹
smbclient //IPADDR/dir -U smbuser 连接共享服务器文件夹。
[root@host2 ~]# smbclient //192.168.25.132/test -U zhanghe 命令行形式访问。
Enter zhanghe's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]
smb: \\> help
? allinfo altname archive blo
cksize
cancel case_sensitive cd chmod chown....

 

6.5、挂载访问。

1
mount -t cifs -o username=zhanghe,password=123456 -l //192.168.25.132/test /tmp

 

 

7、samba 搭建实例

 

7.1、smb 服务端搭建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
host1(192.168.1.1):
[root@host1 ~]# yum install samba
[root@host1 ~]# vim /etc/samba/smb.conf
[test]
comment = test on 192.168.25.132 server!
path = /tmp/samba
writable = yes
guest ok = yes
write list = zhanghe
[root@host1 ~]# testparm
[root@host1 ~]# useradd zhanghe
[root@host1 ~]# pdbedit -a -u zhanghe
[root@host1 ~]# pdbedit -L
[root@host1 ~]# mkdir -pv /tmp/samba
[root@host1 ~]# setfacl -m u:zhanghe:rwx /tmp/samba
[root@host1 ~]# service nmb start
[root@host1 ~]# service smb start

ps. 配置 iptables 并设置 selinux

 

8、修改配置文件,实战举例

 

8.1、例 1:匿名共享:

公司现在用一个工作组 Software,需要添加 samba 服务器作为文件服务器,并发布共享目

录 /share,共享名为 public, 这个共享目录允许所有公司员工访问。

1
2
3
4
5
6
7
8
9
10
11
12
[root@host1 ~]# mkdir /share
[root@host1 ~]# cp /etc/passwd !$ #复制一个测试文件 cp /etc/passwd /share
[root@host1 ~]# vim /etc/samba/smb.conf
[global]
workgroup = Software # 工作组
server string = Software Samba Server #samba 服务器描述
security = share # 允许匿名访问
============================ Share Definitions ====
[share] # 设置共享名
comment = Home Directories # 描述
path = /share # 共享路径,写绝对路径
public = yes # 允许匿名查看

2)重新加载配置

1
[root@host1 ~]#

 

8.2、例 2:通过用户名和密码共享文件。把 /sales 共享出去,只有知道用户名和密码的同事可以看这个共享。

我们需要将全局配置中 security 设置为 user 安全级别,然后在共享目录设置权限

注意:一定要先指定存放密码的文件位置:

2)修改 samba 主配置文件 smb.conf

改:

1
2
3
4
passdb backend = tdbsam
为:
passdb backend = smbpasswd
smb passwd file /etc/samba/smbpasswd

CentOS 部署 Samba 企业文件共享服务

1)添加销售部用户和组并添加相应 samba 帐号

使用 groupadd 命令添加 sales 组,然后执行 useradd 命令和 passwd 命令添加销售部员工的

帐号及密码。

1
2
3
4
5
[root@host1 ~]# groupadd sales
[root@host1 ~]# useradd -g sales sale1
[root@host1 ~]# useradd -g sales sale2
[root@host1 ~]# id sale2
uid=502(sale2) gid=501(sales) groups=501(sales)

CentOS 部署 Samba 企业文件共享服务

接下来为销售部成员添加相应 samba 帐号

1
[root@host1 ~]# smbpasswd -a sale1

CentOS 部署 Samba 企业文件共享服务

1
2
3
[root@host1 ~]# ls /etc/samba/smbpasswd
/etc/samba/smbpasswd
[root@host1 ~]# cat !$

CentOS 部署 Samba 企业文件共享服务

1
2
3
4
[root@host1 ~]# smbpasswd -a sale2
New SMB password:
Retype new SMB password:
Added user sale2.

2)修改 samba 主配置文件 smb.conf

(1). 设置 user 安全级别模式

1
security = user

设置目录:

1
[root@host1 ~]# vim smb.conf

CentOS 部署 Samba 企业文件共享服务

 

创建共享目录:

创建共享目录:

1
2
3
[root@host1 ~]# mkdir /sales
[root@host1 ~]# cp /etc/passwd !$
cp /etc/passwd /sales

3)重新加载配置

1
2
3
4
5
6
[root@host1 ~]# service smb restart
Shutting down SMB services: [OK]
Starting SMB services: [OK]
测试:
输入:
用户:sale2 密码:123456

输入销售部的帐号及密码进行登录

这样销售部成员就可以进行访问 sales 共享目录下的数据了

 

9、扩展参数

9.1、客户端访问控制

hosts allow 和 hosts deny 的使用方法

1)hosts allow 和 hosts deny 字段的使用

1
2
hosts allow 字段定义允许访问的客户端
hosts deny 字段定义禁止访问的客户端

 

这里我们添加 hosts deny 和 hosts allow 字段

1
2
hosts deny = 192.168.0. 表示禁止所有来自 192.168.0.0/24 网段的 IP 地址访问
hosts allow = 192.168.0.24 表示允许 192.168.0.24 这个 IP 地址访问

当 host deny 和 hosts allow 字段同时出现并定义滴内容相互冲突时,hosts allow 优先。

 

9.2、设置 Samba 的权限,允许 sales 组可以写

设置系统权限

1
2
3
4
[root@host1 ~]# chmod 777 /sales
[root@host1 ~]# ll -d !$
ll -d /sales
drwxrwxrwx 2 root root 4096 Mar 7 21:50 /sales

设置服务器权限:

1
[root@host1 ~]# vim /etc/samba/smb.conf

boss 用户和 sale 组都可以读写

write list = boss,@sales 就表示只有 boss 帐号和 sales 组,可以对 /sales 有写入权限

 

 

10、使用 GUI 工具 SWAT 管理 samba

swat 是 samba 的图形化管理工具,我们可以在配置后通过 http 来通过网页配置,并且内嵌

帮助文档,能够非常直观的配置 samba 服务,swat 是基于 xinetd 超级守护进程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@host1 tmp]# yum install xinetd -y 安装 xinetd 超级守护进程
[root@host1 tmp]# yum install samba-swat -y 安装 swat 程序,主机安装包名为 samba-swat,如果直接输入 swat 是找不到包的!!
[root@host1 tmp]#vim /etc/xinetd.d/swat 编辑 swat 的配置文件。
# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \\
# to configure your Samba server. To use SWAT, \\
# connect to port 901 with your favorite web brows
er.
service swat
{
port = 901 <--- 监听的端口默认为 901。
socket_type = stream <--- socket 类型为 stream,面向连接的稳定数据传输,即为 TCP 协议。
wait = no
only_from = 192.168.25.0 <--- 只监听指定范围内的主机,即限制登陆主机,设置为 0.0.0.0 则默认为监听所有主机。
user = root <--- 只允许使用指定用户登录。
server = /usr/sbin/swat <--- 指定主程序路径。
log_on_failure += USERID
disable = no <--- 开启 swat 工具,yes为关闭。
}
[root@host1 tmp]# service xinetd start 开启 xinetd 服务即可,因为 swat 是由 xinetd 来管理的。
[root@host1 tmp]# ss -tunl | grep 901 查看 901 端口号,的确为设置的 tcp 的 901

CentOS 部署 Samba 企业文件共享服务

访问服务器的 901 端口:

CentOS 部署 Samba 企业文件共享服务

CentOS 部署 Samba 企业文件共享服务

———————————— 分割线 ————————————

如何在 Ubuntu 14.04 中使用 Samba 共享文件  http://www.linuxidc.com/Linux/2014-07/104894.htm

VMWare 虚拟机 Ubuntu 双网卡 访问 samba 速度 翻倍 http://www.linuxidc.com/Linux/2013-06/85445.htm

Samba 文件共享服务器加入 Windows Server 2003 域 http://www.linuxidc.com/Linux/2013-06/86391.htm

Samba 安装配置 http://www.linuxidc.com/Linux/2013-06/86101.htm

CentOS 6.2 下 Samba 服务的配置 http://www.linuxidc.com/Linux/2013-01/78390.htm

Samba 服务器安装和配置  http://www.linuxidc.com/Linux/2014-12/110459.htm

Win7+VMware+Fedora18 Samba 服务器的搭建图解 http://www.linuxidc.com/Linux/2013-01/78234.htm

———————————— 分割线 ————————————

Samba 的详细介绍:请点这里
Samba 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132609.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10418字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中