关于samba的配置整理

关于samba的安装网上有很多的文章,但是我遇到很多问题,这里我没有一步步的说明samba的整个安装过程,而是总结了一些每个安装samba的人都可能遇到的一些问题放到一起共享。本文最后一部分转贴了一些相关的配置说明供大家参考。

 

1、 samba修改密码:
         samba是一个供内部共享文件的一个服务,一般情况下需要登录到linux主机上才能修改它的密码,但是主机一般情况下是不能让别人进入的,而在windows下又没有其它方法可以修改,因此在网上使劲找,最终找到了这个程序:changpasswd,http://changepassword.sourceforge.net内可以下载,目前最新版本为0.9。
下到之后,第一件事情就是看说明,其实这个文件很简单,它是一个cgi程序,按照你自己的机器配置,编译后安装,然后就可以用了。
         安装方法很简单:
         1、按自己的需求修改conf.h 文件,可以不改。
         2、./configure --enable-cgidir=/var/www/cgi-bin --enable-smbpasswd=/etc/samba/smbpasswd --disable-squid
                --enable-cgidir   指定存放cgi的目录
                --enable-smbpasswd  指定存放samba密码的路径
                --disable-squid   由于次软件支持修改squid密码,但是这我用不到所以关闭(如果没有squid这个选项一定要关闭不然编译完成后使用由问题,会提示squid密码修改由问题)
        3、make
        4、make install
安装完成后访问:http://ip/cgi-bin/changepassword.cgi    来修改密码

2、Samba-Recycle(给samba添加回收站)

From DebianWiki

在网络管理中,资料的备份是极重要的事,而最怕的就是听到使用者说:『我不小心在网上邻居中的文件删掉了。怎么辨?』

您也许知道,在网上邻居里所删掉的文件是不会出现在本机的资源回收筒站的;这个文件将就这样消失掉,再也找不回来了...

         那么,是否有什么解决方案呢?

在 Samba 3.0 里,已针对这个问题实作了资源回收站。启用的方法是只要在 /etc/samba/smb.conf 中设定:

# 共享名称
[Softwares]
# 共享路径
path = /Share/Softwares
# 共享说明
comment = 常用软件
# 要不要让该分享出现于网络的芳邻里
browseable = yes
# 拥有读取权限的帐号
valid users = tetralet,@users
# 拥有写入权限的帐号
write list = tetralet
# 所建立的文件的预设权限
create mask = 0664
# 所建立的目录的预设权限
directory mask = 0755
# 是否允许使用者覆盖别的使用者的档案
lock = true
# 是否可以匿名存取
public = no
# 加载资源回收站模块
vfs object = recycle
# 在将文件移入资源回收站时,要建立相对应的目录结构
recycle: keeptree = yes
# 资源回收站的相对路径。后面的 %u 则为使用者帐号。
recycle: repository = ../Recycle/%u
# 不进行资源回收的档案类型
recycle: exclude = .tmp|.temp|.o|.obj
# 若有相同文件名称时,则加以编号识别
recycle: versions = yes

 3、samba中文问题:
       从windows看samba服务器,中文为乱码,另外拷贝中文文件名的文件或者到samba服务器,文件名或者目录名为乱码。解决办法是修改/etc/samba/smb.conf文件,添加以下2行:
dos charset = cp936
unix charset = gb2312

4、命令行下输入和显示中文
      虽然这个问题好像和samba关系不是很大,但是没个安装的samba的人都有可能碰到。当然解决方法很多这里我安装的是chdrv1.0.13可以到这里下载http://packages.debian.org/unstable/utils/chdrv安装方法很简单看说明就可以了,这里就不再赘述。

5、关于权限的设置问题给大家一个提示:
一定要和本地权限结合多建立几个组基本可以完全满足大家的要求。

