一、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