RHEL5配置Samba服务器实现文件共享

为了Windows主机与Linux服务器之间的资源共享,同时实现访问的控制,Linux操作系统提供的Samba服务可以实现这样的控管。Samba服务为两中不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,为广泛的Linux爱好者提供了极大的方便,本文将以Redhat 5为例,简要介绍如何在Linux操作系统上搭建Samba服务以及Samba的配置过程进行简要讲解。

Samba服务的安装

默认情况下,Red Hat Enterprise Linux 5安装程序没有安装Samba服务,可以使用DVD源Yum安装简单方便,具体设定方法可在我的文章列表Search一下;

安装文件介绍:

samba-3.0.33-3.37.el5

 ---- 提供samba服务 (默认未装),这个软件主要提供了 SMB 服务器所需的各项服务程序 (smbd 及 nmbd) 的文件档以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等;

samba-common-3.0.33-3.37.el5

---- 提供服务器和客户机都必须使用的公共文件(默认已装),这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm) 等等;

samba-client-3.0.33-3.37.el5

---- 提供客户端工具支持(默认已装),这个软件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs、 取得类似网芳相关树形图的 smbtree 等等;

system-config-samba-1.2.41-5.el5
---- 提供图形界面管理(默认未装);
源代码最新版本,下载地址:http://www.samba.org

yum安装:
#yum install samba
#yum install system-config-samba

Samba服务的进程

smbd:SMB服务器进程, smbd为SMB客户机,诸如Windows 9x/NT等提供Windows NT和Lan Manager风格的文件和打印服务;
nmbd:netbios服务器进程,nmbd提供浏览支持,使采用Linux操作系统的计算机用户可以融入使用netbios协议的windows网络;

Samba服务的端口

Samba服务使用的端口:137 138 139,配置Samba服务器之前,需要查看/etc/services 文件中以“netbios-”开头的记录,正确的记录文件应如下所示,如果这些记录前有#号或者没有这些记录,则用户无法访问linux服务器上的共享资源。
#cat /etc/services | grep netbios
netbios-ns       137/tcp          #NETBIOS Name Service
netbios-ns       137/udp
netbios-dgm   138/tcp          #NETBIOS Datagram Service
netbios-dgm   138/udp
netbios-ssn     139/tcp          #NETBIOS session Service
netbios-ssn     139/udp

Samba服务启停

#service smb start     or  /etc/init.d/smb start       启动smb服务
#service smb stop     or  /etc/init.d/smb stop        停止smb服务
#service smb restart   or  /etc/init.d/smb restart  重启smb服务
#service smb status   or  /etc/init.d/smb status    检查smb服务状态
#ntsysv 或 #chkconfig –level 35 smb on                服务smb开机自动启动

Samba文件结构