6、磁盘配额:
    (一)Linux配额基础
    Linux中的磁盘配额分为用户配额和组的配额,组的配额是对某组中全体用户的综合限制。
    Linux 中的磁盘配额按是否可有一定的超越又分为软限制(可以超越)和硬性限制(禁止超越),但阮限制超过期限后自动变为硬性限制
    Linux中的磁盘配额按限制的项目不同,可分为空间限制(blocks 大小)和文件数限制(inodes 个数)。
     (二)Red Hat linux as 3 磁盘配额的实现
     1)修改/etc/fstab中的某文件系统行,在挂载选项中添加usrquota,grpquota,如下一例:
        /dev/sda5     /mnt/sda5     ext3     defaults,usrquota,grpquota 0 0
    简单说明:usrquota表示支持用户级配额,grpquota表示支持组级的配额,可以根据需要选择部分或全部。
    2)重新挂载刚才修改的文件系统 ,使其支持配额,实际上是修改了 /etc/mtab
        #mount -o remount /dev/sda5
    3)运行quotacheck在支持配额文件系统根下生成配额管理文件(挂载点/aquota.user,aquota.group两个文件)
        #quotacheck -avug  /dev/sda5
    简单说明:a-自动开启挂载文件系统的配额,v-显示信息,u-启用用户配额,g-启用组配额
   4)用edquota完成用户或组配额设置/修改
        #edquota  user1  [-f /dev/sda5]                       ---修改的是aquota.user
        #edquota -g  group1    [-f  /dev/sda5]              ---修改的是aquota.group
     简单说明:
               第一行是设置用户user1的配额限制
               第二行是设置组group1的配额限制
     [-f /dev/sda5]表可选,不选表示在所有启用磁盘配额的文件系统上使用相同的配额设置,一般不选即可。
    配额格式说明:
     filesystem    blocks    soft  hard    inodes  soft   hard       -------自动添加的行,不能删除!
    
     filesystem-正在设置的文件系统,不要修改或删除!
     bolock-当前已经使用的磁盘空间,块个数,块的大小为1KB
     soft(第一个)-软磁盘空间限制,表示用户可以使用的磁盘空间大小,单位为KB。可以有7天(默认)的超越,过后自动转为硬限制,不限制设置为0
     hard(第一个)-硬配额限制,不能超越,表示用户可以使用的最大磁盘空间,单位为KB,不限制设置为0
     inodes-当前文件个数
     soft(第二个)-软磁盘空间限制,可以有7天(默认)的超越,表示用户可以创建的文件个数,包括目录,可以有默认七天的超越
     hard(第二个)-硬配额限制,不能超越,表示用户可以创建的文件个数,不能超过。
    5)打开磁盘配额监控进程
     #quotaon  -avug  [/dev/sda1]  
  到此为止,磁盘配额已经完成。那么我们如何知道配额的使用情况呢?
   6)显示磁盘配额使用状态
     #repquota  -a  或 repquota  /dev/sda1
     #repquota -g -a 或 repquota -a /dev/sda2 (组的配额)
   7)暂时关闭某个文件系统的配额
    #quotaoff -avug  停止所有所有文件系统的用户和组的配额
   8)取消某个文件系统的配额限制
     #quotaoff  -vug 文件系统
     #删除/etc/fstab中设置配额的部分
   9)修改软配额的最大超越时间
     edquota -t [-g]  修改用户/配额软配额超越的最大天数,也就是用户超过soft的限制后,系统允许在设定的时间范围内继续超越。默认是7天
   10)复制配额给其他用户或组
      edquota -p user user1 user2 user3
      edquota -g -p group group1 group2 group3
   11)补充说明
    /,/boot/,/proc,/mnt/cdrom等不要使用配额,其实也没用。    而且磁盘配额不适合FAT和FAT32。
    以后当新设置了某个用户的配额,可以使用如下命令,马上生效。
    #quotacheck -auvgm       --是不尝试重新挂载文件系统
   使用edquota –t可以修改配额软限制的超限时间

