摘
要
本文较为详细地对Linux的Samba服务进行了剖析,内容涉及Samba的核心、语法、组成,以及
Samba的启动与停止。同时给出了定制Samba的几个技巧。
关键词
Samba,剖析,定制
1
引
言
Linux是一个优秀的网络操作系统,它可与多种网络集成。Linux系统的稳定性、可靠性受到了广大用户
的欢迎,在小型网或者在公司、部门、单位等内部网(Intranet)上,常将Linux充当有效而强劲的文件
和打印服务器,让windows客户机共享Linux系统中的文件。这种Linux与
windows网络集成是通过samba
来实现。Samba是一组软件包,使Linux支持SMB协议,该协议由TCP/IP实现,它是windows网络文件和打
印共享基础,负责处理和使用远程文件和资源。在缺省情况下,windows工作站上的Microsoft
client使
用服务消息块(SMB)协议。正是由于samba的存在,使得windows和Linux可以集成并互相通讯。
2
Samba核心
samba的核心是两个守护进程smbd和nmbd程序,在服务器启动到停止期间持续运行。Smbd和nmbd使用的全
部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,
共享输出给谁及如何进行输出。Smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与
Linux进行协商,nmbd进程使其它主机(或工作站)能浏览Linux服务器。
3
Samba语法
一个完整的
smb.conf一般由Global
settings和share
Definitions两部分组成。每部分由消息头和参数
两部分构成。消息用“[
]”标志,参数结构形式为:
parameter
=
value。
其中,parameter可以是一个或用空格分隔的多个单词,value
可以是布尔值、数字或字符串。参数告诉
了smba提供何种服务。
在smb.conf文件中,注释行以“#”开头,同时每项中英文字母不区分大小写,在一行最后字符尾加
“”,可将一行分成多行。用“;”开头的行,是可改变的配置,将“;”去掉时,该配置将取作用。
4
Samba组成
4.1
Global
settings(全局参数的设置)
该部分由[global]段完成Global的设置,该部分提供了全局参数,对samba的功能具有很大的影响,主要
用来设置整个系统规则。[global]段主要参数有:
workgroup=mygroup
提供NT域名
或工作组名
,
mygroup是系统Red
Hat6.0预置的名
字,
用户可根据
实际情况,
给出与windows的域名
或工作组名
相同
的名
字,
以指
出samba将在该域或工作组范围中
起作用。
server
string=samba
server
指
定服
务信息通常为samba服
务。
hosts
allow
允许登录的Linux-samba的主机名
单,
用IP地址给出,
多个IP地址用空格分开,
不
在
名
单中的主机将不
能得到samba提供的服
务,
这也是网络安全的一个方面。
printcap
name
指
定printcap文件地址,
通常为/etc/printcap,
包含了Linux打印机的配置信息,
在ReaHat
linux中,
lpd守护进程读取printcap文件的配置信息,
然后监测系统的打印请求并管理打印
进程。
load
printers
允许使用共享打印机时,
默认值为yes。
printing
如果使用的打印机是非标
准的,
那么应该指
出打印机系统类型。在Linux环境中,
通常指
定为bsd类型。
guest
acount
来宾帐户,
表示用哪一个Linux用户作为所要的客户连接。由于该帐户权限很小,
root
用户通常将其置为nobody。
security
指
定安全模式。大多数用户使用user级的安全模式,
samba用本地Unix口令文件验证。如果
设置为server时,
samba将用password
server设定windows
NT域服
务器验证方式,
格式为password
server=NT域名
。
domain
logons
为从win95工作站登录samba提供域名
登录服
务,
应使该项置为yes。
preserve
case
与short
preserve
case
由于在Linux系统中英文大小写视为不
同
的内容,
为在
windows中保持原有的大小写状态,
这两项全置yes。
4.2
Share
Definitions(共享定义)
4.2.1
[homes]段
在[homes]部分指定windows共享的主目录,如果在windows工作站登录的名字与Linux用户名相同,提供
的口令也一致,那么打开网络邻居,双击共享目录图标,就可获得访问该目录的权力。从windows访问
Linux主目录时,用户名作为主目录共享名。[homes]段的主要参数有:
comment
说明提供的服
务为Home
Directories服
务。不
影响操作。
browseable
指
定其它用户能否浏览该用户主目录。一般置为no,
禁止其它用户访问,
确保数据安
全。
writable
使用户访问该目录时具有读取和写入主目录中的文件时,
取值为yes,
只有读取权限时应置
为no。
4.2.2
[printers]段
[printers]部分用于指定如何共享
Linux网络打印机,从windwos系统访问Linux
网络打印机时,共享应
是printcap中指定的Linux打印机名。该段中主要参数有:
browseable
若取值为yes,
则允许其它用户访问打印机。否则,
限制其它用户的访问权。
printable
应置为yes,
才能实现打印。
public
置为no时,
客户帐号不
打印出来;置为yes,
则打印出客户帐号。
writable
打印机是输出设备
,
不
可写入,
应置为no。
4.2.3
[tmp]段
该部分是为所有用户提供临时共享方法。主要参数有:
path
指
定临时共享路径。通常为/tmp。
read
only
置为no时,
用户对/tmp有可读、可写和执行的权限。
public
一般置为yes,
以便让所有用户共享使用/tmp目录。
4.2.4
[public]段
该部分提供了所有用户都可以共同访问的目录。除了那些属于维护人员具有读、写、执行权外,用户只
具有读取的访问权限,主要参数有:
path
指
定公众共享目录路径,
通常为/home/samba。
public
取值为yes,
允许公众共享。否则,
禁止公众共享/home/samba目录。
writable
取值为yes时,
公众有可写权力。
printable
取值为no时,
无打印权力。
write
list
指
定具有可写权力的用户名
单。
4.2.5
[fredsprn]段
该段用于指定专用打印机。
comment
指
出打印机名
字。
valid
users
使用该打印机的有效用户。
path
专用打印机使用的缓冲池数据存放在用户主目录。
printer
指
出使用哪一个专用(私用)打印机。
public
该打印机不
共享,
仅作专用(私用)。
writable
缓冲池中的数据不
可写,
应置为
no。
printable
指
定打印能否启动,
一般值为yes。
4.2.6
[fredsdir]段
本段用于指定私用目录,以供指定的用户使用,该用户对该目录具有写权限。
comment
注明该目录为谁提供服
务。
path
指
定私用目录路径,
以便指
定用户可读写。
valid
users
指
定使用该私用目录的合法用户。
public
当取值为no时,
该私用目录不
供公众用户所共享。
writable
指
定的用户对该私用目录具有写权限时,
取值应为yes。
printable
取值为no时,
不
可打印。
5
samba的启动与停止
在缺省情况下,Red
Hat
Linux的samba在启动时就已投入运行。也可利用系统脚本来手工启动和停止
samba。具体方法如下:
#
/etc/rc.d/init.d/smb
start
(启动samba)
#
/etc/rc.d/init.d/smb
stop
(停止samba)
6
定制samba技巧
用户通过对smb.conf文件进行vi编辑,可以添加、删除及修改smba提供的多种服务。Smb.conf一般位于
/etc
目录下,在定制符合实际需求的smb.conf时,最好使用
#
cp
/etc/smb.conf
/etc/smb.conf.old
进行保存。要查看smb.conf的内容时,可执行:
#
vi
/etc/smb.conf
6.1
向公众开放
Linux文件资源,来访者只有读权限。
[public]
comment=public
stuff
path
=
/
public
=
yes
writable
=
no
printale
=
no
write
list
=
@staff
6.2
共享CD-ROM
修改smb.conf之前,先安装光驱,可执行下列命令:
#
mount
-
t
iso9660
/dev/cdrom
/mnt/cdrom
然后定制samba,内容如下:
[cdrom]
path
=
/mnt/cdrom
ready
only
=
yes
public=
yes
6.3
为多个用户提供服务
comment
=
userl’sstuff,user2’sstuff,user3’sstuff
path
=
/home/user1
(用户userl的主目录)
valid
users
=
user1
user2
user3
public
=
no
(除了user1,user2,user3外不向公众用户开放)
writable
=
yes
(三用户对/home/user1中的文件有写权限)
printable
=
yes
(允许打印)
6.4
向公众用户开放/dev目录,浏览设备类型。
[dev]
comment
=
open
and
browse
the
/dev
directory
path
=
/dev
(路径为/dev)
ready
only
=
yes
(只读)
public
=
yes
(公众共享)
通信地址:湖北孝感学院计算机科学系(432100)
李革新
联系电话:0712-2841540
E-mail:
lgx2000@yeah.net