用Samba实现Linux与Windows共享打印机

互联网的通用语言TCP/IP是基于UNIX系统开发的。因此Linux具有与生俱来的优势,可以在任何TCP/IP网络中使用。但有时候你还需要 与其它一些计算机打交道,它们的操作系统带有非TCP/IP的遗留网络组件。一个例子就是如何把连接到Linux系统上的打印机向Windows用户共 享。

  这种共享是有实用价值的:让家里或工作场所的所有计算机共享一台打印机,而不用考虑这些计算机使用什么操作系统,能够既省钱又方便。尽管从 Windows 2000开始,微软已经把TCP/IP作为了标准的网络协议,但Windows操作系统仍然使用一种专有的协议——SMB(服务器消息块)——在同类系统 之间进行通讯。(TCP/IP协议栈在Windows 3.1和DOS上已经可以使用,但直到微软把TCP/IP作为活动目录技术的一个基本组成部分,它才成为Windows默认的网络协议。)

  对此不用担心,因为Linux能与多种操作系统进行通讯,可以从容地处理互操作的问题。它提供了SMB的一种实现——Samba,能让当前网络上的Windows计算机访问并使用连在Linux计算机上的打印机。下面就介绍具体做法。

  首先要注意,你要共享的打印机在Linux下必须能正常工作。如果它在直接相连的Linux系统下都无法打印,就谈不上与Windows计算机 共享了。可惜是的,要让打印机在Linux中能正常打印,这本身就是一个大而复杂的问题,不是本文要介绍的内容。我只想提醒一点:如果你在Linux下无 法正常打印,或者还在挑选一台打印机,就应该先看一下Linux基金会的OpenPrinting指南。在这个网站中,你能找到带有Linux驱动的打印 机型号列表,还能下载你所安装的Linux系统中没有包含的打印机驱动程序。

  确保你的打印机插在了计算机上,打开了电源,然后你的Linux计算机能检测到它,并能向它发送测试页。可以使用Printer Configuration(打印机设置)程序去修改遇到的问题或安装新的驱动程序。

  另外还可以使用Printer Configuration程序去调整打印机服务器的设置。它显示了几个复选框,其中涵盖了一系列选项,包括自动检测其它计算机共享的打印机、取消其他人 的打印任务并收集调试信息等等。但我们目前只关注一个选项,即“Share published printers connected to this system”(共享连接到本系统的已公布打印机),或你使用的Linux发行版的类似选项。把这个选项勾上就行。

  然后在程序的Local Printer(本地打印机)部分显示的打印机列表中,点击要共享的每个打印机的名字。你会在这里看到一个Shared(是否共享)复选框。勾上这个复选 框。(当然,如果你有多台打印机而只希望共享其中几台,就确保在那些不希望共享的打印机名字前面,不要勾上Shared复选框。)

  现在是安装Samba并让它开始工作的时候了。首先打开你所用Linux发行版的软件包管理工具。例如在Ubuntu下,可以通过依次点击 System(系统)-> Administartion(管理)-> Synaptic Package Manager(新立得软件包管理器)。在Fedora下则可以依次点击Application(应用程序)-> Add/Remove Software(添加/删除软件)。你还可以通过其它方式来安装,例如使用命令sudo apt-get install samba smbfs。

  如果你使用上面的apt-get命令,Samba就将自动安装。如果你使用一个图形用户界面的软件包管理工具,可以先找到并选中Samba安装包,然后用该工具下载并安装它。

  需要特别注意的是,如果你运行了SELinux(安全增强型Linux),就需要更新它的一些设置,这样它才允许Samba分享文件和目录。

  你必须在Samba运行之前就对它进行设置。首先打开新安装的Samba服务器的设置窗口。点击Preferences(选项)-> Server(服务器)设置菜单。然后输入你所在Windows工作组的名称,以及一个可选的描述信息。点击OK(确定)按钮保存你所做的修改,最后关闭 对话窗口。

  接下来打开Linux的服务设置窗口。在这里,你能设置让哪些服务在系统启动后自动开始运行,也能启动或终止任何一个单独的服务。这时你需要做两件事:首先立即启动Samba服务,然后把它设置成系统启动后自动运行。

  做法就是找到smb服务这一项,再点击Start(启动)按钮,并勾上旁边的复选框。smb服务实际包括两个单独的服务:第一个是守护进程smbd,用来处理客户端与你的系统之间的SMB连接;第二个是守护进程nmbd,用来控制你所在网络上的共享设备广播。

  现在Samba就被载入了系统并开始运行。可惜它还没法使用,你需要先打开Firewall(防火墙)程序进行设置。你要让防火墙允许SMB数 据包进入你的系统。方法是在防火墙中找到Samba这一项,再把它标记为受信任服务。现在Linux就允许来自网络客户端的SMB数据包进入你的计算机 了。

  配置还剩最后一步:尽管远程计算机能够发送SMB数据包了,它们却还没被授权这么做。这时你需要用熟悉的文本编辑器去修改文件 /etc/samba/smb.conf。在修改这个文件的时候,你需要使用sudo命令或以一个超级用户的身份,因为要把修改内容写回到文件系统。

  通过修改这个配置文件,可以对打印机的使用权限设置不同粒度的控制。有两个实际选择:第一,为所在网络上的每个用户都设置一个单独的帐号;第 二,如果你只是在家里共享一台打印机,可以设置成任何人都能使用它。不管采用哪种方式,你都需要编辑/etc/samba/smb.conf。

  为了让每个人都能使用共享的打印机,你可以编辑该文件,定位到[printers]数据段。然后找到被注释掉的一行“; guest ok = no”,把它开头的分号删掉,改成“guest ok = yes”。(请注意,既要把分号删掉,又要把no改成yes。)这时你所在网络上的任何访客不需授权就能使用共享的打印机了。

  反之,如果你想为每个用户都设置一个帐号,可以编辑这个文件,定位到授权相关的数据段。也就是找到被注释掉的“; security = user”这一行,按照上面同样的方法把开头的分号删掉,改成“security = user”。再在紧接这一行的下面添加一行,写上“username map = /etc/samba/smbusers”。新增的这一行让Samba去寻找文件/etc/samba/smbusers中包含的被允许用户列表。

  可以使用命令sudo smbpasswd –a 为Samba设置用户。先把 改成你要设置的用户名称。然后使用文本编辑器把这个用户名称添加到文件/etc/samba/smbusers的末尾,格式是 = “ ”。 这个语法看起来有些奇怪,如此写的理由是,你在Linux中可能有一个与Windows系统中不同的用户名称。如果你在跨平台之间保持用户名称的一致性, 就能尽量避免出现问题。当Windows系统在网络上发现一个新的文件共享时,会试图把相关证书赋予当前登录的用户。如果你明白自己所做修改的含义,也许 会去修改配置文件的其它细节,但你会发现Windows系统每次重启后才会对这些修改做出提示。

  可以通过测试来验证。现在到一台装有微软Windows的计算机跟前,使用Printers(打印机)控制面板添加一台打印机;或者使用键盘快 捷方式,点击Start(开始)-> Run(运行),然后输入//computername,其中computername是你的Linux计算机的名称。过一会儿,Windows就会列出 这台Linux计算机共享的所有文件夹和打印机。你可能没有共享任何文件夹,但之前设置为共享的所有打印机都在列表中。

  双击列表中的任何一台打印机,Windows就弹出一个提示消息,表示它准备安装驱动程序并建立与所选打印机的连接。这不是一个出错提示,无须感到惊恐。但接着Windows会给出提示,让你提供打印机驱动程序的Windows版本的安装媒质。

  当上面的配置都结束后,试着打印一张测试页。如果没有打印成功,仔细想想问题可能出在什么地方,以及哪一步导致了现在的问题。我在共享打印机时 遇到的最常见问题是:不论用户说了多少次“我明白”,他们还是忘记了要想使用一台共享的打印机,与这台打印机进行物理连接的计算机必须是电源打开和正常运 行的。如果一台打印机的数据线被插到了一台计算机后面,这台计算机必须是正常运行的,才能让打印机也正常工作。

  以上就是对Samba的一个使用简介,能够解决Linux与Windows互操作过程中的许多问题。步骤看上去可能有些冗长,但都是简单和合乎逻辑的。

  最后总结一下:第一,设置你要共享的打印机;第二,安装Samba;第三,修改Samba的安全设置;第四,为SMB连接打开防火墙;第五,在Windows计算机上进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值