一、samba簡介
這里要提到的Samba可不是桑巴舞。Samba是一款可以在Linux和Windows之間通過SMB/CIFS(Server Message Block/Common Internet File System)共享文件和打印機的開源/免費套件。[1][2]
二、背景
我需要將打印機共享給辦公室其他用戶。考慮到其他用戶都是windows,且有時我也需要使用windows操作系統。因此使用ipp網絡共享並不理想。故選擇了Samba。
環境:Windows 7 + Fedora 19雙系統。HP M1136MFP一體機。
由於是個人電腦,為了使用方便我已經關閉(disabled)了SELinux
我想實現的最終目標是,不論我是進入本機的windows系統還是Fedora 19,局域網其他用戶均可以使用共享打印機。
三、過程
1、首先安裝打印機驅動。M1136MFP的驅動在HP Linux Imaging and Printing網站有[3]。而Fedora19的官方軟件源已經收錄了該軟件,可以通過yum在線安裝
sudo yum install hplip hplip-gui
安裝完成后執行 hp-setup,將彈出向導。按照向導依次執行。
我在安裝過程中發現總是在找到硬件后發生卡頓,ps了一下看到有一個下載hplip_web.conf文件的事件。推測是該下載失敗。手動復制地址到瀏覽器中,發現確實不能訪問。因此我首先通過web代理將文件抓取到本地。然后將文件放入本地http的對應目錄中,修改了/etc/hosts將程序所訪問的域名使其指向我本地的http,從而解決了這個問題。
此后過程中,系統下載插件列表同樣失敗。而我使用上述方法發現雖然插件列表(plugin.conf)能夠下載了,但不能下載插件。因此我手動下載了插件列表並從該配置文件中尋找到為所使用版本的plugin文件進行下載,手動安裝並通過了安裝向導。
2、安裝samba
Fedora 19 的源中收錄了samba 4.0,同樣可以使用yum直接安裝
sudo yum install samba
安裝完成之后,修改samba配置文件/etc/samba/smb.conf
其中,在全局設置[global]部分找到以下行並修改
workgroup = WORKGROUP #配置工作組名稱。默認情況下沒有加入域的windows 7計算機工作組為WORKGROUP
netbios name = ZSUN-702 #配置NetBIOS 名稱,即在windows共享中看到的計算機名
hosts allow = 192.168.130. #配置允許訪問的地址。最后一段不填表示允許任意值,我這兒就是192.168.130.1-192.168.130.254
security = user #安全模式為user。注:samba4.0不允許public
server role = standalone server
map to guest = Bad User #此選項將訪客用戶影射為nobody
load printers = yes
printcap name = cups
disable spoolss = No
cups options = raw
use client driver = yes #使用客戶端的驅動
在[printers]部分修改以下內容
browseable = yes
guest ok = yes
writable = yes
printable = yes
printer name = m1136mfp #后台使用的打印機名稱
3.啟動samba相關服務
sudo systemctl enable {s,n}mb.service sudo systemctl start {s,n}mb
4.修改防火牆設置
sudo firewall-cmd --add-service samba sudo firewall-cmd --permanent --add-service samba
當然,也可以使用圖形界面的"防火牆"啟用samba
完成了上述步驟就可以測試了。
四、使用同名Windows共享發現的一點問題
由於我的電腦是先做了Windows打印機共享再做的同名的samba共享打印機,部分用戶在我做完windows打印機共享之后就進行了連接打印了材料。完成Linux的配置后我偶然發現,此前連接我的Windows共享打印機的人不能打印到我的samba。而此前如果連接的是samba,當我重啟到Windows后仍然可以打印。
最初我非常費解。連續調試了兩天后我發現,添加我的Windows共享的人發送任務時,有一條錯誤發生,“ Unable to print file to HP LaserJet Professional M1136 MFP - client-error-not-found”,仔細查了下日志,還發現一條“ Unable to get jobs for ipp://localhost/printers/HP LaserJet Professional M1136 MFP - client-error-not-found”。后來理解了,HP LaserJet Professional M1136 MFP是我的打印機在windows下的打印機名稱。添加了我的Windows打印機的人雖然看起來添加的是M1136MFP這個共享,但是后台還是向“HP LaserJet Professional M1136 MFP”發送打印任務。而在Fedora 19下我的打印機名就叫M1136MFP,導致此部分人在我使用Linux時不能打印到我的samba。經過嘗試,刪掉從Windows添加的打印機,在我使用Fedora時重新添加打印機就可以解決這個問題了。這是Samba與Windows共享的一點差異?還是可以通過配置解決?如果有知道的還請高人指點!
[1] http://wiki.samba.org/index.php/Main_Page