7、关于samba配置文件的一点介绍:

  虽然缺省情况已经适合大部分用户访问自己在服务器上的个人目录的要求,但是为了充分发挥 samba提供的功能,与这些复杂多样的Windows网络相适应,就必须更改smb.conf的设置。以提供更多的共享设置、服务器设置,以及用于支持包括比较简单的共享方式和复杂的域认证方式在内的认证方式。
  smb.conf中的语法非常简单,整个配置文件分为多个不同的部分,每个部分具有一个标题。使用方括号将标题引起来,标题下包括一些相关设置,每一行都用于一个相关设置。设置文件中的每个部分或者定义了一个共享资源的名字,或者设置了一组参数。以下以缺省smb.conf为例,介绍smb.conf中的相关设置。

[global]设置

 

 
  
# 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
            #
            # 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 many any basic syntactic errors.
            #
            #======================= Global Settings =====================================
            [global]

  [global]部分定义了服务器本身使用的配置参数,以及其他共享资源部分使用的缺省配置参数,因此相当重要。

 
  
# workgroup = NT-Domain-Name or Workgroup-Name, eg: REDHAT4
            workgroup = MYGROUP

  工作组设置本地网络使用工作组名字(或者是NT域名字),这对于将正确进行浏览数据中非常重要。否则,Windows客户就不能从其网络邻居中发现这个Samba服务器。

 
  
# server string is the equivalent of the NT Description field
            server string = Samba Server

  server string是对于本地服务器的简单描述,这些信息将作为这台服务器的属性,返回给Browser,显示在Windows客户中作为对这个服务器的描述。

 
  
# This option is important for security. It allows you to restrict
            # connections to machines which are on your local network. The
            # following example restricts access to two C class networks and
            # the "loopback" interface. For more examples of the syntax see
            # the smb.conf man page
            ;   hosts allow = 192.168.1. 192.168.2. 127.

  hosts allow参数用于限制可以访问这台samba服务器的客户机的IP地址范围,通过指定一系列网络地址,使得只有这些网络中的计算机才能访问这台服务器提供的资源,以提供安全限制。缺省情况下,这行配置被注释了,使得所有的客户都可以访问这台计算机,这样就存在一定的安全问题。

 
  
# If you want to automatically load your printer list rather
            # than setting them up individually then you'll need this
            load printers = yes
            # you may wish to override the location of the printcap file
            ;   printcap name = /etc/printcap
            # on SystemV system setting printcap name to lpstat should allow
            # you to automatically obtain a printer list from the SystemV spool
            # system
            ;   printcap name = lpstat
            # It should not be necessary to specify the print system type unless
            # it is non-standard. Currently supported print systems include:
            # bsd, sysv, plp, lprng, aix, hpux, qnx
            ;   printing = bsd

  这些设置是用于设置samba服务器的打印机资源,load printer=yes就允许samba服务器对外共享服务器的打印机。由于不同的Unix系统中会使用不同的打印系统和不同的打印设置文件,因此需要设置正确的 printcap和printing类型,对于使用BSD打印系统的FreeBSD来讲,打印系统为BSD,使用的设置文件为 printcap,这些是缺省设置,不需要改动。对于使用Unix System V打印系统的Samba,则需要重新进行设置。

 
  
# Uncomment this if you want a guest account, you must add this to /etc/passwd
            # otherwise the user "nobody" is used
            ;  guest account = pcguest

  由于Mircrosoft客户没有用户的概念,因此有时会用没有用户和口令的请求访问服务器,就需要将这个没有用户的请求映射为系统中的某个用户,Samba服务器才能安全的访问系统。guest account 就定义这样的请求在Unix下对应的用户权限。为了安全的原因,不能让这个帐户在系统中有可写的权限,通常可以增加一个专用帐户,如pcguest。如果这个设置被注释的情况下,系统缺省使用nobody执行 Windows客户的请求。一些使用者建议不要使用nobody用户,因为系统中的很多程序缺省都使用它,因此就会有安全问题。

 
  
