[root@linux ~]# vi /etc/samba/smb.conf
[global]
.....其他省略.....
#这里列出的则是打印机相关的资料啊!
printcap name = cups
load printers = yes
printing = cups
[printers] <==这个分享的资源名称一定是printers
comment = All Printers
printable = yes <==可以进行打印的功能
browsable = yes <==可以让其他人浏览
public = yes
valid users = @users dmtsai <==可使用的人员有这些
path = /var/spool/samba <==打印伫列的地方,暂存资料
printer admin = dmtsai <==这是打印机管理员!需要可使用SAMBA者
此外还要添加一个Samba用户,该用户必须是系统存在的用户
[root@localhost~]smbpasswd -a ghost
[root@localhost~]chown ghost /etc/samba/drivers
因为打印机的管理员和驱动的管理员都设定为ghost,所以也要对该文件夹改变一下权限。然后还得cups-samba-1.1.16.tar.gz和cups-windows-6.0-1.i386.rpm(软件包的版本自己选),如果是rpm包的话直接安装就可以了,如故是源代码包的话,要安装在/usr/share/cups/drivers,
此外还要到windowsXP系统C:\WINDOWS\system32\spool\drivers\w32x86\3下去拷贝以PS开头的文件,然后把文件名都改成小写的,全部放在/usr/share/cups/drivers,但是一般在windows系统下默认没有这些文件,所以可以到Adobe网站http://www.adobe.com/support/downloads/product.jspproduct=44&platform=Windows)去下载PostScript,
然后在windows系统安装后在拷贝那些文件。
然后就要告诉Samba,让CUPS提供客户端windows2000/XP的打印驱动cupsaddsmb -H[samba主机名] -h[cups主机名] -a -v -U [用户账号]然后就会罗列出一些信息,
最后出现类似如下信息才算安装成功:Printer Driver [打印机名] successfully installed.Succesfully set [打印机名] to driver epson.
然后在/etc/samba/drivers下会出现一个W32X86的文件夹,里面的文件就是提供给客户端的驱动程序。
在打印过程中可以登录到Samba主机查看打印机的状态,打印工作等信息。
(1)lpstat:查看打印状态
(2)lpq:查看打印工作队列
(3)lprm:删除等待的打印队列
基本上透过这样的设定你的Samba就能够顺利的提供打印机的服务了!不过可惜的是,Windows用户端依旧得要安装打印机的驱动程式才能够使用Samba所提供的打印机,此时真是麻烦兼讨厌啊~有没有可能让Samba主动的提供驱动程式给使用者,这样一来用户端就不需要额外去找驱动程式啰!是可以的,透过Samba 3.x即可处理!
或许你会想,打印机的型号这么多,那么Linux该如何提供这些打印机的驱动程式啊?岂不麻烦?还好啦, CUPS主要是透过利用Post.的打印语言与打印机沟通的,因此用户端只要取得post.的驱动程式他们就能够使用咱们的Samba服务器所提供的打印机了!如此一来,不论打印机的型号为何,只要他们能够支持Post.的打印格式,OK搞定!而且CUPS官网本身就有提供CUPS的Post.驱动程式啰!
可以到底下的连结去下载:
支持多种CUPS版本:[url]http://ftp.easysw.com/pub/cups/windows/[/url]
支持CUPS 1.2以上版本:[url]http://www.cups.org/windows/software.php[/url]
由于CentOS 4.x使用的是1.1.x版本,所以鸟哥下载的是cups-samba-5.0rc3.tar.gz这个档案,接下来我们要将这个档案解压缩,然后将相关的程式给他安装到正确的目录去。
不过您得要注意的是,除了这个驱动程式外,要支持Windows 2000/xp的用户端,你还得到Windows XP的底下目录去下载几个档案:
C:\WINDOWS\system32\spool\drivers\w32x86\3
里面的PS开头的档案通通下载下来,应该有四个档案的,请将他复制成为小写的档案,并且放置到你Samba主机上的/usr/share/cups/drivers/目录下,然后将cups- samba-5.0rc3.tar.gz解压缩后执行./cups-samba.install档案,就能够将驱动程式通通安装到/usr/share/cups/drivers/目录下了!这就是基本的驱动程式!在鸟哥的这个目录底下至少含有这几个档案就是了:
[root@linux ~]# ll /usr/share/cups/drivers
-r--r--r-- 1 root root 14234 Sep 24 2002 cups5.hlp
-r--r--r-- 1 root root 280268 Jan 4 2004 cupsdrv5.dll
-r--r--r-- 1 root root 219540 Jan 4 2004 cupsui5.dll
-rw-r--r-- 1 root root 129024 Dec 27 14:18 ps5ui.dll
-rw-r--r-- 1 root root 455168 Dec 27 14:18 p.5.dll
-rw-r--r-- 1 root root 27568 Dec 27 14:18 p..hlp
-rw-r--r-- 1 root root 792644 Dec 27 14:18 p..ntf
上述的档案鸟哥将他打包成为一个档案了,你可以在底下的连结下载:
[url]http://linux.vbird.org/linux_server/0370samba/cups-samba-windows.tgz[/url]
不过您得注意,这个档案内的Windows资料是由Windows XP上面捉来的,所以对于Windows 98/ME是没有作用的。您得自行上网查阅相关的资料下载方式喔。
接下来我们必须要在smb.conf里面增加一笔新的分享资料,这个分享资料必须是[print$]名称才行!有点类似这样啦:
[root@linux ~]# vi /etc/samba/smb.conf
.....其他省略.....
[print$]
comment = Printer drivers
path = /etc/samba/drivers <==存放打印机驱动程式的目录
browseable = yes
read .ly = yes
write list = dmtsai <==这个驱动程式的管理员
.....其他省略.....
[root@linux ~]# mkdir /etc/samba/drivers
[root@linux ~]# chown dmtsai /etc/samba/drivers
#因为我们将打印机管理员以及驱动程式管理员的身份设定为dmtsai这个使用者, 因此存放的目录也要改变一下权限才行呐!
[root@linux ~]# testparm <==测试语法
[root@linux ~]# /etc/init.d/smb restart <==重新启动
[root@linux ~]# smbclient -L //127.0.0.1 -U dmtsai
Password: <==输入密码先
Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer drivers
hplaser2300 Printer HP Laser Jet 2300 printer
#瞧!有看到一部打印机以及驱动程式所在的分享资料啰!
现在我们要告知Samba说,我们的CUPS可提供Windows 2000/XP用户端的驱动程式,所以用户不需要自行设定他们的驱动程式哩!要由cups告知Samba是由cupsaddsmb这个指令来搞定的,整个指令的执行很简单的:
[root@linux ~]# cupsaddsmb -H [SAMBA主机名] -h [CUPS主机名] -a -v -U [使用者帐号]
参数:
-H :后续接的是Samba主机名,本机的话可以直接用localhost即可;
-h :后续接的为CUPS的主机名,同样的可使用localhost即可;
-a :搜寻所有可用的打印机;
-v :列出更多的资讯;
-U :打印机管理员
范例:利用前面的说明将打印机驱动程式挂上SAMBA
[root@linux ~]# cupsaddsmb -H localhost -U dmtsai -a -v
Password for dmtsai required to access localhost via SAMBA: <==输入dmtsai密码
#这里会闪过很多的讯息,说明已经安装了某些资讯,底下鸟哥仅列出简单的讯息而已。
putting file /usr/share/cups/drivers/p.5.dll as \W32X86/p.5.dll (1438.5 kb/s) (average 1342.5 kb/s)
Printer Driver hplaser2300 successfully installed.
Succesfully set hplaser2300 to driver hplaser2300.
[root@linux ~]# ll /etc/samba/drivers
drwxr-xr-x 3 dmtsai dmtsai 4096 Dec 27 14:40 W32X86
最后在驱动程式的存放目录会多出一个W32X86的目录,你可以查询一下该目录的内容,那就是预计要给用户端使用的驱动程式啦!这样就搞定了!不过,为了将所有的资料通通驱动,建议您将CUPS及SAMBA通通重新启动吧!
[root@linux ~]# /etc/init.d/cups restart
[root@linux ~]# /etc/init.d/smb restart
4.一些问题的克服
如果一切顺利的话,你在Windows用户端应该可以顺利的连接到打印机啰!开心吧!不过,如果你曾经印错资料,那么该如何进入Linux的Samba主机将该资料移除呢?你最好知道底下的几个指令,关于这些指令的进阶用法则请自行man了:
[root@linux ~]# lpstat -a
hplaser2300 accepting requests since Jan 01 00:00
#列出所有可用的打印机状态
[root@linux ~]# lpq
hplaser2300 is ready
no entries
#列出打印机的工作,若有打印工作存在时,会如下所示:
hplaser2300 is ready and printing
Rank Owner Job File(s) Total Size
active dmtsai 5 smbprn.00000003测试页42954752 bytes
[root@linux ~]# lprm all
#移除所有等待中的打印工作!