欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Samba之打印机共享配置 (CUPS系统) 有大用

Samba  之打印机共享配置 (CUPS系统)
 
本文摘录自鸟哥的Linux私房菜。
 
Samba可以针对磁盘与目录来进行分享,那么SAMBA有没有可能分享打印机呢?如果说,能够让我们办 公室的File Server同时提供打印机的功能,如此一来,藉由Linux这个作业系统可以24小时开机的稳定功能,我们就可以随时进行打印啰!所以,底下我们就以 SAMBA进行打印机打印功能的提供者的角度,来介绍这个smb.conf的设定喔!

在Linux底下进行打印的工具很多,不过我们这里要介绍的仅有目前较广为流行的CUPS (Common Unix Printing System)这一个。
详细的CUPS安装设定方法我们已经在基础篇的CUPS章节当中提过,所以这里我们不再详细说明,仅介绍大致的处理流程就是了。
 
如果你需要较早期的LPRng打印系统的话,建议可以参考底下的资料喔:
依玛猫的打印文件:[url]http://www.imacat.idv.tw/tech/lnxprint.html[/url]
鸟哥的LPRng简介:[url]http://linux.vbird.org/linux_server/0370samba/0370samba.php[/url]
 
底下就来谈一谈一般常见的流程说明吧:
-------------------------------------------------- ----------------------------
1. 安装打印机与确定启动
再 次说明,并不是所有的打印机都被Linux所支持的,所以当你想要连结一部打印机到Linux系统上时,请务必到 [url]http://www.linuxprinting.org/printer_list.[/url] cgi上去看看是否有被支持喔!如果没有被支持,那就换一部打印机吧!不要进行垂死的挣扎了....

如果你的打印机连接埠为USB或者是平行序列埠的话,那么当你连接上打印机后,可以利用底下的方式测试看看是否成功的连接上了:
[root@linux ~]# echo "Hello printer" > /dev/lp0 <==平行序列埠  
[root@linux ~]# echo "Hello printer" > /dev/usb/lp0 <==USB埠
如果打印机有回应,这表示OK的啦!你可以进行底下的工作了。如果你的打印机为网络打印机呢?就是说打印机有IP的情况下,那么该打印机就不需 要加入Samba啦!因为该打印机本身就可以直接提供用户端连接,根本不必透过Samba来提供网络连线的嘛!当然啦,如果你有特殊需求,将网络打印机加 入Samba server来提供给网络中的其他用户,也是可以的啦!底下直接来看看如何使用CUPS吧。

-------------------------------------------------- ----------------------------  
 2.  设定CUPS的打印机  
请先确认你的CUPS已经安装妥当了,原则上,你必须要有底下两个套件存在才行:
cups-libs  
cups
 
接下来我们可以开始设定CUPS了!设定的原则是这样的:
我需要让192.168.1.0/24这个网域可以使用打印机
我需要让192.168.1.0/24及127.0.0.0/8可以管理CUPS系统
然后开始这样做:
[root@linux ~]# vi /etc/cups/cupsd.conf
#底下这个项目在控制谁可以使用CUPS系统,约在772行左右,
#找到这些资料并增加一笔记录:

Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.0/24
 

#底下的项目则在设定谁可以登入CUPS系统的管理界面?
#约在830行左右,找到这些资料并进行一些细部修改:

#AuthType Basic
#AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.0/24
 

#在最后一行的地方加上这一句    
Listen 0.0.0.0:631
#上面在设定一个不需要密码即可登入的管理环境,是个很粗糙的界面,  
#建议您自行处理一下认证问题,请参考基础篇的说明。
 
另外,为了要进行Windows相关软体所传来的打印资料,所以我们还需要对CUPS作一些额外的设定,过程也是很简单的:
[root@linux ~]# vi /etc/cups/mime.convs
#大概在最后几行的地方,找到这一行,将注解拿掉!
application/octet-stream application/vnd.cups-raw 0 -
 