Samba 版本为 3.x 版,旧版的 2.x 版在设定上有点不一样,因此在进入设定前请先确认你的 samba 版本。我们这里主要介绍的是预设的 3.x 版本的软件结构:
/etc/samba/smb.conf samba的主配置文件,由全局设置和共享定义两部分组成
/etc/samba/lmhosts 提供了局域网内主机的NetBIOS名与IP地址的对应;
此文件中每一行对应一个主机记录,前面是主机的IP地址,后面用空格隔开记录了这个IP地址对应主机的NetBIOS名,NetBIOS (Network Basic Input Output System,网络基本输入输出系统) 是Windows系统用来在局域网中进行通信连接的一种协议,主机间通过NetBIOS名来进行识别,为了能识别这种主机名,需要用户将局域网中的windows主机名(NetBIOS名称)与IP地址的对应关系列入此文件中,并一定要包括作为samba服务器的linux主机本身,如:127.0.0.1  localhost (请勿删除此条记录);
通常一启动samba时就能自动捕捉到网络中相关IP对应的NetBIO名,所以此档案通常可以不用设定了;
/etc/samba/smbpasswd 密码文件,此文件在samba服务安装后是不存在的,需要使用smbpasswd命令创建该文件;
samba服务和linux操作系统使用不同的密码文件,因此linux操作系统中的用户账号不能直接登录samba服务器,需要为linux用户创建新的samba用户帐号密码;
用户第一次使用smbpasswd命令创建samba服务的账号时,自动创建smbpasswd文件,命令格式 #smbpasswd  -a  Linux用户名;
#smbpasswd –a user1 (user1已在linux系统中建立,-a后是linux用户名,需要输入密码)
命令执行完,user1的samba账号密码创建成功,在/etc/samba/目录下,将会创建smbpasswd文件;
#smbpasswd –d 命令可停用samba帐户
#smbpasswd –e 命令可启用samba帐户
#smbpasswd -? 命令可以查询更多用法
最新版本的Linux系统核心中该文件改成为了/etc/Samba/passdb.tdb,以数据库方式存储,而不是以文本的方式存储,提高了安全性;
/etc/samba/smbusers 用户文件,此文件提供了外部登录名与本地用户名的映射关系;
所谓用户映射是指用户在windows和linux系统中的不同账号映射为一个用户账号,在使用samba服务时做了映射后的windows账号,就可以直接使用windows账号访问;
设置用户映射需要在samba主配置文件smb.conf中进行修改,全局参数“username map”控制用户映射,通过该参数指定一个映射文件,默认情况下,这个映射文件就是/etc/samba/smbusers;
编辑smb.conf文件,做如下设置:username map = /etc/samb/smbusers,即该语句的注释符号#去掉;
编辑/etc/samba/smbusers文件,将需要进行映射的用户添加到文件中,参数格式为:独立linux账号 = 需映射的windows账号列表(账号列表中的用户名需用空格分隔,该参数格式说明多个windows用户账户可以映射为同一个samba账号); 
例如:#Unix_name = SMB_name1  SMB_name2  …
root = administrator  admin
nobody = guest  pcguest  smbguest
/var/lib/samba/private/{passdb.tdb,secrets.tdb} 管理 Samba 的用户账号/密码时,会用到的数据库档案;
/usr/share/doc/samba-<版本> 这个目录包含了 SAMBA 的所有相关的技术手册,当你安装好了 SAMBA 之后,你的系统里面就已经含有相当丰富而完整的 SAMBA 使用手册了,赶紧自行参考喔!
/usr/sbin/{smbd,nmbd} 服务器功能,最重要的权限管理 (smbd) 以及 NetBIOS name 查询 (nmbd) 两个重要的服务程序;
/usr/bin/{tdbdump,tdbtool} 服务器功能,在 Samba 3.0 以后的版本,用户的账号与密码参数已经转为使用数据库,Samba 使用的数据库名称为 TDB (Trivial DataBase), 数据库的控制指令:tdbdump 可以察看数据库的内容,tdbtool 则可以进入数据库操作接口直接手动修改帐密参数;需要安装 tdb-tools 软件;
/usr/bin/smbstatus 服务器功能,可以列出目前 Samba 的联机状况, 包括每一条 Samba 联机的 PID, 分享的资源,使用的用户来源等等,让你轻松管理 Samba ;
/usr/bin/{smbpasswd,pdbedit} 服务器功能,在管理 Samba 的用户账号密码时, 早期是使用 smbpasswd 这个指令,后来使用 TDB 数据库建议使用新的 pdbedit 指令来管理用户数据;
/usr/bin/testparm 服务器功能,这个指令主要在检验配置文件 smb.conf 的语法正确与否,当你编辑过 smb.conf 时,请务必使用这个指令来检查一次,避免因为语法或书写错误引起的困扰;
/sbin/mount.cifs 客户端功能,在 Linux 上我们透过 mount (mount.cifs) 来将远程主机分享的档案与目录挂载到自己的 Linux 主机上;
/usr/bin/smbclient 客户端功能,Linux 主机想要由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用 smbclient 来查看,也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功;
/usr/bin/nmblookup 客户端功能,有点类似 nslookup,重点在查出 NetBIOS Name;
/usr/bin/smbtree 客户端功能,有点像 Windows 系统的网络上的芳邻显示的结果,可以显示类似『靠近我的计算机』之类的数据, 能够查到工作组与计算机名称的树状目录分布图;




































smb.conf主配置文件

Samba 怎么设定啊?也是很简单,依据流程你可以这样想象:

1、服务器整体设定方面:在 smb.conf 当中设定好工作组、NetBIOS 主机名、密码使用状态 (无密码分享或本机密码) 等等;

2、规划准备分享的目录参数:在 smb.conf 内设定好预计要分享的目录或装置以及可供使用的账号数据;

3、建立所需要的文件系统:根据步骤 2 的设定,在 Linux 文件系统当中建立好分享出去的档案或装置,以及相关的权限参数;

4、建立可用 Samba 的账号:根据步骤 2 的设定,建立所需的 Linux 实体账号,再以 pdbedit 建立使用 Samba 的密码;

5、启动服务:启动 Samba 的 smbd, nmbd 服务,开始运转哩!

