用 Linux 和 Samba 提供局域网文件打印服务
Linux操作系统配上Samba服务能够全面支持Windows的文件和打印服务。有资料表明,客户(Client)端用户几乎不能分辨服务器(Server)端采用的是Samba服务器还是Windows NT服务器。Samba软件包还可以安装到任何一台类Unix的机器上,稍加配置,即可为用户提供类似Windows NT的文件和打印服务。Samba的官方网址是http://www.samba.org,其最新版本可以从ftp://ftp.samba.org下载。
下面以Redhat公司的Redhat 6.0为例。我采用了一台Compaq的486档次的机器,另外配一块4.3G硬盘,NE2000兼容网卡。
一、Linux和Samba软件包的安装
首先安装Redhat 6.0。注意安装时可选择安装Samba软件包,并自动启动smb服务。那么重新启动机器后,输入命令 #ps -ef ,可以看到两个进程smbd -D和nmbd -D 。其中smbd是smb的daemon ,nmbd是为Client提供Netbios名字服务的daemon。这说明Samba服务已经启动了。
如果你在安装系统时没有选择Samba软件包,或者你是在其他UNIX机器上安装下载的Samba软件包,那么通常可以将Samba软件包拷贝到/usr/local目录下,用下列命令解包:
#tar xvfz samba-2.0.5.tar.gz
按照readme文件的指示可以非常容易地完成安装。注意:daemon程序应在/usr/sbin目录下,其他可执行程序在/usr/bin目录下,配置文件smb.conf在/etc目录下。
两个daemon程序可以作为独立的进程运行,也可以从inetd启动。软件默认为独立进程运行。如果想从inetd启动,先检查一下文件/etc/services保证下列行前的注释符“#”已被删除。
netbios-ns 137/tcp nbns
netbios-ns 137/udp nbns
netbios-dgm 138/tcp nbdgm
netbios-dgm 138/udp nbdgm
netbios-ssn 139/tcp nbssn
然后,在文件/etc/inetd.conf中加入下列行:
# Samba NetBIOS services (for PC file and print sharing)
netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd
重新启动inetd:#kill -HUP ′cat /var/run/inetd.pid′ 即可。
二、smb.conf文件的一般配置
Samba软件的基本配置均在同一个文件/etc/smb.conf中,该文件决定共享的资源和权限。smb.conf文件是按段划分的,诸如:[global]、[printer]、[home]段。[global]段定义了Samba服务提供的共享资源所引用的相同的一些变量。[home]段通常定义了Linux机器上共享出来的目录资源,其名字可以由用户确定。[printer]定义了Linux上共享打印机的设置。下面是我的一个实例:
[global]
netbios name = Red;定义Windows“网上邻居”中所见的机器名
workgroup = office;定义工作组名
printing = bsd
printcap name = /etc/printercap;共享的打印机文件
load printer = yes;是否加载/etc/printercap中的打印机
log file = /var/log/samba-log.%m;定义日志文件
security = share;定义访问限制
[public];“网上邻居”中看到的共享资源名
comment = This is Redhat Server;注释行
public = yes
browseable = yes;为yes时,“网上邻居”中可见该资源;否则不可见
writeable = yes;定义该共享目录可写入
path = /home/public;指定共享目录所在的路径
[printers] path = /var/spool/lpd/lp;定义打印机的路径,要与/etc/printercap中spool目录中的设置一致 security = server
printer name = lp
writeable = yes
printable = yes
print command = lpr -r -h -P %p %s;定义打印命令
三、共享目录采用user模式时的设置
有时,我们要对Linux上共享目录的访问进行限制。访问限制有三种:share、user、server。默认模式为share,安全级别最低。user模式要求连接时输入用户名和口令。server模式要求用户的认证由Samba服务器来完成。通常我们用到的是user模式。这时要注意,Windows系列默认采用加密口令传输,而Linux默认采用非加密口令传输。此时可采用下列两种方法之一。
1.修改Windows注册表
对Windows 95/98:
在HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\VxD\\VNETSUP下
增加一个新的DWORD键值EnablePlainTextPassword 0x01
对Windows NT:
在HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Rdr\\Parameters下增加一个新的DWORD键值EnablePlainTextPassword 0x01
2.在smb.conf文件中[global]段中加入下列行:
security = user
encrypt passwords = yes
smb passwd file = /etc/smb/passwd
建议采用第二种方式,避免修改局域网中的每一台Windows机器。
设置是否加密口令后,还要建立smb账户。实际上,这些smb账户就是作为网络客户登录的Windows用户。
#cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
然后编辑/etc/smbpasswd文件,删除多余的账户。
如果Windows网络客户还不是Linux用户,则可用下列命令增加:
#adduser username 添加该用户为Linux用户
#smbpasswd -a username 添加该用户为smb用户
修改smb账户的口令,最后与/etc/passwd中的口令一致,以便于管理。
#smbpasswd username
四、检查配置并重新启动Samba服务
smb.conf文件配置完成后,可以用命令对配置语法进行检查。
#/usr/bin/testparm
如果配置文件中有语法上错误,可及时进行修改。正确无误后,用下列命令重启Samba服务(独立进程时):
#/etc/rc.d/init.d/smb restart
此外,必须注意以下几点:
1.Samba要求你的机器处于同一个网段中,并且客户端必须配置TCP/IP协议,其他协议下Samba不能工作。
2.Samba不能跨路由器工作,如果需要提供跨路由服务,还需要设置IP隧道。
3.如果你的机器安装了两块网卡,则应在/etc/smb.conf文件的[global]段中写入下列行:
interfaces = 192.168.1.1/24 其中的24表示C类地址。
4.共享出来的目录还应修改访问限制为777。
就这样,无需更多的投入,一台闲置的486机器,稍加改造,又顺利地投入了运行。该方案比较适合在七八人的小型办公环境中采用。
发布人:zeus 来自:丁 望