# this tells Samba to use a separate log file for each machine
            # that connects
            log file = /var/log/log.%m
            # Put a capping on the size of the log files (in Kb).
            max log size = 50

  这里定义samba的日志文件为/var/log目录下的以log为前缀的文件,%m用于代表从访问的NetBIOS 计算机名,如果使用的用户级认证,还可以使用%U表示不同的登录用户。例如从一台名字为win95c的计算机访问samba服务器的日志,将记录在 /var/log/log.win95c文件中。max log size定义每个日志文件的存储限制。

 
  
# Security mode. Most people will want user level security. See
            # security_level.txt for details.
            security = user
            # Use password server option only with security = server
            ;   password server = 
            # You may wish to use password encryption. Please read
            # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
            # Do not enable this option unless you have read those documents
            ;  encrypt passwords = yes

  在SMB协议中,有多个不同的认证方式,包括简单的共享级认证和用户级认证。Unix为多用户操作系统,缺省就使用用户级认证方式。当使用用户级认证的时候,Samba服务器使用Unix操作系统的用户和口令(来自/etc/passwd )对用户进行认证,这是一种独立的认证方式。而有时候希望所有的服务器使用同一个认证数据库进行统一认证,因此就导致出现了基于域的统一认证模式。在一个域中,用户只需要通过域控制器进行认证即可,域中其他SMB服务器就将认可域控制器的认证。

  为了使Samba服务器支持域认证方式,可以有两种不同的设置方式,一种为真正的域认证,另一种为服务器认证方式,将Samba服务器配置为通过服务器验证用户,这需要指定security=server,以及指定password server的名字为NT的域控制器。认证服务器的方式不能事先域认证方式提供的一些特征,但它的适用范围并不仅限于域,使用工作组的网络也能通过统一的认证服务器来使用统一认证模式。设置域认证方式在后面进行详细解释。

  在Windows NT 4及Windows 98之后,客户和服务器之间进行认证时,口令不再以明文的方式在网络中传输了。为了支持加密口令传输,需要设置encrypt passwords选项。同样,这也需要其他复杂的设置。

 
  
# Using the following line enables you to customise your configuration
            # on a per machine basis. The %m gets replaced with the netbios name
            # of the machine that is connecting
            ;   include = /usr/local/etc/smb.conf.%m

  系统管理员可以为每个特定的计算机定制一个特定的配置文件,那里的设置将覆盖smb.conf中的缺省设置。这样就可以针对不同的计算机提供不同的配置。

 
  
# Most people will find that this option gives better performance.
            # See speed.txt and the manual pages for details
            socket options = TCP_NODELAY

  socket参数用于配置对TCP的处理方式,以适合Microsoft客户的特征。 Microsoft习惯为每个很短的会话都建立单独的连接,而不是使用一个连接进行多次传输,这样在传输中就需要进行多次连接会话设定过程,对性能有一定影响。为了改善性能,需要设置TCP_NODELAY或IPTOS_LOWDELAY选项。

 
  
# Configure Samba to use multiple interfaces
            # If you have multiple network interfaces then you must list them
            # here. See the man page for details.
            ;   interfaces = 192.168.12.2/24 192.168.13.2/24

  如果计算机上有多个网络界面,那么就需要让samba向多个界面广播b-node广播包,以及为这些界面提供资源服务,否则samba就会只向某一个界面提供网络服务。当然也可以设置这个参数,使得samba 只服务于某个指定的网络,而不是服务器连接所有的网络。

 
  