根据上面的流程,其实我们最需要知道的就是 smb.conf 这个配置文件的信息。 所以首先我们就要来介绍一下这个档案的设定方式,这个档案其实可以分为两部份来看, 一个是主机信息部分,在 smb.conf 当中以 [global] (全领域) 作为设定的依据;另一个则是分享的信息, 以个别的目录名称为依据。另外,由于 Samba 主要是想加入网芳功能,因此在 smb.conf 内的很多设定都与 Windows 类似:
  • 在 smb.conf 当中,#号与;号 都是批注符号;
  • 在这个配置文件中,大小写是没关系的,因为 Windows 不区分大小写;
smb.conf主配置文件由两个部分组成,分别是全局设置(Global Settings)和共享定义(Share Definitions);
  • 全局设置设置关于samba服务整体运行环境的选项,针对所有共享资源,包括工作组、主机的 NetBIOS 名称、字符编码的显示、登录文件的设定、 是否使用密码以及使用密码验证的机制等等,都是在这个 [global] 项目中设定的;
  • 共享定义设置共享目录,针对你开放的目录来进权限方面的设定,包括谁可以浏览该目录、是否可以读写等等参数;
  • 设置完基本参数后使用“#testparm”命令检查语法错误,若看到“Loaded services file OK” 则表明配置文件加载正常,否则系统会提示出错的地方;
全局设置(Global Settings)

smb.conf 的服务器整体参数: [global] 项目 的参数主要有:

workgroup        = 工作组的名称,注意主机群要相同;
netbios name  = 主机的 NetBIOS 名称啊,每部主机均不同;
server string    = 主机的简易说明,这个随便写即可;

另外,过去常常让使用者心生不满的语系显示问题方面,最新版本的Samba客戶端功能已经大幅修改了连线方式,采用格式为 CIFS 方式 (Common Internet File System) 已经不再有中文显示问题,无论客戶端是Windows or Linux,使用下面的指令连线: 
#mount -t cifs -o username=my_name,password=my_pass //xxx.xxx.xxx.xxx/share_floder /dest 

如果关于语系编码问题,建议你参考一下鸟哥讨论区的这一篇:http://phorum.vbird.org/viewtopic.php?t=22001

除此之外,还有登录文件方面的信息,包括这些参数:

log file = 登录档放置的档案,文件名可能会使用变量处理;
max log size = 登录档最大仅能到多少 Kbytes ,若大于该数字,则会被 rotate 掉;

还有网芳开放分享时,安全性程度有关的密码参数,包括这几个:

security = share, user, domain:三选一,这三个设定值分别代表:
     share:分享的数据不需要密码,大家均可使用 (没有安全性);
     user :使用 SAMBA 服务器本身的密码数据库,密码数据库与底下的 passdb backend 有关;
     domain:使用外部服务器的密码,亦即 SAMBA 是客户端之意,如果设定这个项目, 你还得要提供『password server = IP』的设定值才行;
encrypt passwords = Yes   代表密码要加密,注意那个 passwords 要有 s;
passdb backend     = 数据库格式,如前所述,目前密码文件已经转为使用数据库,默认的数据库格式为:tdbsam ,而预设的档案则放置到 /var/lib/samba/private/passwd.tdb;
事实上 Samba 的密码方面设定值很多,包括你还可以利用 samba 来修改 /etc/passwd 里的密码,不过这个时候就得需要『 unix password sync 』以及『 passwd program 』这两个参数值的帮忙。 我们这里先谈比较简单的,其他进阶的部分可以 man smb.conf 去进行搜寻查阅!

共享定义(Share Definitions)

共享定义内常见的参数主要与 Linux 系统的档案权限有关,因此这里设定参数多与权限有关;
[分享名称] :分享名称是一个网路芳邻看到的Share名称;
comment :目录说明;
path :设定实际操作的 Linux 文件系统的目录;
browseable :是否让所有的用户看到这个项目;
writable :是否可以写入, 设定为 yes 即可以写入,若read only也设定为 yes , 那最后出现的那个设定值为主要的设定; 
create mode 与 directory mode 都与权限有关的咯!
writelist = 使用者, @群组,这个项目可以指定能够进入到此资源的特定使用者。 如果是 @group 的格式,则加入该群组的使用者均可取得使用的权限,设定上会比较简单!

smb.conf 内的可用变量功能
为了简化设定值,Samba 提供很多不同的变量给我们来使用,主要有底下这几个变量喔:

%S:取代目前的设定项目值,所谓的『设定项目值』就是在 [分享] 里面的内容!
举例来说,例如底下的设定范例:
       [homes]
       valid users = %S
       ……
因为valid users是允许的登入者,设定为%S表示任何可登入的使用者都能够登入的意思,今天如果test这个使用者登入之后,那个[homes]就会自动的变成了[test],%S的用意就是在替换掉目前[]里面的内容。

