1. Samba 文件共享服务
Samba 服务程序的配置方法与之前讲解的很多服务的配置方法类似,首先需要先通过软件仓库来安装 Samba 服务程序(Samba 服务程序的名字也恰巧是软件包的名字)。顺带再安装一个 samba-client 软件包,这是一会儿用于测试共享目录的客户端程序:
[root@linuxprobe~]# dnf install samba samba-client
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use
subscription-manager to register.
Last metadata expiration check: 0:00:17 ago on Fri 05 Mar 2021 04:54:36 PM CST.
Dependencies resolved.
===============================================================================
Package Arch Version Repository Sizet
===============================================================================
Installing:
samba x86_64 4.9.1-8.el8 BaseOS 708 k
samba-client x86_64 4.9.1-8.el8 BaseOS 636 k
Installing dependencies:
samba-common-tools x86_64 4.9.1-8.el8 BaseOS 461 k
samba-libs x86_64 4.9.1-8.el8 BaseOS 177 k
Transaction Summary
===============================================================================
Install 4 Packages
………………省略部分输出信息………………
Installed:
samba-4.9.1-8.el8.x86_64 samba-client-4.9.1-8.el8.x86_64
samba-common-tools-4.9.1-8.el8.x86_64 samba-libs-4.9.1-8.el8.x86_64
Complete!
安装完毕后打开 Samba 服务程序的主配置文件,参数并不多,只有 37 行。其中第 17~22 行代表共享每位登录用户的家目录内容。虽然在某些情况下这可以更方便地共享文件,但这个默认操作着实有些危险,建议不要共享,将其删除掉。第 24~29 行是用 SMB 协议共享本地的打印机设备,方便局域网内的用户远程使用打印机设备。当前我们没有打印机设备,因此建议也将其删除掉,不共享。最后的第 31~37 行依然为共享打印机设备的参数,同样建议予以删除。
[root@linuxprobe~]# vim /etc/samba/smb.conf
1 # See smb.conf.example for a more detailed config file or
2 # read the smb.conf manpage.
3 # Run ‘testparm’ to verify the config is correct after
4 # you modified it.
5
6 [global]
7 workgroup = SAMBA
8 security = user
9
10 passdb backend = tdbsam
11
12 printing = cups
13 printcap name = cups
14 load printers = yes
15 cups options = raw
16
17 [homes]
18 comment = Home Directories
19 valid users = %S, %D%w%S
20 browseable = No
21 read only = No
22 inherit acls = Yes
23
24 [printers]
25 comment = All Printers
26 path = /var/tmp
27 printable = Yes
28 create mask = 0600
29 browseable = No
30
31 [print$]
32 comment = Printer Drivers
33 path = /var/lib/samba/drivers
34 write list = @printadmin root
35 force group = @printadmin
36 create mask = 0664
37 directory mask = 0775
directory mask = 0775
在对 Samba 服务的主配置文件进行一顿删减操作之后,最后的有效配置参数只剩下了 8行。所剩不多的参数中,还能继续删除不需要的参数。例如,第 5~8 行参数中所提到的 cups的全称为 Common UNIX Printing System(通用 UNIX 打印系统),依然是用于打印机或打印服务器的,继续予以删除。
[root@linuxprobe~]# cat /etc/samba/smb.conf
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
将多余内容删除后:
[root@linuxprobe~]# cat /etc/samba/smb.conf
1 [global]
2 workgroup = SAMBA
3 security = user
4 passdb backend = tdbsam
为了避免在工作中使用到了打印机服务而不知如何配置,下面对上述代码进行详细的注释说明,大家可以留存备查。
在上面的代码中,security 参数代表用户登录 Samba 服务时采用的验证方式。总共有 4种可用参数。
➢ share:代表主机无须验证密码。这相当于 vsftpd 服务的匿名公开访问模式,比较方便,但安全性很差。
➢ user:代表登录 Samba 服务时需要使用账号密码进行验证,通过后才能获取到文件。这是默认的验证方式,最为常用。
➢ domain:代表通过域控制器进行身份验证,用来限制用户的来源域。
➢ server:代表使用独立主机验证来访用户提供的密码。这相当于集中管理账号,并不常用。
在最早期的 RHEL/CentOS 系统中,Samba 服务使用的是 PAM(可插拔认证模块)来调用本地账号和密码信息,后来在 5、6 版本中替换成了用 smbpasswd 命令来设置独立的 Samba服务账号和密码。到了 RHEL 7/8 版本,则又进行了一次改革,将传统的验证方式换成使用tdbsam 数据库进行验证。这是一个专门用于保存 Samba 服务账号密码的数据库,用户需要用pdbedit 命令进行独立的添加操作,下文中会有实战演示。
1.1 配置共享资源
Samba 服务程序的主配置文件与前面学习过的 Apache 服务很相似,包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的方法很简单,只要将表中的参数写入到 Samba 服务程序的主配置文件中,然后重启该服务即可。
第一步:创建用于访问共享资源的账户信息