# 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
            ;   local master = no
            # OS Level determines the precedence of this server in master browser
            # elections. The default value should be reasonable
            ;   os level = 33
            # 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 = yes
            # Preferred Master causes Samba to force a local browser election on startup
            # and gives it a slightly higher chance of winning the election
            ;   preferred master = yes
            # Use only if you have an NT server on your network that has been
            # configured at install time to be a primary domain controller.
            ;   domain controller = 

  这些设置选项主要用于SMB网络中进行浏览时,设置samba服务器的行为。缺省情况不让 samba服务器参加broswser的推举过程,为了使得samba服务器能成为browser,就需要设定local master =yes。然后samba服务就可以根据os level设置的权重进行推举,缺省的os level为0,这个权重不会赢得推举。但可以取消注释,将os level设置为33,这将在与所有Windows计算机(包括Windows NT)的推举竞赛中获得胜利,因为NT server的权重为32。设置比33更高的权重,只是在不同的samba 服务器之间进行选择时才有意义。

  由于Unix及Samba服务器在同样硬件配置下具有更高的网络性能,因此一般情况下,使用 Samba服务器作Browser更佳。当然可能在Samba服务器启动之前,网络中都已经存在了Browser了,一般情况下不必重新进行推举过程,让网络中的现有Browser继续发挥作用。如果希望Samba服务器总是成为Browser,可以设置当Samba服务器启动时,迫使网络中重新进行推举过程,这需要设定perfered master参数。

  通常Samba能够胜任master Browser的角色,然而在多个子网的情况时,网络上就会存在Local master Browser和Domain master Browser。以上的设置只能使Samba成为 Local master Browser,缺省Samba并不参加Domain master Brower的推举。设置Samba服务器成为Domain master Browser就必须使用domain master参数进行设置,这对于使用工作组方式进行跨子网浏览意义重大。

  但是如果网络使用的是NT的域方式,就要使用NT的域控制器作为Domain master Browser ,不要设置与NT域控制器同一个子网中的Samba服务器的domain brower与browser功能,以免它和域控制器竞争。不让Samba服务器和NT域控制器竞争的原因是由于Windows NT中域控制器还涉及域认证(不是认证域用户,而是认证域上的合法成员计算机),SMB协议中各种复杂功能交错混合,浏览和认证两种不同的功能竟也混合在一起。由于域控制器完成的域认证任务,Samba服务器不能够完成,因此为了避免与NT域控制器相互冲突,最好使用域控制器作Domain master Browser。

  让Samba服务器了解当前域中存在的域控制器的方法是指定在设置文件中指定域基本控制器PDC(primary Domain Controller)的NetBIOS名字,这需要使用domain controller参数进行设置。

 
  
# Enable this if you want Samba to be a domain logon server for
            # Windows95 workstations.
            ;   domain logons = yes
            # if you enable domain logons then you may want a per-machine or
            # per user logon script
            # run a specific logon batch file per workstation (machine)
            ;   logon script = %m.bat
            # run a specific logon batch file per username
            ;   logon script = %U.bat
            # Where to store roving profiles (only for Win95 and WinNT)
            #        %L substitutes for this servers netbios name, %U is username
            #        You must uncomment the [Profiles] share below
            ;   logon path = \\%L\Profiles\%U

  当用户通过一台Windows 9x客户机使用用户级认证访问网络时,他可以选择登录进网络中的域。这意味着他不但要在SMB服务器中进行验证,而且会执行服务器中相应目录中的登录脚本,以自动执行一些相关设置。通常这种登录功能是由Windows NT服务器来执行的,然而Samba服务器也能完成这个任务,但必须设定domain logons 参数。此后就可以对不同的客户计算机或不同用户指定相应的登录脚本。这个功能还必须要求在本配置文件后面设置 netlogon共享选项,以便客户机能访问相应的登录脚本。

  除了登录脚本之外,Windows NT中为了支持移动用户在不同地点进行漫游,也提供了针对每个用户的描述其使用环境的Profile文件,Samba服务器也可以通过logon path来支持对windows客户机这种漫游能力的支持。这样当Windows客户机使用漫游功能的时候,客户机会自动将用户的配置文件保存到服务器上,此后每次登录进域的时候都重新下载这个配置文件,设置Windows桌面环境。

 
  
