Samba
之打印機共享配置 (CUPS系統)
本文摘錄自鳥哥的Linux私房菜。
Samba能夠針對磁盤與目錄來進行分享,那麼SAMBA有沒有可能分享打印機呢?若是說,可以讓咱們辦公室的File Server同時提供打印機的功能,如此一來,藉由Linux這個做業系統能夠24小時開機的穩定功能,咱們就能夠隨時進行打印囉!因此,底下咱們就以SAMBA進行打印機打印功能的提供者的角度,來介紹這個smb.conf的設定喔!
在Linux底下進行打印的工具不少,不過咱們這裏要介紹的僅有目前較廣爲流行的CUPS (Common Unix Printing System)這一個。
詳細的CUPS安裝設定方法咱們已經在基礎篇的CUPS章節當中提過,因此這裏咱們再也不詳細說明,僅介紹大體的處理流程就是了。
底下就來談一談通常常見的流程說明吧:
-------------------------------------------------- ----------------------------
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了!設定的原則是這樣的:
我須要讓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行左右,
#找到這些資料並增長一筆記錄:
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.0/24
</Location>
#底下的項目則在設定誰能夠登入CUPS系統的管理界面?
#約在830行左右,找到這些資料並進行一些細部修改:
<Location /admin>
#AuthType Basic
#AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.0/24
</Location>
#在最後一行的地方加上這一句
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主機上頭,必須注意到網址喔:
圖1、CUPS的管理界面示意圖
如上圖一所示,先在網址列的地方務必要輸入端口才行!而後按下箭頭『 2 』所指的地方,亦便是『Manage Printer』以後再按下『Add printer』的按鈕,就會出現以下畫面,記得要填寫正確的資料喔!
圖2、CUPS的管理界面示意圖
而後以下圖所示,選擇正確的裝置所在處!咱們假設使用的是USB的打印機鏈接埠:
圖3、CUPS的管理界面示意圖
以後就是選擇正確的型號囉,假設這部打印機爲HP所出產的:
圖4、CUPS的管理界面示意圖
選擇標準的雷射打印機驅動程式吧!
圖5、CUPS的管理界面示意圖
最後都成功後,就會找到以下所示的畫面了。
圖6、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
不過您得注意,這個檔案內的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
#移除全部等待中的打印工做!
打印工做就是這樣進行的啦!趕忙試看看吧!