Linux Samba 服务部署与配置

1. 实验介绍

1.1 实验内容

本节实验主要介绍了 samba 服务器的搭建,以及如何配置文件来实现 windows 和服务器直接的资源共享。

1.2 实验知识点

  • 什么是 Samba
  • Samba 的安装
  • Samba 的配置
  • 实现资源共享

1.3 推荐阅读

2. 什么是 Samba

2.1 简介

Samba 是 GNU 通用公共许可证下的一款免费软件,自 1992 年以来,Samba 为所有使用 SMB/CIFS 协议的客户端提供了安全,稳定和快速的文件和打印服务,如:DOS 和 Windows,OS/2(支持 SMB 文件和打印共享),Linux 等各种版本。

Samba 是将 Linux/Unix 服务器和桌面无缝集成到 Active Directory 环境中的重要组件。它既可以作为域控制器,也可以作为常规域成员。

samba 名字的由来:早期,Andrew Tridgwell (samba 创建者)在申请商标时拟用的是 SMBServer,但是 SMB 没有实际意义因而无法注册,然后他在翻字典时看到了 samba 这个单词,正好含有 SMB ,而且又是热情有劲的拉丁舞蹈的名称,因而将其取名为 samba。

注:Active Directory 是 Microsoft 为 Windows 域网络开发的目录服务。它被包含在大多数 Windows Server 操作系统中作为一组进程和服务。

2.2 SMB 协议

SMB(Server Message Block,服务器消息块),是用于在计算机之间共享文件、打印机、串行端口和通信抽象(如:命名管道和邮件插槽)的协议。主要作用是连接客户端和服务器进行信息沟通。SMB 一开始是在 NetBIOS 上运行的,Windows 2000 引入了 SMB 直接在 TCP/IP 上运行的功能。

NetBIOS :(Network Basic Input/Output System)是在本地网络上进行通信的服务,通过叫 NetBIOS Frames (NBF)的协议允许在局域网上的应用程序和计算机和网络进行通信以及传输数据。

2.3 守护进程

Samba 主要的守护进程是 smbd 、nmbd 和 winbindd。 以及通过两个服务(smb 和 windbind)来控制守护进程是如何启动,停止和进行其他服务相关的功能。

  • smbd

smbd 服务器守护进程为 Windows 客户端提供文件共享和打印服务。 另外还负责通过 SMB 协议进行用户认证,资源锁定和数据共享。smbd 守护进程由 smb 服务进行控制。服务器侦听 SMB 流量的默认端口是 TCP 端口 139 和 445。

  • nmbd

nmbd 服务器守护进程可以理解并回复 NetBIOS 服务请求,例如:SMB/CIFS 在基于 Windows 的系统中产生的请求。nmbd 守护进程由 smb 服务进行控制。服务器侦听 NMB 流量的默认端口是 UDP 端口 137。

  • winbindd

winbindd 守护进程由 winbind 服务控制,不需要启动 smb 服务来运行。 当 Samba 是 Active Directory 成员时,也可以使用 Winbindd,也可以在 Samba 域控制器上使用。

  • winbind server

winbind 服务解析运行在 Windows NT 2000 或 Windows Server 2003 的服务器上的用户和组的信息。这使得 UNIX 平台可以解析 Windows 用户/组的信息。也就是允许 Windows NT 域用户在 UNIX 机器上以 UNIX 用户的身份出现和进行操作。

  • smb server

smb 服务是一种以响应方式为主的技术支持服务。每个共享目录文件都需要提供给一个口令来支持访问,基于用户访问权限,每个客户端登录服务器都必须获得服务器的认证许可。

2.4 CIFS 协议

CIFS( Common Internet File System,通用互联网文件系统),是用户通过内部网和互联网共享文件的标准方式。在计算机中,SMB 的其中一个版本也被称为 CIFS 来作为应用层网络协议提供服务。

CIFS 对超文本传输协议(HTTP)进行了补充,同时提供了比旧协议(如 FTP)更复杂的文件共享和文件传输服务。

3. samba 的安装

3.1 查看安装包

sudo su
rpm -qa | grep samba

默认系统环境中只有上面两个软件包。

3.2 安装服务

如果环境默认安装,通过下面命令将其移除。

yum remove samba*

使用下面的命令重新进行安装

yum install samba4

3.3 安装包说明

  • samba-common* :提供 Samba 服务器和客户端软件包所必需的文件。
  • samba-client* :提供了一些 SMB/CIFS 客户端来补充 Linux 中的内置 SMB/CIFS 文件系统。同时这些客户端允许访问 SMB/CIFS 共享并打印到 SMB/CIFS 打印机。

4. 创建共享目录

mkdir -p /samba/test
chmod -R 777 /samba/test

同时查看 windows 工作组

打开 windows 下 cmd 窗口,输入下面命令来查看 win 的工作组。

net config workstation

5. samba 的配置

5.1 配置文件

Samba 的主要配置文件是 /etc/samba/smb.conf 和 /etc/samba/smb.conf.example(此文件说明更为详尽)。

可以通过下面命令查看下具体配置参数的信息。

cat /etc/samba/smb.conf.example
cat /etc/samba/smb.conf

在配置文件中有以下几个说明:

(1)参数配置基本采用 “参数 = 值” 的方式,如果参数有多个值时,多个参数之间用空格分隔。

(2)当使用用户和组作为参数时,值为组时需在组名前加 @ 字符。

(3)以 ; 或 # 开始的是注释行。

(4)方括号标识表示为标志,比如 [global] 为全局配置标识。

(5)一般当全局配置与某个共享资源配置发生冲突时,共享资源配置优先。

(6)关键字对大小写不敏感。

5.2 参数说明

