可以将SMB(Server Messages Block,服务信息块)看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其他Windows和Linux 机器提供文件系统、打印服务或是其它一些信息。SMB的工作原理是让Netbios(Win95网络邻居通信协议)与SMB(Server Message Block)这两种协议运行在TCP/IP的通信协议上,且使用Netbios nameserver让用户的Linux机器可以在Windows的网络邻居上被看到,所以就可以和Win95/NT在网络上相互沟通,共享文件与服务了。那么如何配置SMB服务器呢,最基本的就是要理解smb.conf中各条命令的意思,小弟不才,花时间把SMB的配置文件翻译成中文以供刚开始学习SMB配置的朋友参考,配置SMB的一些技巧和应该注意的地方我会在随后的文章中介绍,如果有任何人都不得以任何方式将此文用做商业用途,如果想转载本站的原著文章的话,请与本人联系。下面就让我们开始吧:
# 这是Samba服务器的主要配置文件。您应该阅读smb.conf(5)的man pages以了
# 解下面列出的每一个选项。Samba有很多的配置选项,它们中的绝大多数
# 并没有出现在这个例子中。
#
# 以分号“;”或井号“#”开始的每一行都是注释,在执行时将被忽略。在
# 本例中,我们使用“#”作为注解而使用“;”作为可选配置的注释。
#
# 请注意:不论何时修改了这个配置文件,都可以运行命令“testparm”来检查
#所做的修改中没有基本的语法错误。
#
# ====================== 全局参量设置 =========================
[global]
# workgroup用来指定您的机器在网络上所属的NT域名或组名格式是
# workgroup = NT-Domain-Name或Workgroup-Name。如果不加以指定,则
# 内置的组名称是MYGROUP。
workgroup = MYGROUP
# server string用来设置NT描述域,默认值为Samba Server。
server string = Samba Server
# 下面的选项对于安全很重要。它允许您设置哪一些领域的机器可以
# 访问您的Samba服务器。下面这个例子将允许两个C类地址和“loopback”
# 的连接请求而禁止来自其它网段机器的连接请求。有关的更多例子请
# 参考smb.conf(5)的man pages。默认允许任何机器访问Samba服务器。
; hosts allow = 192.168.1. 192.168.2. 127.
# 允许自动加载打印机列表,而不需要您单独设置每一台打印机。
load printers = yes
# 使用下面的命令将用您指定的printcap文件覆盖原有的printcap文件。
; printcap name = /etc/printcap
# 对于SystemV系统,如果将printcap名设置为lpstat将允许您从SystemV的
# spool中自动获得打印机列表。
; printcap name = lpstat
# 除非您的打印机不是标准型号,否则您没有必要在下面指定打印机系统的
# 类型。目前支持的打印机系统包括: bsd、sysv、plp、lprng、aix、hpux和
# qnx。
; printing = bsd
# 如果希望建立一个guest帐户 account的话,去掉下面这一行前面的分号“;”,# 您必须在/etc/passwd加入这个帐号的定义,否则将使用用户nobody作为客
# 户帐户。
; guest account = pcguest
# 下面这个选项将为每一台与服务器连接的机器定义一个单独的日志文件。
log file = /usr/local/samba/var/log.%m
# 下面这一个选项设置最大日志文件的大小(以Kb为单位)。
max log size = 50
# 定义安全模式。大多数的人都喜欢用户级安全模式,请参考security_level.txt
# 来获得更多帮助。
security = user
# 只有当安全模式定义为服务器级(security = server)时,才定义下面这个选项。
; password server = <NT-Server-Name>
# 如果用户想使用加密口令的话,请阅读位于Samba目录下docs目录中的
# ENCRYPTION.txt、Win95.txt和WinNT.txt文件否则不要使用下面这个选项。
; encrypt passwords = yes
# 下面这个选项将允许您对每一个不同的机器使用不同的配置文件%m将被替
# 换成与服务器请求连接机器的netbios名。
; include = /usr/local/samba/lib/smb.conf.%m
# 大多数的人都会发现下面这个选项将显著提高服务器的执行效率,请阅读
# speed.txt和man pages以了解更多的细节。
socket options = TCP_NODELAY
# 配置Samba来使用多个网络界面,如果您有多个网络界面,那么必须按照
# 下面的格式在这里列出。请阅读 man pages以获得更多细节。
; interfaces = 192.168.12.2/24 192.168.13.2/24
# 浏览控制选项
# 如果不想使您的Samba服务器成为局域网内部的主浏览服务器,就将
# local master设置为no。
; local master = no
# OS Level决定了该服务器在局域网内的访问优先权。
; os level = 33
# Domain Master将Samba服务器定义为主域浏览器。这条选项将允许Samba
# 服务器在子网列表中比较浏览。如果您已经有了一台Windows NT域控制
# 器的话,不要使用这个选项。
; domain master = yes
# Preferred Master使Samba在启动时选择一个本地浏览器并给它获得选择的
# 较高的机会。
; preferred master = yes
# 只有当您的网络中有一台NT主域名服务器时使用下面的这一项(请注意,
# 该选项虽然出现在smb.conf文件中,但是目前的samba版本还不支持domain
# controller选项)。
; domain controller = <NT-Domain-Controller-SMBName>
# 如果想使Samba服务器成为Win95工作站的登录服务器的话使用下面这个选项。
; domain logons = yes
# 如果允许域登录服务,那么您也许希望每一台机器或每一个用户运行一个
# 登录脚本,定义每一个工作站(主机)的登录批处理文件。
; logon script = %m.bat
# 定义每一个用户名登录批处理文件
; logon script = %U.bat
# 放置roving profiles文件的位置(仅限于Win95和NT),%L代表该服务器
# 的netbios名,%U是用户名,您必须取消在smb.conf文件后面定义的[Profiles]
# 前面的注释。
; logon path = \\%L\Profiles\%U
# Windows的Internet名服务支持记录节:WINS Support告诉NMBD守护进程
# 支持WINS服务器。
; wins support = yes
# WINS Server选项告诉NMBD守护进程作为WINS的客户机。请注意: Samba
# 既可以作为WINS服务器Server也可以作为WINS客户机,但不能二者兼而有之。
; wins server = w.x.y.z
# WINS Proxy告诉Samba作为服务器响应名解析请求,要让这个选项正常工
# 作必须保证网络中至少有一台WINS服务器。默认值是NO。
; wins proxy = yes
# DNS Proxy选项决定Samba是否通过DNS的nslookup去解析主机的NetBIOS
# 名。对于1.9.17以前的版本内置值是yes,而对于1.9.18以后的版本内置值是no。
dns proxy = no
# ======================定义共享服务====================
# 所有使用者的home目录
[homes]
# 定义说明文字,当一个客户程序列出本服务器的共享服务时,comment后
# 面的文字将出现在共享名的旁边。
comment = Home Directories
# 当一个客户程序以客人用户列出本服务器的共享服务时,不列出homes服
# 务。但是本机真实用户创建的主目录服务仍使用[global]节设定的blowseable。
browseable = no
# 客户程序对服务目录有写的权限。
writable = yes
# 如果要取消下面的注释就需要创建一个netlogon目录。
; [netlogon]
; comment = Network Logon Service
# path指定的目录必须事先创建,对于以下其它服务也一样,否则服务不能使用。
; path = /usr/local/samba/lib/netlogon
; guest ok = yes
; writable = no
; share modes = no
# 下面定义的是公共profile文件的位置,如不加以指定,默认位置是每个用户
# 的home目录。
;[Profiles]
; path = /usr/local/samba/profiles
;
browseable = no
; guest ok = yes
# 定义打印共享请注意:如果有一个BSD风格打印系统的话没有必要单独定
# 义每一台打印机。
[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
# 设置public = yes将允许以guest帐号登录的用户使用打印机guest ok与public
# 同义,当设置为yes时使用该项服务无须口令。
guest ok = no
writable = no
printable = yes
# 定义网络用户共享文件的临时目录,每一个人都可以在这个目录中存放文件。
;[tmp]
; comment = Temporary file space
; path = /tmp
; read only = no
; public = yes
# 一个只读的公用共享目录,除了在write list中定义的用户组staff有写权限。
# 符号@告诉Samba解释后面的名字,这是Linux的组名,在/etc/group中定义。
;[public]
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = @staff
# 其它一些例子:
#
# 下面定义了一台只有fred可以使用的私人打印机。打印假脱机数据将放在
# fred的home目录中。请注意,用户fred必须对假脱机目录具有写的权限
;[fredsprn]
; comment = Fred's Printer
; valid users = fred
; path = /homes/fred
; printer = freds_printer
; public = no
; writable = no
; printable = yes
# 下面定义的是一个只有用户fred.才能使用的私人目录。fred必须对这个目录拥
# 有写权限。
;[fredsdir]
; comment = Fred's Service
; path = /usr/somewhere/private
; valid users = fred
; public = no
; writable = yes
; printable = no
# 下面定义的是对每个与服务器连接的机器有不同的目录的服务。这将允许您
# 对于不同的机器使用不同的配置,同样也可以使用%U选项为每个用户使用
# 不同的配置。%m在连接时将被替换成客户机的主机名。
;[pchome]
; comment = PC Directories
; path = /usr/pc/%m
; public = no
; writable = yes
# 下面定义的是一个共享目录,对所有的用户都可读/写。请注意用户在这个
# 目录中创建的所有文件都将归默认用户(guest)所有,所以任何可以访问
# 这个目录的用户都可以删除别的用户在这个目录中放置的文件。显然,这
# 个目录的对于默认用户也具有写权限。当然也可以指定为别的用户,这时
# 该目录中所有的文件将为这个用户所有。
;[public]
; path = /usr/somewhere/else/public
; public = yes
; only guest = yes
; writable = yes
; printable = no
# 下例说明了如何定义让两个用户共有的目录,他们在这个目录中放置的文
# 件归他们各自所有。在这个例子中,这两个用户对该目录都有写的权限。
# 当然文件的保护应该设置恰当。很明显,可以将这个例子扩展到适合多个
# 用户的情况。
;[myshare]
; comment = Mary's and Fred's stuff
; path = /usr/somewhere/shared
; valid users = mary fred
; public = no
; writable = yes
; printable = no
; create mask = 0765
上面就是最基本的smb.conf文件的设置,编辑好了以后,可以使用testparm检查smb.conf文件的设置。设置好smb.conf文件以后,所要做的工作就是如何启动Samba服务程序了。