%m:代表client端的NetBIOS主机名称
%M:代表client端的Internet主机名称,就是HOSTNAME
%L:代表SAMBA主机的NetBIOS主机名称
%H:代表使用者的家目录
%U:代表目前登入的使用者的使用者名称
%g:代表登入的使用者的群组名称
%h:代表目前这部samba主机的hostname,注意是hostname,而不是NetBIOS name
%I:代表client的IP
%T:代表目前的日期与时间

smb.conf 配置内容

# This is the main Samba configuration file. You should read the smb.conf(5) manual page in order to understand the options listed here.
# Samba has a huge number of configurable options (perhaps too many!) most of which are not shown in this example
# For a step to step guide on installing, configuring and using samba, read the Samba-HOWTO-Collection. 
# This may be obtained from:  http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
# Many working examples of smb.conf files can be found in the Samba-Guide which is generated daily and can be downloaded from:
#  http://www.samba.org/samba/docs/Samba-Guide.pdf
# Any line which starts with a ; (semi-colon) or a # (hash) is a comment and is ignored. 
# In this example we will use a for commentry and a ; for parts of the config file that you may wish to enable.
# NOTE: Whenever you modify this file you should run the command "testparm" to check that you have not made any basic syntactic errors.
#======================= Global Settings(全局变量设置) ===============================

[global]

# ----------------------- Network Related Options -------------------------
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
# workgroup,此参数设置域名或工作组名称,用来指定samba所要加入的工作组,
# 如果要在windows主机的网上邻居看到samba服务器就须将此workgroup参数值和windows主机所加入的工作组名称保持一致,
# 另外,如果设置了security=domain,则workgroup可以指定域名。该名称会出现在windows的网上邻居和linux的网络服务器中;
#
# server string is the equivalent of the NT Description field
# server string,此参数用于设置对samba服务器的简要说明,方便访问用户的识别;
#
# netbios name can be used to specify a server name not tied to the hostname
#
# Interfaces lets you configure Samba to use multiple interfaces
# If you have multiple network interfaces then you can list the ones
# You want to listen on (never omit localhost)
# 此参数为多网卡的samba服务器使用,用以设置samba服务器需要监听的网卡。
# 可以通过IP地址或网络接口进行设置,如:interfaces = eth0;
#
# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can specifiy it as a per share option as well
# hosts allow,此参数设置可访问samba服务器的IP范围或域名,是一个与服务器安全相关的重要参数。
# 默认情况下,此参数被禁用,即表明所有主机都可以访问samba服务器。
# 若进行设置,应将语句前的分号去掉,当参数值超过一个时,应使用空格或逗号进行分隔。
# 例如,若要允许主机名为new的主机,域名为master.website.com的域以及192.168.10.*中除192.168.10.149外的所有主机访问,
# 可以将些参数设置为:hosts allow = new , master.website.com , 192.168.10. EXCEPT 192.168.10.149
#
workgroup = MYGROUP
server string = Samba Server Version %v

; netbios name = MYSERVER
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
; hosts allow = 127. 192.168.12. 192.168.13.


# --------------------------- Logging Options -----------------------------
#
# Log File let you specify where to put logs and how to split them up.
#
# Max Log Size let you specify the max size log files should reach
#

# logs split per machine
        # 此参数指定日志文件名和存放路径,文件名加个%m,表示为每个登录的用户建立不同的日志文件;
; log file = /var/log/samba/%m.log
# max 50KB per log file, then rotate
        # 指定最大日志文件大小,单位为kb;
; max log size = 50


