配置Samba实现本地打印机共享

在开始之前,确信你的Samba运行正常,并且Windows用户可以在网络邻居的列表中看到Samba服务器。我将介绍修改smb.conf文件,使得网络中的Windows用户可以通过Samba服务器使用打印机。

为了配置smb.conf文件实现共享一个本地打印机,检查你Linux下的打印机是否工作正常。下一步,在Windows客户端安装同一个打印机。这样做的话,你需要Windows下打印机的安装盘。开始安装打印机,点击开始,选择打印机,并且双击添加打印机。

在打印机安装向导中,按照屏幕上的说明一步一步,直到在列表中选择打印机的名称。要点:写出打印机的准确名称,注意大小写(名称对大小写是敏感的)。例如,Windows中使用的Epson Stylus 740打印机应该输入如果需要,在安装完成后要重启机器。在Samba服务器上,以根用户登录(或是超级用户),用你习惯的文本编辑器打开/etc/smb.conf或者/etc/samba/smb.conf。例如,vi /etc/smb.conf。

在[global]这一节,找到打印名称这行,如果你想使Windows用户可以使用所有本地打印机,去掉这一行,并且如果文件中没有这些内容的话,添加上:

printcap name = /etc/printcap

load printers = yes

如果只想让其他用户用一个打印机,你不要删掉那行,也不用添加什么。需要注意的是在大多数从BSD发展而来的Linux系统上,Samba假设你在用默认的打印系统。如果你用的是其他打印系统,在Linux的打印系统配置中,找到相应的行,改变默认设置(bsd)。选择包括sysv,plp,lprng,aix,hpux和qnx。如果不能确认你的Linux配置正在使用的打印系统,你可以查看一下相关文件,但大多数情况下都是默认的。

下一步,使所有的本地打印机都实现共享。所有的打印机都在/etc/printcap文件的打印机列表中,在/etc/smb.conf文件尾添加以下服务条目:

[printers]

writable = no

path = /tmp

printable = yes

如果只要共享一个打印机,在smb.conf文件的[global]小节添加一个自动服务行。和在/etc/printcap中的相同,这行指定你想使用的打印机名称。下行中在lp填写默认打印机的名称:

auto services = lp

而且,仿照下面创建一个打印机定义,添加到[services]小节中(在/etc/smb.conf文件末尾):

[lp]

printable = yes

comment = Epson Stylus (Color)

public = yes

writable = no

browseable = yes

printer driver=EPSON Stylus COLOR 740

定义中的打印机名是lp,这个名称必须和上面自动服务行中的名称相一致,并且也要和在/etc/printcap文件中定义的打印机名称相同(或打印机的别名)。需要注意的是,打印机驱动行需要你正确的输入Windows中的打印机信息(在这里,EPSON Stylus COLOR 740,还是需要注意大小写)。

***,保存/etc/smb.conf文件。退出文本编译器,键入/etc/init.d/rc.d/smb重启Samba。

检测安装

在其中一台Windows工作站上检测你的安装成果

。用用户的Windows网络用户名和密码登录,双击网络邻居,双击Linux系统的图标后看看Samba打印机是否显示出来。如果点击右键选择安装,你可以看到打印机安装的对话框。在开始安装的时候,用户不需要关心打印机的牌子和型号,因为打印机的名称以Windows认可的某种方式定义。但是,用户还是需要打印机的安装盘,如果Windows本来就支持这种打印机的话,只要Windows的安装盘就可以了。

打印机驱动器定位

打印机驱动器定位是Samba的一个选项,使你能够指定打印机驱动软件的位置。虽然你可以在共享的Linux目录中选择适合打印机驱动器和相关文件的选项,但这个选项对许多打印机驱动器不起作用,而且你也可能因为在网络中没有得到使用软件的许可而侵犯了作者了的版权。

Samba打印故障处理

如果在Linux系统上你的打印机可以正常工作,但不能通过Samba实现打印服务,用超级用户登录,用文本编译器打开/etc/smb.conf,仔细检查你的输入。运行testparm /etc/smb.conf,仔细查看输出结果,找出错误标志。确信/dev/null对任何用户都是可写的(做法是:键入ls -l /dev/null,按回车,查看文件读取权限)。Samba通过/dev/null来忽略不需要的输出。如果这个文件不是对所有用户可写的,用超级用户登录,键入chmod a+w /dev/null,按回车。如果你的打印机只输出代码而不是你想要的图形,在/etc/samba.conf文件的打印机定义中添加postscript = yes。

费用分担

在这篇文章中,你了解了怎样修改Samba配置,使得连接在Linux系统上的打印机可以被整个网络中的Windows和Linux/UNIX主机所使用。在不同的平台上实现网络服务意味着更高的效率和更少的费用。