# Windows Internet Name Serving Support Section:
            # WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
            ;   wins support = yes
            # WINS Server - Tells the NMBD components of Samba to be a WINS Client
            #       Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
            ;   wins server = w.x.y.z
            # 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 proxy = yes
            # DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
            # via DNS nslookups. The built-in default for versions 1.9.17 is yes,
            # this has been changed in version 1.9.18 to no.
            dns proxy = no

  上面的这些选项是用于设置NetBIOS名字解析方式,wins support选项使得nmdb能对外表现为一个NBNS服务器。wins server用于指定一个外部名字服务器的地址(可以为NT上的wins服务器或另一个Samba服务器),使得nmbd能用做NBNS客户端,通过访问该wins名字服务器解析NetBIOS名字。

  此外,还有一些不使用名字服务器进行解析的NetBIOS客户,如果名字服务器位于另一个子网上,那么它们就无法正确解析名字,而Samba可以使用wins proxy帮助它们使用名字服务器解析地址。例如一个WINS服务器在另一个子网上,本地子网内的Samba服务器配置了wins server的地址,其他Windows客户没有设置wins服务器地址,它们使用b-node广播方式查询名字,在这台Samba服务器设置了wins proxy能力之后,它就能代替wins服务器回应客户请求。因此要用作wins代理,就必须本身能使用名字服务器进行解析,就要求先设置wins server参数。

  此外,NetBIOS名字解析也可以扩展到通过DNS查询进行帮助,使用dns proxy设置就能让Samba 服务器通过dns进行查询,回应NetBIOS名字查询请求。

[homes]个人目录共享

 

 
  
#============================ Share Definitions ==============================
            [homes]
            comment = Home Directories
            browseable = no
            writable = yes

  [homes]部分使得每个Unix用户通过SMB客户登录上来的时候,可以共享使用他自己的个人目录。这个共享资源具备特别属性,当用户登录上之后,共享名就不是homes,而是被服务器映射为用户自己的标识符。

  设置这个特别的共享选项,就允许每个用户访问自己的个人目录,而不必为每个用户都配置一个共享资源部分。正由于系统会自动映射,因此就不需要定义要共享的文件目录路径,而在其它文件资源共享选项中,都需要使用path参数进行定义。

  由于Samba系统会自动将homes共享名改变为用户的个人标识符,因此要设定browseable=no ,设置homes本身这个名字不出现在资源列表中。writable为用户写权限设置,由于是在用户的个人目录下,用户可以具备写权限。

[netlogon]与[Profiles]

 

 
  
# Un-comment the following and create the netlogon directory for Domain Logons
            ; [netlogon]
            ;   comment = Network Logon Service
            ;   path = /usr/local/samba/lib/netlogon
            ;   guest ok = yes
            ;   writable = no
            ;   share modes = no

  当允许Samba服务器支持客户的网络登录功能之后(设置domain logon),就需要设置[netlogon] 部分(删除注释符号),为guest用户打开登录路径的访问权限,以保证每个用户都能访问其自己的登录脚本。由于需要使用guest对应的Unix帐户访问登录脚本,这个登录路径及其下面的脚本文件都要允许该Unix帐号可以读取。

  建立这个目录之后,要设定正确的权限,并且创建这个目录下对应各个计算机或用户的登录脚本,以提供给客户正确的登录脚本。

 
  
# Un-comment the following to provide a specific roving profile share
            # the default is to use the user's home directory
            ;[Profiles]
            ;    path = /usr/local/samba/profiles
            ;    browseable = no
            ;    guest ok = yes

  当支持Windows计算机漫游能力时,可以设定[Profiles]部分,并为相应的路径建立目录,及分配权限。来为Window计算机用户设置桌面环境。

[Printers]打印机设置

 

 
  