#
# Security mode. 
# Defines in which mode Samba will operate. Possible values are share, user, server, domain and ads. 
# Most people will want user level security. See the Samba-HOWTO-Collection for details.
# security,定义samba服务器的安全级,有5个值,分别是:share、user、server、domain、ads,定义了samba的基本安全级。
#
# ----------------------- Standalone Server Options ------------------------
#
# Security can be set to user, share(deprecated) or server(deprecated)
#
# samba的缺省配置通常是user,要求用户在访问共享资源之前,必须先提供用户名和密码进行验证;
# 所以需要用smbpasswd命令先对linux系统用户创建samba账号密码,并重启samba服务;
#  username map = /etc/samb/smbusers 
# 此文件中提供了外部登录名与本地samba用户名的映射关系;
# 若要在windows主机中直接用windows帐户访问共享目录就须将其在/etc/samb/smbusers文件中映射为一个samba帐户;
# 然后就能直接使用该windows帐户访问samba服务器了;
#
; security = user
; guest account = test                                          #添加语句,设置guest帐号
; encrypt passwords = yes                                   #添加语句,设置口令为加密发送
; smb passwd file = /etc/samba/smbpasswd   #添加语句,设置密码文件名和路径
#
# server与user安全级类似,但用户名和密码是递交到另外一个SMB服务器去验证,也就是需要启用密码验证服务器;
# 但如果递交失败,就退到user安全级,从用户端来看,server和user这两个级别是没什么分别的;
# 设置server安全级,需要做如下修改:
#
; security = server                          #设置安全级别为user
; guest account = test                   #添加语句,设置guest帐号
; password server = pwdserver    #添加语句,指定口令服务器
; encrypt passwords = yes            #添加语句,设置口令为加密发送
; smb passwd file = /etc/samba/smbpasswd-1 #添加语句,设置密码文件名和路径
#
# 此参数设置guest级别的来宾用户名(可以是nobody,ftp帐号),guest级别的用户可以不要密码就访问给定的guest服务;
# 在此设置的帐号名都必须在/etc/passwd文件中,如果没有指定,服务器会当成“nobody”帐号进行处理;
# 默认情况下不启用guest帐号;
#
# 其中参数值“pwdserver”是密码验证服务器名,如果验证失败,服务器使用user安全级访问;
#
# 设置主配置文件中的 encrypt password 参数实现加密口令,也就是用户密码以加密的方式发送到samba服务器;
# 默认情况下启用该参数:encrypt passwords = yes  ,windows操作系统也采用加密方式发送密码;
# 而如果该参数设置为”no”,则需要修改windows注册表,为简化用户操作,/usr/share/doc/samba-<版本>/registry/目录下
# 提供了多种windows操作系统的注册表文件,用户可以选择客户端操作系统相应的注册表文件;
#
# 但此时如果采用了加密口令,则samba 服务器无法反向检查原有密码文件,因此必须使用另一个/etc/samba/smbpasswd-1密码文件;
#
# Backend to store user information in. New installations should use either tdbsam or ldapsam.
# smbpasswd is available for backwards compatibility. tdbsam requires no further configuration.
# share,这是几乎没有安全性的级别,任何用户都可以不需用户名和密码访问服务器上的资源;
#
security = share
passdb backend = tdbsam

# ----------------------- Domain Members Options ------------------------
#
# Security must be set to domain or ads

# Use the realm option only with security = ads,Specifies the Active Directory realm the host is part of
#
# ads,使用ads安全级即samba服务器加入到windows活动目录中且必须指定口令服务器;
#
# domain, 使用domain安全级的samba服务器能够加入到windowsNT域中,
# 要求网络上存在一台windowns PDC (primary domain controller主域控制器),
# samba把用户名和密码递交给windowns PDC去验证,故也必须指定口令服务器;
#
# Backend to store user information in. New installations should use either tdbsam or ldapsam. 
# smbpasswd is available for backwards compatibility. tdbsam requires no further configuration.
#
# Use password server option only with security = server or if you can't use the DNS to locate Domain Controllers
# The argument list may include:
#   password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]
# or to auto-locate the domain controller/s
#   password server = *
# 此参数设置口令服务器,参数值可以是域控制器名,“*”表示自动查找域控制器;
# 关于口令服务器:当用户在windows环境下通过samba服务器访问 linux的共享资源时,会自动传送登录windows的用户名和密码给samba,
# 若指定了口令服务器,则samba向口令服务器验证用户名和密码信息是否正确, 口令服务器可以是域控制器 (security = domain)或是另一个samba服务器(security =server);
#

; security = domain
; passdb backend = tdbsam
; realm = MY_REALM

; password server =

# ----------------------- Domain Controller Options ------------------------
#
# Security must be set to user for domain controllers
#
# Backend to store user information in. New installations should use either tdbsam or ldapsam.
# smbpasswd is available for backwards compatibility. tdbsam requires no further configuration.
#
# Domain Master specifies Samba to be the Domain Master Browser. 
# This allows Samba to collate browse lists between subnets. 
# Don't use this if you already have a Windows NT domain controller doing this job
#
# domain master,此参数让 nmdb 成为一个域浏览器,取得各本地浏览器的浏览列表,并将整个域的浏览列表递交给各本地主浏览器;
# 缺省值是no .如果网络上已经有一台windows PDC 主域控制器,就不要把这个参数设为yes;
#
# Domain Logons let Samba be a domain logon server for Windows workstations.
# domain logons,表示这部samba主机可以提供 windows 登入的服务-PDC
#
# Logon Scrpit let yuou specify a script to be run at login time on the client
# You need to provide it in a share called NETLOGON
#
# Logon Path let you specify where user profiles are stored (UNC path)
#
# Various scripts can be used on a domain controller or stand-alone
# machine to add or delete corresponding unix accounts
#
; security = ads
; passdb backend = tdbsam

