摘 要 本文较为详细地对
Linux的Samba服务进行了剖析,内容涉及Samba的核心、语法、组成,以及
K2 D$ e# d# _$ z9 B Samba的启动与停止。同时给出了定制Samba的几个技巧。
+ j# f: o9 P d: G & h; T# b8 O; y$ v
关键词 Samba,剖析,定制
/ b" {5 J {& i9 x2 s! [ # P: P3 \! B7 G5 Q
1 引 言
5 P: C- y5 ~- }+ Q. m % {+ T& m0 ?5 L
Linux是一个优秀的
网络操作系统,它可与多种网络集成。Linux系统的稳定性、可靠性受到了广大
用户
7 h$ |' s( s1 F 的欢迎,在小型网或者在公司、部门、单位等内部网(Intranet)上,常将Linux充当有效而强劲的文件
x2 r8 T+ m$ x6 G
和打印
服务器,让
windows客户机
共享Linux系统中的文件。这种Linux与 windows网络集成是通过samba
: R4 K q' \% m* a' r
来实现。Samba是一组
软件包,使Linux支持SMB协议,该协议由
TCP/IP实现,它是windows网络文件和打
: O/ H8 j3 S- C8 N
印共享基础,负责处理和使用远程文件和资源。在缺省情况下,windows工作站上的
Microsoft client使
+ N, }0 o3 l5 W! X
用服务消息块(SMB)协议。正是由于samba的存在,使得windows和Linux可以集成并互相通讯。
( Z" x) \8 I2 J/ P$ X2 m
- Z& d' j5 K, |8 `' A. M 2 Samba核心
+ x/ w2 w- e6 i
7 f0 M/ f d: o: T! M) L3 i samba的核心是两个守护进程smbd和nmbd
程序,在服务器启动到停止期间持续运行。Smbd和nmbd使用的全
/ H2 H( s- b9 w, O/ V+ ^ Q
部配置
信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,
R& i* \9 f/ z4 ?9 B7 d
共享输出给谁及如何进行输出。Smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与
1 Z; U1 Q4 a4 ~. F3 _! D
Linux进行协商,nmbd进程使其它主机(或工作站)能浏览Linux服务器。
2 h* v R* j/ ?* H! I5 [
+ \/ ]" o v0 u& V. Y# j6 S/ _ 3 Samba语法
- y3 P5 f: }8 T
% w! V' k2 Q5 A; j 一个完整的 smb.conf一般由Global settings和share Definitions两部分组成。每部分由消息头和参数
6 l) X8 ]0 J. O+ c4 p: o* y+ @ 两部分构成。消息用“[ ]”标志,参数
结构形式为:
$ o9 c! b6 ]1 ]7 X7 r parameter = value。
+ q {3 D4 }- g1 n2 \8 e
其中,parameter可以是一个或用空格分隔的多个单词,value 可以是布尔值、数字或字符串。参数告诉
" a: D6 {$ G' H% A6 V! u+ Y8 B! ~
了smba提供何种服务。
9 z- d) I1 ?! a V$ `! L1 Q 在smb.conf文件中,注释行以“#”开头,同时每项中英文字母不区分大小写,在一行最后字符尾加
: ~; M' X7 t2 _ “\”,可将一行分成多行。用“;”开头的行,是可改变的配置,将“;”去掉时,该配置将取作用。
/ r& R% N3 o! Y; K' y& @" b
0 W& U8 b( \9 m$ \/ c) c5 l. ~ 4 Samba组成
2 ]2 U- _* Z! I' J- b5 Y8 ]9 `9 [
, f5 _: P" H7 w5 P& O" L 4.1 Global settings(全局参数的设置)
8 q |- s( j# e0 q% z' W( n
该部分由[global]段完成Global的设置,该部分提供了全局参数,对samba的
功能具有很大的影响,主要
/ Q+ V i/ g8 D7 Z7 R' h1 v 用来设置整个系统规则。[global]段主要参数有:
) B0 `! Z& {0 t- S2 O: Y
workgroup=mygroup 提供NT域名 或工作组名 , mygroup是系统Red Hat6.0预置的名 字, 用户可根据
; Z+ B4 ?$ v/ w" ~1 c* S
实际情况, 给出与windows的域名 或工作组名 相同 的名 字, 以指 出samba将在该域或工作组范围中
* H. _) a' e1 [# k7 e3 c6 q. S
起作用。
8 L" b" d5 L0 ]( q* V server string=samba server 指 定服 务信息通常为samba服 务。
, T. K0 o& _- Y. G2 L5 x8 u! E# z7 A
hosts allow 允许登录的Linux-samba的主机名 单, 用IP地址给出, 多个IP地址用空格分开, 不 在
D: T- K0 V% G5 i
名 单中的主机将不 能得到samba提供的服 务, 这也是网络安全的一个方面。
2 Z; {- ]7 w4 K, z5 G# q
printcap name 指 定printcap文件地址, 通常为/etc/printcap, 包含了Linux打印机的配置信息,
7 j# C. S, p9 _% h8 `: p6 Q 在ReaHat linux中, lpd守护进程读取printcap文件的配置信息, 然后监测系统的打印请求并管理打印
8 g' D- w# L' _+ ^. v; [
进程。
. y- t. E% h. I& X, o; A" F* ^ load printers 允许使用共享打印机时, 默认值为yes。
3 z! \0 }9 q, E) d
printing 如果使用的打印机是非标 准的, 那么应该指 出打印机系统类型。在Linux环境中, 通常指
2 i- j$ n" \; i0 n
定为bsd类型。
; d) A# O. S8 N8 X( j& V- v0 O7 b
guest acount 来宾帐户, 表示用哪一个Linux用户作为所要的客户连接。由于该帐户权限很小, root
6 u4 d0 J* W/ K9 W
用户通常将其置为nobody。
/ D# G# B; [, Q security 指 定安全模式。大多数用户使用user级的安全模式, samba用本地Unix口令文件验证。如果
1 J; t* T$ [9 m, g* a/ a/ K 设置为server时, samba将用password server设定windows NT域服 务器验证方式, 格式为password
) e% a: K9 w+ W7 h( L: Q! _
server=NT域名 。
, i, a# y+ [ x6 H2 ^ domain logons 为从win95工作站登录samba提供域名 登录服 务, 应使该项置为yes。
6 ]$ @7 B1 ?" P: O2 i; r$ y% S1 p
preserve case 与short preserve case 由于在Linux系统中英文大小写视为不 同 的内容, 为在
; _6 T) e# @* |3 e0 Q! p
windows中保持原有的大小写状态, 这两项全置yes。
. @3 i7 x) d$ [5 j 4.2 Share Definitions(共享定义)
! V% S& }$ {' l$ d/ h; o% }
4.2.1 [homes]段
" o) r7 F& `8 _2 m 在[homes]部分指定windows共享的主目录,如果在windows工作站登录的名字与Linux用户名相同,提供
$ ~' W# W! A2 q& z& }
的口令也一致,那么打开网络邻居,双击共享目录图标,就可获得访问该目录的权力。从windows访问
7 D5 p; b/ T0 R' d8 [ Linux主目录时,用户名作为主目录共享名。[homes]段的主要参数有:
/ F$ Z3 V4 y" ~' Z6 w comment 说明提供的服 务为Home Directories服 务。不 影响操作。
; y6 v2 }% S/ G browseable 指 定其它用户能否浏览该用户主目录。一般置为no, 禁止其它用户访问, 确保
数据安
# D3 s5 R/ C% y0 q9 \& G: | 全。
) N$ Q; Y$ z' E; [/ z% { writable 使用户访问该目录时具有读取和写入主目录中的文件时, 取值为yes, 只有读取权限时应置
7 G' A4 Y$ C% ~, P \' H
为no。
' K. V# o: \) l; z
4.2.2 [printers]段
% N K3 M! ^3 M' Z: ~6 c4 v [printers]部分用于指定如何共享 Linux网络打印机,从windwos系统访问Linux 网络打印机时,共享应
9 y; x9 T+ g( I8 e
是printcap中指定的Linux打印机名。该段中主要参数有:
* Y2 Q4 c& ~9 b& g browseable 若取值为yes, 则允许其它用户访问打印机。否则, 限制其它用户的访问权。
8 h5 `# _$ i' T p7 V
printable 应置为yes, 才能实现打印。
1 f& ]) G. A7 D+ c0 y Z. H
public 置为no时, 客户帐号不 打印出来;置为yes, 则打印出客户帐号。
/ S$ W' H' Q: F. M8 ^% C; | writable 打印机是输出设备 , 不 可写入, 应置为no。
1 }# p% X3 y' J# A( e 4.2.3 [tmp]段
2 Y4 A4 h$ j. o- W0 @( ~; u 该部分是为所有用户提供临时共享方法。主要参数有:
8 A3 b) {: _) B: _
path 指 定临时共享路径。通常为/tmp。
6 o' _2 U/ p% ?- O
read only 置为no时, 用户对/tmp有可读、可写和执行的权限。
}4 x/ `0 r, T
public 一般置为yes, 以便让所有用户共享使用/tmp目录。
: j0 F c) `* U$ M: y 4.2.4 [public]段
& U2 B H& D$ D6 e# Z5 i
该部分提供了所有用户都可以共同访问的目录。除了那些属于维护人员具有读、写、执行权外,用户只
( r; W4 G2 p; Z0 ]$ v
具有读取的访问权限,主要参数有:
, I( E5 _6 [9 z. {/ { path 指 定公众共享目录路径, 通常为/home/samba。
! d5 f+ i8 }- w! Q
public 取值为yes, 允许公众共享。否则, 禁止公众共享/home/samba目录。
, q' ~3 e& V3 e8 d: _( P+ W2 J
writable 取值为yes时, 公众有可写权力。
1 H% y8 p' T# |! A1 w$ [- y printable 取值为no时, 无打印权力。
$ O* p7 e/ h: m
write list 指 定具有可写权力的用户名 单。
; _) [; G: n* X 4.2.5 [fredsprn]段
& r& Y& a% t f0 E: I% C$ y: e
该段用于指定专用打印机。
# K+ q& X% q; V comment 指 出打印机名 字。
; ^- n7 G2 R+ r- a/ a3 J. M; a valid users 使用该打印机的有效用户。
% `) p: k- S. V9 n path 专用打印机使用的缓冲池数据存放在用户主目录。
# S; t8 t9 n+ k3 v& p
printer 指 出使用哪一个专用(私用)打印机。
: W% `- c- H4 O, R public 该打印机不 共享, 仅作专用(私用)。
, t6 l6 d( y5 _1 a writable 缓冲池中的数据不 可写, 应置为 no。
1 \) |: o9 ?- y2 C8 G+ `0 j- q printable 指 定打印能否启动, 一般值为yes。
: X. o$ R% Y2 T K0 M# A3 E 4.2.6 [fredsdir]段
1 c# K. t% S% N0 Q' G r 本段用于指定私用目录,以供指定的用户使用,该用户对该目录具有写权限。
: `4 F4 X- ^9 _0 ~4 T! i7 ^ comment 注明该目录为谁提供服 务。
* ]! V0 ^9 E3 T5 V6 h. Y" x
path 指 定私用目录路径, 以便指 定用户可读写。
7 v; n9 l6 o0 a: t. G' |3 P( ]' J valid users 指 定使用该私用目录的合法用户。
: d6 L1 ]* Z: W+ `+ T5 ^: I1 [
public 当取值为no时, 该私用目录不 供公众用户所共享。
$ d* H- n' }& d* F4 E! d( ^ writable 指 定的用户对该私用目录具有写权限时, 取值应为yes。
" _3 w% X4 o8 ^+ e
printable 取值为no时, 不 可打印。
! g5 U6 ]4 F8 G/ m) ] 4 U% F+ ~5 f+ E$ r7 S+ K2 [" t/ d
5 samba的启动与停止
3 H+ E5 X o9 N7 s# X/ d) H ?# N
5 r0 [, Z% p; F% L 在缺省情况下,Red Hat Linux的samba在启动时就已投入运行。也可利用系统脚本来手工启动和停止
+ T. w8 Z# j9 ]+ F samba。具体方法如下:
( c, c. E5 d' x( S- q* q) R # /etc/rc.d/init.d/smb start (启动samba)
4 m- n3 {; Y2 N, ^ # /etc/rc.d/init.d/smb stop (停止samba)
- B% W+ B3 X: b
. H" S r8 v( h5 T7 Z( o
6 定制samba技巧
0 Y+ N1 A) _# Z3 N
3 H, B' v8 B9 y$ Z1 F 用户通过对smb.conf文件进行vi编辑,可以添加、删除及修改smba提供的多种服务。Smb.conf一般位于
: {0 |% j4 y* ~: s/ |; G/ [' o /etc 目录下,在定制符合实际需求的smb.conf时,最好使用
4 \$ X+ u, x7 Y5 k # cp /etc/smb.conf /etc/smb.conf.old
. B4 e4 A. G" t6 b# W 进行保存。要查看smb.conf的内容时,可执行:
. A: ^+ \# J! K5 p6 Q9 b. ~ # vi /etc/smb.conf
' J8 H5 m& h t$ W1 @# _0 F 6.1 向公众开放 Linux文件资源,来访者只有读权限。
* y# k( v; Y. ^1 J8 e [public]
7 l. H3 C9 Q2 U+ F \* V
comment=public stuff
6 u7 H4 _/ N3 u" p- X
path = /
! S4 y9 ^- m+ S5 C public = yes
5 |3 ~4 l, p. L9 o) G8 } writable = no
( X+ q! a+ H3 P6 T, f printale = no
3 m, F. i$ d7 A: T/ o! ], E
write list = @staff
$ t: Y2 e# q8 W0 y$ O
6.2 共享CD-ROM
7 x3 I# H7 K) [. E% Z6 F7 `
修改smb.conf之前,先安装光驱,可执行下列命令:
# ]5 F( D0 E+ N. L$ C" `3 \
# mount - t iso9660 /dev/cdrom /mnt/cdrom
- I4 a" ~1 a& L+ Z, K
然后定制samba,内容如下:
4 f4 p4 I* Z& D- T' q- R
[cdrom]
* W2 z/ @2 U+ Q0 i+ F; w x
path = /mnt/cdrom
6 O0 b! K! n* D4 e( e/ b7 M ready only = yes
2 k+ q; i9 H' n* B6 V* t
public= yes
) }5 o# j( @9 \# R2 M# S) J3 r 6.3 为多个用户提供服务
1 p, j0 g/ N8 D5 \) w3 y6 D
comment = userl’sstuff,user2’sstuff,user3’sstuff
6 n* m- B+ F8 m# v) C* a& H path = /home/user1 (用户userl的主目录)
. w: A; e6 V3 [! l
valid users = user1 user2 user3
9 d* }2 x1 x+ x( p public = no (除了user1,user2,user3外不向公众用户开放)
$ p7 h7 b) q7 s; x writable = yes (三用户对/home/user1中的文件有写权限)
: q6 [4 G2 d v# H printable = yes (允许打印)
' j. [" v& I, t6 T5 J2 q 6.4 向公众用户开放/dev目录,浏览设备类型。
& C/ d: g. L* [' T& ?* r2 e
[dev]
i6 f) J5 U$ i, @8 |: ~ comment = open and browse the /dev directory
, [3 { f2 H( C3 L7 \( m
path = /dev (路径为/dev)
# O& y3 F' l5 y* P. u6 o t8 i ready only = yes (只读)
( R. P, a# }5 e1 K: F$ t
public = yes (公众共享)
^, `+ C3 r( u2 Q
4 g0 s+ A+ F- M8 R$ _9 e1 o$ _
% K( |9 Q) v3 `! s# l. V5 Z+ k5 |2 r8 t9 g, ~0 R0 H& Y
通信地址:湖北孝感学院
计算机科学系(432100) 李革新
& `# B% M4 g8 l/ t/ S4 d 联系电话:0712-2841540
) X/ L( l. V+ |% z
E-mail: lg
x2000@yeah.net