[root@linux ~]#   vi /etc/cups/mime.types  
#同样也是在最后面几行的地方,也是将注解拿掉即可!  
application/octet-stream  
 

设定完毕后就可以开始来启动cups系统,可以这样做:
[root@linux ~]# /etc/init.d/cups start  
[root@linux ~]# netstat -tunlp | grep '631'  
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 18271/cupsd  
udp 0 0 0.0.0.0:631 0.0.0.0:* 18271/cupsd
那个631的埠口就是CUPS所启动的啦!然后我们可以开始设定打印机了!
由于CUPS支持很多不同的打印机连接埠,每种连接埠都不一样,常见的有:  
USB连接埠: usb:/dev/usb/lp0  
平行序列埠: parallel:/dev/lp0  
网络打印机: ipp://ip/打印机型号  
网络邻居打印机: smb://user:password@host/printer
 

假设我们的Samba上头接了一部usb连线的打印机,而我要将这部打印机取名为hplaser2300时,你可以使用浏览器连接到Samba主机上头,必须注意到网址喔:

image.png

 图一、CUPS的管理界面示意图

如上图一所示,先在网址列的地方务必要输入端口才行!然后按下箭头『 2 』所指的地方,亦即是『Manage Printer』之后再按下『Add printer』的按钮,就会出现如下画面,记得要填写正确的资料喔!

image.png

图二、CUPS的管理界面示意图

然后如下图所示,选择正确的装置所在处!我们假设使用的是USB的打印机连接埠:
  image.png
图三、CUPS的管理界面示意图

之后就是选择正确的型号啰,假设这部打印机为HP所出产的:
  image.png
图四、CUPS的管理界面示意图

选择标准的雷射打印机驱动程式吧!
  image.png
图五、CUPS的管理界面示意图

最后都成功后,就会找到如下所示的画面了。
  image.png
图六、CUPS的管理界面示意图

到此为止我们可以假设你的CUPS已经有一部打印机存在了,即使该打印机目前无法工作,但是就是有一部打印机嘛! ^_^!接下来看看如何将他连结到咱们的Samba服务器中吧!

-------------------------------------------------- ----------------------------  
 3.  在smb.conf当中加入打印机支持  
然后开始告诉Samba将这部打印机给他分享出去吧!你需要这样处理:
[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就能够顺利的提供打印机的服务了!不过可惜的是,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  
#移除所有等待中的打印工作!  
 
 

打印工作就是这样进行的啦!赶紧试看看吧!


来自  https://blog.51cto.com/yuanbin/115768 

https://blog.csdn.net/caoshunxin01/article/details/79355243


为samba共享的打印机添加Windows驱动

首先在samba中增加一个print$的共享,用来存放windows驱动。windows网上邻居共享打印机也是同样采用这样的方式安装驱动的。
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
再拷贝一些windows下必要的文件到/usr/share/cups/drivers/,其中一部分在cups-windows包中,其余需要到windows XP下自行拷贝,罗列如下:
-rw-r--r-- 1 root root     803 01-15 11:38 cups6.inf
-rw-r--r-- 1 root root      72 01-15 11:38 cups6.ini
-rw-r--r-- 1 root root   12568 01-15 11:38 cupsps6.dll
-rw-r--r-- 1 root root   13672 01-15 11:38 cupsui6.dll
-rw-r--r-- 1 root root  728576 01-15 14:04 ps5ui.dll
-rw-r--r-- 1 root root  543232 01-15 14:03 pscript5.dll
-rw-r--r-- 1 root root   14787 01-15 14:05 pscript.hlp
-rw-r--r-- 1 root root 1060548 01-15 14:05 pscript.ntf
***只需要运行cupsaddsmb -H localhost -U user printer1 -v即可为打印机添加windows驱动。

来自  https://os.51cto.com/art/200902/109892.htm



普通分类: