使用Samba实现文件共享:Windows和Linux之间
1、概述:
1987 年,微软公司和英特尔公司共同制定了 SMB(Server Messages Block,服务器消息 块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间 共享文件变得越来越简单。到了 1991 年,当时还在读大学的 Tridgwell 为了解决 Linux 系统 与 Windows 系统之间的文件共享问题,基于 SMB 协议开发出了 SMBServer 服务程序。这是 一款开源的文件共享软件,经过简单配置就能够实现 Linux 系统与 Windows 系统之间的文件 共享工作。当时,Tridgwell 想把这款软件的名字 SMBServer 注册成为商标,但却被商标局以 SMB 是没有意义的字符而拒绝了申请。后来Tridgwell 不断翻看词典,突然看到一个拉丁舞蹈 的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是 Samba 服务程序的名字由此诞生。 Samba 服务程序现在已经成为在 Linux 系统与 Windows系统之间共享文件的最佳选择。
Samba 服务程序的配置方法与之前讲解的很多服务的配置方法类似,首先需要先通过 Yum 软件仓库来安装 Samba 服务程序(Samba 服务程序的名字也恰巧是软件包的名字):
yum install samba
安装好Samba后,了解Samba 服务程序中的参数以及作用,配置文件在/etc/samba/smb.conf如下表:
2、配置共享资源
Samba 服务程序的主配置文件与前面学习过的 Apache 服务很相似,包括全局配置参数和 区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资 源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的 方法很简单,只要将表 12-2 中的参数写入到 Samba 服务程序的主配置文件中,然后重启该服务即可。
第1步:创建用于访问共享资源的账户信息。
在 RHEL 7 系统中,Samba 服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问 共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口 令认证模式。另外,Samba 服务程序的数据库要求账户必须在当前系统中已经存在。pdbedit 命令用于管理 SMB 服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。 pdbedit 命令中使用的参数以及作用如表 12-3 所示:
补充:-c "[D]" -u username :暂停该Samba用户的账号。
-c "[]" -u username :恢复该Samba用户的账号。
第2步:创建用于共享资源的文件目录。
在创建时,不仅要考虑到文件读写权限的问题,而且由于/home 目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的SELinux 安全 上下文所带来的限制。在前面对 Samba 服务程序配置文件中的注释信息进行过滤时,这些过 滤的信息中就有关于 SELinux安全上下文策略的说明,我们只需按照过滤信息中有关 SELinux 安全上下文策略中的说明中给的值进行修改即可。修改完毕后执行 restorecon 命令,让应用于 目录的新 SELinux 安全上下文立即生效。
第3步:设置 SELinux 服务与策略,使其允许通过 Samba 服务程序访问普通用户家目录。
执行 getsebool 命令,筛选出所有与 Samba 服务程序相关的 SELinux 域策略,根据策略的 名称(和经验)选择出正确的策略条目进行开启即可:
开启samba_enable_home_dirs:
第4步:在 Samba 服务程序的主配置文件(/etc/samba/smb.conf)中,根据表 12-2 所提到的格式写入共享信息。
在原始的配置文件中,[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打 印机设备。这两项如果在今后的工作中不需要,可以手动删除,这没有任何问题。
第5步:Samba 服务程序的配置工作基本完毕。接下来重启 smb 服务(Samba 服务程序在 Linux 系统中的名字为 smb)并清空 iptables 防火墙,然后就可以检验配置效果了。
从红帽7开始防火墙已经慢慢抛弃之前的iptables,取而代之用firewalld。如果现阶段系统仍然使用iptables,则需要清空防火墙规则;否则直接忽略下面两条命令:
3、 Windows 访问文件共享服务
无论 Samba 共享服务是部署 Windows 系统上还是部署在 Linux 系统上,通过 Windows 系统进行访问时,其步骤和方法都是一样的。下面假设 Samba 共享服务部署在 Linux 系统上, 并通过 Windows 系统来访问 Samba 服务。Samba 共享服务器和 Windows 客户端的 IP 地址在同一网段。
要在 Windows 系统中访问共享资源,只需在 Windows 的“运行”命令框中输入两个反斜杠(win10在我的电脑里面输入IP地址),然后再加服务器的 IP 地址即可,如图所示:
正确输入Samba服务器地址后会弹出如下登陆框,直接输入wenhewen账户名以及使用 pdbedit 命令设置的密码后,就可以登录到共享界面中了,如图所示。此时,我们可以尝试执行查看、写入、更名、删除文件等操作。
此时在windows端可以访问linux端共享出来的文件夹database,并在里面进行文件处理操作。