; domain master = yes
; domain logons = yes

# the login script name depends on the machine name
; logon script = %m.bat
# the login script name depends on the unix user used
; logon script = %u.bat
                  # %L substitutes for this servers netbios name, %U is username
; logon path = \\%L\Profiles\%u
# disables profiles support by specifing an empty path
; logon path =  

; add user script = /usr/sbin/useradd "%u" -n -g users
; add group script = /usr/sbin/groupadd "%g"
; add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"
; delete user script = /usr/sbin/userdel "%u"
; delete user from group script = /usr/sbin/userdel "%u" "%g"
; delete group script = /usr/sbin/groupdel "%g"

# ----------------------- Browser Control Options ----------------------------
#
# Set local master to no if you don't want Samba to become a master browser on your network. 
# Otherwise the normal election rules apply
# 此参数指定nmdb是否试图成为本地主浏览器,缺省值是yes,如果设为no,则samba服务器永远都不会成为本地主浏览器。
# 但即使设置为yes,也不等于samba服务器就会成为本地主浏览器,只是参与本地主浏览器选择;
#
# OS Level determines the precedence of this server in master browser elections. The default value should be reasonable
# os level的值是整数,表示竞争主浏览器时对自身的评价,这决定了nmbd是否有机会成为本地广播区域工作组里的本地主浏览器;
# 缺省值是零,这意味着nmbd失去浏览选择,如果要nmbd更有机会成为本地主浏览器的话,可以设为65;
#
# Preferred Master causes Samba to force a local browser election on startup
# and gives it a slightly higher chance of winning the election
# 此参数指定 nmbd是否是工作组里的首要主浏览器,如果指定为yes,nmbd在启动时就强制一个浏览选择。
# 指定该参数为yes时,最好把domain master也指定为yes,
# 用这个参数时要注意,在samba服务器所在的子网上,如果有其他任何机器也指定为首要的主浏览器时,
# 这些机器都会因为争夺主浏览器而在网络上广播,引起不必要的网络性能下降;
#
; local master = no
; os level = 33
; preferred master = yes

#----------------------------- Name Resolution -------------------------------
# Windows Internet Name Serving Support Section:
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
#
# - WINS Support: Tells the NMBD component of Samba to enable it's WINS Server
# 此参数设置samba服务器是否作为WINS服务器,会要求Samba的nmbd进程激活WINS服务;
# WINS服务器的主要作用是将NetBIOS名称转换为对应的IP地址;
# 默认情况下不启用WINS支持;
#
# - WINS Server: Tells the NMBD components of Samba to be a WINS Client
# 此参数设置WINS服务地址,一台samba服务器不能同时作为WINS服务器和客户端;
# 就是说在上面的参数中如果设置成WINS服务器,在此处就不能再指定其它WINS服务器了;
# 但当一台samba服务器不是WINS服务器,仅需要WINS服务时,可设置此参数指定WINS服务器,
# 要求Samba的nmbd进程成为一个WINS客户端,该WINS服务器需要在DNS服务器中进行登记。
#
# - WINS Proxy: Tells Samba to answer name resolution queries on behalf of a non WINS capable client, 
# for this to work there must be at least one WINS Server on the network.
# The default is NO.
# 此参数设置是否启用WINS代理,默认no 不开启;
#
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names via DNS nslookups.
# The default is NO.
# 此参数设置是否启用DNS代理,默认no 不开启;

; wins support = yes
; wins server = w.x.y.z
; wins proxy = yes

; dns proxy = yes

# --------------------------- Printing Options -----------------------------
#
# Load Printers let you load automatically the list of printers rather than setting them up individually
# 此参数指定在samba启动时是否自动加载/etc/printcap文件里的所有打印机,可在浏览清单里看到所有的打印机,缺省为yes;
#
# Cups Options let you pass the cups libs custom options, setting it to raw
# for example will let you use drivers on your Windows clients
#
# Printcap Name let you specify an alternative printcap file
# 设置加载的打印机配置文件和路径
#
# You can choose a non default printing system using the Printing option
# 此参数设置打印机类型,若使用的打印机是linux的标准型,则无需更改打印机类型;
# 标准打印机类型包括:bsd , cups ,sysv ,plp ,lprng ,aix ,hpux ,qnx等;

load printers = yes
cups options = raw

; printcap name = /etc/printcap
                  # obtain list of printers automatically on SystemV
                  # 设置打印机名