5.2.1 Global Settings

  • workgroup : Windows NT 域名或工作组名称,例如:MYGROUP。
  • server string : 相当于 Windows NT 说明字段。
  • netbios name : 用于指定与主机名无关的服务器名称,最多为 15 个字符。
  • interfaces :用于配置 Samba 在多个网络接口上进行侦听。如果有多个接口,可以使用 interfaces = 选项来配置 Samba 侦听的接口。不要忽略本地主机接口(lo)。
  • security :设置安全级别,即客户端访问 Samba 服务器的验证方式。有三种参数方式:share(匿名访问,访问共享资源不用用户名和密码,由于安全性不推荐使用)、user(默认设置,访问需要用户名和密码,用来认证用户来源是 Samba 服务器本机)、server(访问需要用户名和密码,用来认证用户来源是为另一台 Samba 服务器或 Windows 服务器。)。
  • passdb backend : 参数设置(tdbsam/smbpasswd/ldapsam/mysql)。默认值是 tdbsam,一般不用修改,该方式使用一个数据库文件来建立用户数据库,数据库文件名为 passdb.tdb。
  • hosts allow : 允许连接的主机。
  • hosts deny : 主机不允许连接。

5.2.2 Share Definitions

  • [homes] # 共享参数
    • comment = Home Directories # 主页目录,描述信
    • browseable = no # 指定共享信息是否可浏览
    • writable = yes # 是否可写
  • [printers] # 打印机共享参数
    • comment = All Printers
    • path = /var/spool/samba # 共享文件实际路径
    • browseable = no
    • guest ok = no # 是否公开所有人可见
    • public = yes # 能否被 guest 访问的共享,和 guest ok 类似
    • writable = no
    • printable = yes # 是否打印

5.3 配置参数

配置参数如下:

先做连接测试,不对 [homes] 变量进行修改,修改 [global] 中的工作组信息,并在最底端添加测试参数变量。

[global]

    workgroup =  WORKGROUP # 与 win 下的工作组相同

[homes]

[test]
    path = /samba/test
    public = Yes

配置完成后可以通过 testpaprm 命令测试 Samba 服务的配置情况

testparm

6. Samba 用户数据库

共享文件和配置文件创建之后,我们需要创建一个用于访问共享资源的用户信息。因为 samba 默认使用的用户密码认证的模式(security = user),所以默认情况下只有建立用户信息才能有访问权限。

用户信息的数据库我们主要用到 pdbedit 这个命令。

pdbedit 程序用于管理存储在用户帐户中的用户帐户 SAM 数据库,只能由 root 运行。

命令格式

pdbedit [参数][用户]

常用参数说明

参数 说明
-L 列出当前用户数据列表
-v 列出详细的列表格式
-u 用户名
-a 创建用户
-x 删除用户

详细的参数信息大家可以 man pdbedit 来进行查看。

添加用户

useradd user1
pdbedit -a -u user1

7. 防火墙和 SELinux 的设置

  • 防火墙设置(实验环境的防火墙是已经关闭了的)

如果防火墙不关闭,查看共享会出现连接失败。

systemctl stop firewalld.service
  • 配置 SELinx

如果 selinux 不关闭,则无法看到共享目录的内容

# 查看 selinux 的状态,应该是 Permissive
getenforce
# 如果不是 Permissive 状态,则用该命令关闭 selinux
setenforce 0

完成上面操作就可以启动服务了。

systemctl start smb

Samba 服务器安装及配置操作视频:

7. windows 连接测试

在本地 windows 下,直接在文件管理器下输入你搭建的 samba 服务器的 IP 地址。

第一次登录 Windows 下需要输入用户凭证。

这时我们可以看到一个我们创建的共享文件(test)和一个用户文件(user1)。

打开共享文件,我们可以尝试新建一个 txt 文件,此时是没有权限进行创建的,因为我们之前的配置文件中只是添加了路径和配置了是否可以访问的操作,并没有配置相应的读写操作,所以在后面我们会再对配置文件进行修改。

8. 配置共享文件

8.1 新建共享文件

我们重新创建一个共享文件来进行操作。

mkdir -p /samba/share
chmod -R 777 /samba/share

8.2 配置文件

vim /etc/samba/smb.conf

在底端添加下面的配置参数

[share]

    path = /samba/share
    browsable = yes # 可以浏览
    writable = yes # 表示运行写入
    guest ok = yes
    read only = no

测试配置文件,并重启服务

testparm
systemctl restart smb

8.3 windows 共享

这时再次在 windows 下连接服务器地址,就可以看到增加了我们新建的共享目录(share)。在这个共享目录下新建一个文件(samba_file1.txt),可以看到是成功的,且具有写入的权限。

保存之后还可以在终端看到我们创建的文件

ls -l /samba/share

8.4 Linux 共享

Samba 在 Linux 下同样可以进行共享访问,我们可以使用之前的安装包(samba-client)中的一个工具(smbclient)来实现。

smbclient:类似于 ftp 的客户端来访问服务器上的资源。

如果提示找不到命令,则需要安装 samba-client 套件。

yum install samba-client

命令格式

smbclient [参数][samba 服务器][用户]

详细参数可以参考 man smbclient

参数 -L 显示服务器端所分享出来的所有资源。

smbclient -L //47.96.248.173

从打印出来的信息可以看到我们创建的共享文件等。

通过下面的命令可以像客户端一样使用共享资源,当看到 smb: > 的界面就说明登录成功。

smbclient //47.96.248.173/share -U user1

输入 ? 就列出所有可以使用的命令,例如用 mkdir 创建一个目录(hello)。

回到 windows 下也可以看到在 linux 中创建的目录。

9. 总结

通过本节实验主要学习了如何搭建 samba 服务器,以及如何配置文件来实现文件的共享。

results matching ""

    No results matching ""