什么是 Samba?Linux 与 Windows 资源共享的桥梁

Samba 是一款基于 SMB/CIFS 协议的开源软件套件,主要用于实现 Linux/Unix 系统与 Windows 系统之间的文件和打印机共享,同时也支持跨平台的用户认证、权限管理等功能。它的核心目标是消除不同操作系统之间的资源共享壁垒,让异构网络中的设备可以无缝协作。

Samba 是一款基于 SMB/CIFS 协议的开源软件套件,主要用于实现 Linux/Unix 系统与 Windows 系统之间的文件和打印机共享,同时也支持跨平台的用户认证、权限管理等功能。它的核心目标是消除不同操作系统之间的资源共享壁垒,让异构网络中的设备可以无缝协作。

20 世纪 80 年代左右,个人电脑刚出现时,大多数都是单用户设备,彼此不相连,基本上是独立运行的。如今,你在工作中使用的电脑很可能与周围的其他电脑相连。这些电脑进而又与整栋楼里的电脑相连,而整栋楼的电脑很可能接入了互联网,从而与整个世界相连。

我们让世界变得小了很多,但这种互联互通既有好处也有弊端。除了信息,我们可能还在分享其他东西。我们也可能会传播病毒,不过在我这边不太可能发生,因为我使用的是 Linux 系统。但正如一位 IBM 工程师曾经说过的,如果你想要绝对的安全,那就把电脑关掉,锁在柜子里。显然,这并不现实。不过,我们将要探讨如何利用分享带来的积极一面。如果你的办公室里碰巧有 Windows 电脑,事实是,你并不真的需要一台 Windows 服务器来共享 Windows 文件和打印机。有一个在 Linux 系统下运行的工具也能做到这一点,它叫做 Samba。

Samba

和我们在这里看到的其他主流、热门的开源工具一样,Samba 包含在大多数主流 Linux 发行版中。如果你需要它,它会自动安装,并且会为你完成一些基本配置。再次强调一下我的标准免责声明:本节内容仅被视为对 Samba 的基本介绍。我刚看到开源领域的杰出人物布鲁斯·佩伦斯(Bruce Perens)专门撰写的一本关于 Samba 的指南就有将近 700 页,所以你可以想象,Samba 的配置和使用方法有很多种。我们将在这里尝试介绍一些更常见的配置选项。

Samba的用户账户

如果你打算让使用Windows电脑的人在你的Linux服务器上存储文件,你需要在这台Linux电脑上创建用户账户。如果你已经学到课程的这个阶段,我们假设你知道如何操作,就跳过具体方法的部分了。

接下来,你需要给他们设置相同的Samba密码。有一个专门用于此操作的程序,它的名字很贴切,叫做smbpasswd。假设你想添加一个用户bsmith,你可以输入以下命令:

smbpasswd -a bsmith

这会要求你输入两次密码,这是Unix的惯例。如果你希望“网上邻居”小图标能“自动”让用户登录,就应该给他们设置与他们在Windows电脑上相同的密码。

现在,当用户bsmith登录到他的Windows电脑并点击网络图标时,他应该能看到我们运行着Samba的Linux电脑。当他点击这台电脑的图标时,应该能看到他的Linux用户目录图标。然后他就可以开始把文件存放在那里了——也就是说,前提是Samba配置正确。让我们来看一下Samba的配置文件smb.conf。

smb.conf

Samba的主要配置文件通常可以在/etc/samba/目录下找到,文件名为smb.conf。安装Samba时,该文件会被放置到这个位置。Samba的开发人员在文件中添加了详细的注释,以便解释每一行的含义。我们首先需要处理的是这一行:

workgroup = utopia

这里需要你输入Windows工作组的名称。这一点非常容易理解。让我们继续看下一项。

load printers = yes
printing = cups
printcap name = cups

这些行用于提供打印服务。CUPS(即通用Unix打印系统)是一种极其可靠且支持良好的协议。当然,为了使其正常工作,必须安装并运行它。

现在我们需要在打印机部分进行补充和修改,以便Windows机器能够使用CUPS进行打印。将你的[printer]部分修改为如下内容:

[printers]
path = /var/spool/samba
browsable = no
public = yes
guest ok = yes
writable = no
printable = yes
printer admin = root

并添加这一部分:

[print$]
path = /etc/samba/drivers
browsable = yes
guest ok = no
read only = yes
write list = root

现在我们需要让CUPS将其拥有的所有驱动程序提供给Samba使用。CUPS软件自带了一个用于完成此操作的工具,名为cupsaddsmb。输入:

cupsaddsmb -a -U root

这将把所有CUPS打印机驱动程序添加到你的Samba设置中。只是提醒一句,根据我的经验,打印这件事比较棘手。你可能有市面上最新款的打印机,但它可能无法立即正常工作。你需要事先相当确定,你的打印机已经在市场上存在了一段时间,相应的驱动程序已经可用。大多数知名制造商的打印机应该可以正常工作。

一旦打印服务设置完毕,我们就需要查看文件共享配置选项了。首先,我们要考虑如何处理用户的/home目录。

[homes]
  comment = Home Directories
  browseable = no
  writable = yes
  create mask = 0700
  directory mask = 0700

这将确保其他人无法查看(浏览)文件,也无法创建和/或覆盖文件或创建目录(注意分配给组和其他人的00权限)。只有该目录的所有者才能对其进行写入操作。

我们可能希望在Linux主机上配置一个特定目录,使其包含供所有人查看的文件。例如,如果你的办公室使用Hylafax发送和接收传真,你可以设置一个Samba共享,这样每个人都能自动查看收到的传真。

[Fax_Rec]
comment = Incoming Faxes
browseable = yes
writable = no
path = /var/spool/hylafax/recvq
public = yes

借助TIFF查看器,Windows工作站上的用户将能够查看传入办公室的传真。。

Samba还能让你共享CD驱动器。你只需取消smb.conf文件中与此相关的行的注释,并在/etc/fstab中添加如下所示的一行内容即可。

/dev/hdX  /mnt/cdrom  iso9660 defaults,noauto,ro,user  0 0

其中“X”是与你的IDE光盘驱动器对应的字母。

大量的文档资料

这体现了Linux的多功能性。如果你像许多组织一样,拥有多台Windows机器,那么你可以通过运行Samba的Linux主机打造出一台Windows NT。此外,我们对Samba的功能仅略知一二。查看Samba附带的文档,你会发现大量关于它的信息。

  

所谓天才,只不过是把别人喝咖啡的功夫都用在工作上了。——鲁迅
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号