; printcap name = lpstat
; printing = cups

# --------------------------- Filesystem Options ---------------------------
#
# The following options can be uncommented if the filesystem supports Extended Attributes 
# and they are enabled (usually by the mount option user_xattr). 
# Thess options will let the admin store the DOS attributes in an EA and make samba not mess with the permission bits.
#
# Note: these options can also be set just per share, setting them in global makes them the default for all shares
#

; map archive = no
; map hidden = no
; map read only = no
; map system = no
; store dos attributes = yes

#============================ Share Definitions (共享资源定义)===========================

[homes]
# 此为特殊字段,[homes]并不特指某个目录,而是表示samba用户的宿主目录,即samba用户登录后可以访问同名系统用户的宿主目录
# 当用户请求一个共享时,服务器将在存在的共享资源段中去寻找,如果找到匹配的共享资源段,就使用这个共享资源段,
# 如果找不到,就将请求的共享名看成是用户的用户名,并在本地的password文件里查找这个用户,
# 如果用户存在且用户提供的密码是正确的,则以这个[homes]段克隆出一个共享提供给用户,这个新的共享名称是用户的用户名,
# 而不是homes,如果[homes]段里没有指定共享路径,就把该用户的主目录(home directory)作为共享路径;
# 用户主目录是samba为每个samba用户提供的共享目录,这个共享目录只有用户本身可以使用。
# 默认情况下,用户主目录位于/home 目录下,每个linux用户有一个以用户名命名的子目录,
# /home目录的权限由[homes]字段设置为不允许浏览,允许写入用户自己的主目录;
comment = Home Directories
        # 设置共享的说明信息
browseable = no
        # 设置为no,表示所有samba用户的宿主目录都不能被看到,只有登录用户才能看到自己的宿主目录
writable = yes
        # 设置用户对自己的宿主目录具有写权限可写入
; valid users = %S
; valid users = MYDOMAIN\%S

[printers] 
# 此特殊字段,设置共享打印机;
# 该字段用于提供打印服务,如果定义了[printers]这个段,用户就可以连接在printcap文件里指定的打印机。
# 当连接请求到来时,smbd去查看配置文件里已有的段,如果和请求匹配就用这个段,如果找不到匹配的段,但[homes]存在,就用[homes];
# 否则,请求的共享名就当作是打印机共享名,然后去寻找适合的printcap文件,看看请求的共享名是否为有效的打印共享名。
# 如匹配,就克隆出一个新的打印机共享提供给客户;
# 注意:[printers]服务必须设置printable为yes,如果指定为其他,服务器将拒绝加载配置文件。
                 comment = All Printers
                 path = /usr/spool/samba
                 # 指定目录必须事先创建,否则不能使用,通常指定的路径应该任何人都有写入权限;
                 browseable = no
                 guest ok = no
                 # 设置guest账号不允许使用共享打印,如果允许来宾账号使用共享打印机,需增加一个设置 public = yes;
                 writable = no
                 # 设置目录不许写入
                 printable = yes
                 # 设置为允许打印

;[tmp] 
# 此字段用来设置网络用户共享文件的临时区域,每个人可以在这里存放文件供别人使用;
;                comment = Temporary file space
;                path = /tmp
;                read only = no
     # 表示可以存取
;                public = yes 
        # 表示可以查询

[public]       
# 自定义了一个共享目录,共享名为public;
# 该共享目录设置对所有访问的用户都可见,对于samba服务器中的所有用户都以同样的权限进行共享目录中的文件读写;
                   comment = Public Stuff                   
                   path = /home/testpublic 
                   # 设置共享目录对应的linux系统目录为/home/public目录,须设置属主和属组为nobody;
                   public = yes    
                   # 设置此共享目录为对所有samba用户是可见的;
                   only guest = yes
                   # 表示所有用户在使用该共享目录时的用户身份都是guest,即linux的系统用户nobody;
                   writable = yes  
                   # 表示该共享目录对于用户可写;
;                  write list = @staff
                   # 属于staff组的用户可以读写;
;                  printable = no
                   # 设置为允许打印

# The following two entries demonstrate how to share a directory so that two users can place files there 
# that will be owned by the specific users. In this setup, the directory should be writable by both users 
# and should have the sticky bit set on it to prevent abuse. Obviously this could be extended to as many users as required.
# 下面的例子解释了如何共享一个目录,从而两个用户可以在里面放置文件。 
# 在下面的配置中,目录应该是对两个用户可写的,并且有setuid,也可以设置更多的用户共享这一个目录
;[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

Samba服务器的工作模式及设置

在Samba主配置文件smb.conf中,一项重要的设置(Security 设置语句)就是Samba服务器的工作模式(也称"安全级别")的设置。其实也就是Samba服务器与Windows服务器之间的5种协调工作方式。这5种工作模式就是share、user、server、domain和 ads。下面分别介绍这5种工作模式的具体含义。

share(共享模式)

在这种模式下,用户对Samba服务器的访问无须进行身份验证,也就是不用输入用户名和密码(也就是允许匿名访问)用户的访问权限仅由相应用户对共享文件的访问权限决定。这是最简单,但也是最不安全的一种Samba服务器访问方式。除非是很小的网络,一般不这样设置。如果要设置成该模式,在主配置文件smb.conf中只需要把security语句设置成以下格式即可: security = share;

user(用户模式)

在这种模式下,用户对Samba服务器的访问是由Samba服务器依据本地账户数据库对访问用户进行身份验证的,安全级别比share模式高一些。这就要求每个访问用户必须在Samba服务器上有它本地的Linux用户账户(可以在 /etc/samba/smbusers文件中配置),当然也可以为各需要权限的用户在Samba服务器中新建相应的用户账户。这是Samba服务器的默认设置。
设置user工作模式时需要对smb.conf主配置文件按如下格式修改:
   1. security = user                     # 设置工作模式为user  
   2. guest account = samba     # 指定来宾账户为samba (当然可以是其他账户名称,也是需要正确输入账户名和密码的),出于安全考虑,通常不直接采用guest作为来 宾账户名,本语句需要新添加;如果不允许以来宾账户访问,则不用配置此语句;  
   3. encrypt passwords = yes     # 设置对认证过程中的用户口令进行加密,本语句也是需要新添加;  
   4. smb passwd file = /etc/samba/smbpasswd  # 设置Samba服务器的密码文件名和路径,本语句也需要新添加; 
   采用user模式设置后,需要设置Samba密码文件,建立smbpasswd文件中的用户账号和口令,使其与/etc/passwd的账号和口令相同。

server(服务器模式)

在这种模式下,必须指定用于对Samba服务器中对共享文件进行访问的用户进行身份验证的服务器。这种模式的用户访问是由其他专门的服务器对访问用户进行身份验证,安全级别又比user模式高一些。这个服务器可以是Windows NT/2000/2003或其他Samba服务器。Server模式与user模式其实是类似的,只不过实现身份验证的不是本地Samba服务器,而是网络中的其他服务器。如果在指定的服务器上身份验证失败,则退到user安全级,采用本地Samba服务器对访问用户进行身份验证。所以,从用户端来看,server模式和user模式没什么本质区别,只是用于身份验证的服务器的位置不一样。
设置server模式时需要对smb.conf文件进行如下修改:
   1. security = server               # 设置工作模式为server  
   2. guest account = samba   # 指定来宾账户为samba(当然也可以是其他账户名称),本语句需要新添加;
   3. password server = pwdserver     # 指定用于身份验证的服务器NetBIOS名称,本语句也需要新添加; 
   4. encrypt passwords = yes     # 指定用户口令在验证过程中加密发送,本语句也需要新添加; 
   5. smb passwd file = /etc/samba/smbpasswd  #设置密码文件名和路径,本语句也需要新添加;

domain(域模式)

这种模式是把Samba服务器加入到Windows域网络中,作为域中的成员。但在这种模式中,担当用户对Samba服务器的访问身份验证的是域中的PDC(主域控制器),而不是Samba服务器。
采用这种模式时,主配置文件smb.conf需要进行以下修改:
   1. security = domain                        # 设置工作模式为domain;  
   2. workgroup = domainname         # 指定Windows域名(NetBIOS格式); 
   3. password server = PDC_NAME   # 指定担当身份验证服务器的PDC的NetBIOS名称;
   4. 同时要用"#"符号注释掉默认文件中的 smb passwd file =/etc/samba/smbpasswd语句;

ads(活动目录模式)

这是Linux系统Samba服务器的一种新工作模式(原来只有前4种),用于把Samba服务器加入到Windows 2000 Server、Windows Server 2003活动目录域中,并具备活动目录域控制器的功能。这时Samba服务器就相当于一台域控制器了,可以自己使用活动目录中的账户数据库对用户的访问进行身份验证。
采用ads工作模式时,主配置文件smb.conf需要进行以下修改:
   1. security = ads              # 设置工作模式为ads;  
   2. realm = MY_REALM    # 指定Windows域名(DNS格式);  
   3. ads server = ads_server     # 指定担当身份验证服务器的服务器DNS名称;


你可能感兴趣的:(Unix/Linux管理)