# NOTE: If you have a BSD-style print system there is no need to
            # specifically define each individual printer
            [printers]
            comment = All Printers
            path = /var/spool/samba
            browseable = no
            # Set public = yes to allow user 'guest account' to print
            guest ok = no
            writable = no
            printable = yes

  这个部分就用于设置将printcap中定义的所有打印机使用的相关设置,缺省情况下允许所有的合法客户使用所有的打印机。BSD风格的打印系统,不需要任何设置就能正确共享所有的打印机,当然也可以使用printer参数指定具体的打印机以提供共享。而path参数定义的是打印机缓冲区的位置。guest ok、writeable用于设置正确的权限,而printable用于设置打印属性。

  由于Windows的打印驱动已经将要打印的文件转化为打印机支持的那种描述语言,因此这些打印文件不再需要任何过滤器进行转换。因此需要在printcap中定义一个不使用任何过滤器、直接将打印文档输出到打印机端口的打印机选项。

其他专有共享目录

 

 
  
# This one is useful for people to share files
            ;[tmp]
            ;   comment = Temporary file space
            ;   path = /tmp
            ;   read only = no
            ;   public = yes
            # A publicly accessible directory, but read only, except for people in
            # the "staff" group
            ;[public]
            ;   comment = Public Stuff
            ;   path = /home/samba
            ;   public = yes
            ;   writable = yes
            ;   printable = no
            ;   write list = @staff
            # Other examples.
            #
            # A private printer, usable only by fred. Spool data will be placed in fred's
            # home directory. Note that fred must have write access to the spool directory,
            # wherever it is.
            ;[fredsprn]
            ;   comment = Fred's Printer
            ;   valid users = fred
            ;   path = /homes/fred
            ;   printer = freds_printer
            ;   public = no
            ;   writable = no
            ;   printable = yes
            # A private directory, usable only by fred. Note that fred requires write
            # access to the directory.
            ;[fredsdir]
            ;   comment = Fred's Service
            ;   path = /usr/somewhere/private
            ;   valid users = fred
            ;   public = no
            ;   writable = yes
            ;   printable = no
            # a service which has a different directory for each machine that connects
            # this allows you to tailor configurations to incoming machines. You could
            # also use the %U option to tailor it by user name.
            # The %m gets replaced with the machine name that is connecting.
            ;[pchome]
            ;  comment = PC Directories
            ;  path = /usr/pc/%m
            ;  public = no
            ;  writable = yes
            # A publicly accessible directory, read/write to all users. Note that all files
            # created in the directory by users will be owned by the default user, so
            # any user with access can delete any other user's files. Obviously this
            # directory must be writable by the default user. Another user could of course
            # be specified, in which case all files would be owned by that user instead.
            ;[public]
            ;   path = /usr/somewhere/else/public
            ;   public = yes
            ;   only guest = yes
            ;   writable = yes
            ;   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.
            ;[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中给出了一些设定各种共享文件资源、打印机资源的例子,例如设置特定打印机的 [fredprn],设置私人文件共享资源的[freddir]和[myshare],使用宏为多个用户设置共享的[pchome],提供公共访问的 [public]和[tmp],FreeBSD的管理员可以根据具体情况,根据这些设置例子设置相应的共享资源,并设置相应的访问权限,以保护文件系统不被非法访问。

  需要注意的是,当使用valid user用来设置合法访问用户时,或者使用wirte list定义具备写权限的用户时,都可以使用@staff的形式使用Unix的组名,这样凡是属于该staff组成员的用户,都会具备相应权限。

  从这些例子中可以看到[global]用于设定全局参数,不会出现在资源列表中, [homes]用于设定个人目录共享,其共享的名字映射为个人标识符而非homes,[printers]设定打印机共享,将共享所有的打印机名字,除了这些标题的共享名字与标题不同之外,其他每个标题都将代表一个共享资源的名字。

  当更改设置之后,可以重新启动Samba服务器,提供新的共享服务了。但在重新启动服务器之前,最好使用 Samba软件包中提供的测试软件,检查一下设置是否正确。这些小工具程序包括检查smb.conf设置的testparm ,检查打印机名字的正确性的程序testprn,用于进行NetBIOS名字解析的nmblookup等。

由于配置比较简单

你可能感兴趣的:(samba,文件服务器,Linux)