注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

phperwuhan的博客

记载一个phper的历程!phperwuhan.blog.163.com

 
 
 

日志

 
 

FreeBSD使用大全II-13.3.2 samba配置选项介绍  

2010-06-15 14:49:20|  分类: samba |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

来源:http://blog.sina.com.cn/s/blog_4d488d5b010009xp.html

samba配置选项介绍


虽然缺省情况已经适合大部分用户访问自己在服务器上的个人目录的要求,但是为了充分发挥samba提供的功能,与这些复杂多样的Windows网络相适应,就必须更改smb.conf的设置,以提供更多的共享设置、服务器设置等。


以下以缺省smb.conf为例,介绍smb.conf中的相关设置。


1) [global]设置


[global]设置就是smb.conf中位于[global]标题之下的设置选项,主要设置Samba的全局设置。


综合设置参数


netbios name = samsrv
   workgroup = MYGROUP
   server string = Samba Server
  include = /usr/local/etc/smb.conf.%m
   socket options = TCP_NODELAY


Samba通常使用系统的主机名来产生自己的NetBIOS名字,因此一般不需要特殊设置。如果需要为主机指定一个特别的NetBIOS名字,就需要使用netbios name设置选项。


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


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


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

 

include设置就是用于这个目的,而%m就是一个宏变量,在执行过程中将被替换为客户计算机的NetBIOS名字,这就起到动态执行配置文件的作用。一般情况下没有这个需要,因此这个配置行缺省被注释起来了。


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


由于Samba需要建立大量的连接,产生大量的进程,因此需要调整内核参数,例如maxusers、NMBCLUSTER等等,才能得到更好的性能。


安全与审计设置


  hosts allow = 192.168.1. 192.168.2. 127.
  interfaces = 192.168.12.2/24 192.168.13.2/24
  guest account = pcguest
   log file = /var/log/log.%m
   max log size = 50


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


如果Samba是使用inetd启动,还可以尝试使用Tcp Wrapper来保护系统。


如果计算机上有多个网络界面,那么就可以使用interfaces参数限制Samba提供服务的范围,使Samba只为某一个界面连接的网络提供SMB网络服务。这个和hosts allow是不同的,它使得网络服务根本不在这个网络界面上提供服务,虽然对具体的客户提供限制,但在系统不提供路由能力的情况下也能达到安全限制的作用。这种情况的一个使用例子是SMB服务器同时用作系统的网关,那么就可以只对内部网络提供服务而不对外部网络提供SMB服务。


缺省情况下,Samba服务器为所有连接的网络提供SMB服务。


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


而 log file定义samba的日志文件,日志文件可以是一个完整的文件,也可以按照客户计算机或登录的用户保存到不同的日志文件中。这里设置为/var/log目录下的以log为前缀的文件,%m用于代表从访问的NetBIOS计算机名, %U表示不同的登录用户。例如从一台名字为win95c的计算机访问samba服务器的日志,将记录在/var/log/log.win95c文件中。


而max log size定义每个日志文件的存储限制,单位为千字节KB。


打印缺省配置


   load printers = yes
  printcap name = /etc/printcap
  printcap name = lpstat
  printing = bsd
  printer admin = @admin


这些设置是用于设置samba服务器的打印机资源,load printer设置为yes则允许samba服务器在相应的打印机共享资源中(print$或printer$),自动将系统中的所有打印机对外共享出去,否则需要针对需要共享的具体打印机设置具体的共享资源。


由于Unix系统中存在多种不同的打印系统,常用的包括BSD Unix的打印系统, Unix System V打印系统,LPRng打印系统等等,因此需要根据系统中打印系统的类型,设置正确的printcap name和printing参数。


对于使用BSD打印系统的FreeBSD来讲,打印系统为BSD,使用的设置文件为printcap,这些是缺省设置,不需要进行printing和printcap name的设置。
而printer admin参数用来设置打印机的管理员,这可以用于Windows用户从远程管理打印机,包括上载打印机驱动等等。’@admin’就是admin组,也也可以直接指定具体的用户。


前面使用smbclient列出的缺省配置,就共享了三种不同的打印机,事实上它是一个HP LaserJet 5P打印机的不同接口,ascii为最简单的支持字符的打印接口,lp2为标准打印接口,lj5gray-a4-ra为不进行任何处理,直接输出的打印接口,这三个接口为使用apsfilter软件自动产生的配置。事实上对于大部分Windows客户端系统,当打印机类型配置正确之后,客户软件能直接产生打印机支持的打印数据,因此只有最后一种打印机是有用的,其他打印机不需要共享。


认证模式设置


   security = user
    null passwords = yes
  password server = <NT-Server-Name>
encrypt passwords = yes


由于SMB协议是和Microsoft网络共同发展的,而不同的Microsoft Windows系统版本,使用了多个不同的认证方式,这就造成了资源共享时的认证方式的复杂性。
在Windows 95/98等系统中,由于系统都为个人系统,系统中也没有对用户的真正认证机制,因此共享资源的时候,就需要针对每种资源设置一种访问口令,这就是最简单的共享级认证。


Unix为多用户操作系统,缺省就使用用户级认证方式。当使用用户级认证的时候,Samba服务器使用Unix操作系统的用户和口令(来自/etc/passwd)对用户进行认证,这是一种独立的认证方式。


而有时候希望所有的服务器使用同一个认证数据库进行统一认证,最简单的方法是Samba通过一个信任的Windows NT服务器认证用户,Samba只需要认可该NT系统的认证就可以了。这种方法称为服务器认证方式,这种方式同时也需要使用password server指定认证服务器的名字。服务器认证方式的好处是比较灵活,可以不管整个网络的域规划,只需要通过相应的NT服务器认证就可以了,如果使用的是域的主域控制器,那么基本上能做到一致的认证。


由于当前的Windows系统使用了域来统一认证,因此就可以使用基于域的统一认证模式。在一个域中,用户只需要通过域控制器进行认证即可,域中其他SMB服务器就将认可域控制器的认证。设置域认证需要将Samba系统加入域,成为域的成员,因此整个操作过程略微复杂一些,设置域认证方式在后面进行详细解释。


出于兼容的考虑,Windows系统支持空口令,这需要支持null passwords参数。


在Windows NT 4及Windows 98之后,客户和服务器之间进行认证时,口令不再以明文的方式在网络中传输了。为了支持加密口令传输,需要设置encrypt passwords选项。但是,使用加密口令的时候需要访问口令的明文形式,而Unix系统口令使用加密口令,而且这种加密口令无法反向获得口令的明文,因此使用加密口令就不能使用系统口令进行认证,因此,就需要为此指定独立的口令设置,包括设置Samba口令文件的存储位置等等。


浏览器控制设置


  local master = no
  os level = 33
  preferred master = yes
  domain master = yes


这些设置选项主要用于SMB网络中进行浏览时,设置samba服务器的行为,就是说是否允许samba服务器参加broswer的推举过程,以何种方式参加推举过程等参数。


缺省情况下Sambe服务器将参加推举过程,由于FreeBSD系统比Windows系统的稳定性更高,Samba服务器作为Browser显然可以避免一些因为系统当机导致Browser发生变化的例外情况,很多情况下正是这种无法侦测的情况使得不同的系统资源列表存在差异。一些特殊情况下,系统管理员不希望使用samba服务器成为browser,以避免可能存在的不兼容性,就需要设定local master参数为no。


Browser的推举过程虽然是随机的,但是也有一个权重比例,这就是os level设置的值,权重比例越高,越容易赢得推举的胜利。Microsoft NT server的权重为32,普通的Windows 95/98更低。因此,如果设置Samba服务器的os level参数为33,这将在与所有Windows计算机(包括Windows NT)的推举竞赛中获得胜利。如果不希望Samba服务器和Windows NT服务器竞争,可以设置这个参数的值比较小一些。


由于Unix及Samba服务器在同样硬件配置下具有更高的网络性能,因此一般情况下,使用Samba服务器作Browser更佳。


Microsoft网络中每一时刻都会存在一个Browser,因此通常网络最早启动的系统将成为Browser,当其他系统启动的时候,一般情况下不必重新进行推举过程,让网络中的现有Browser继续发挥作用,直到它发生故障导致Browser的重新推举。然而,最早成为Browser的计算机并不一定是系统中的服务器,性能和可靠性都可能存在问题,因此希望网络服务器能对现存的Browser进行挑战,强迫重新进行推举过程。那么,如果希望Samba服务器总是成为Browser,就需要设定perfered master参数。


在多个子网组成的复杂网络情况,网络上就会存在Local master Browser和Domain master Browser。以上的设置只能使Samba成为Local master Browser,缺省Samba并不参加Domain master Brower的推举。设置Samba服务器成为Domain master Browser就必须使用domain master参数进行设置,这可以和Samba作为域控制器的设置结合起来。


但是如果网络使用的是Windows NT的域方式,已经存在了主域控制器PDC(primary Domain Controller)服务器,就要使用NT的域控制器作为Domain master Browser,就不要设置与NT域控制器同一个子网中的Samba服务器的domain master参数,以免它和域控制器竞争。因为主域控制器本身能收集网络中本域的信息,更适合用作Domain master Browser。


域相关设置


  domain controller = <NT-Domain-Controller-SMBName>
  domain logons = yes
  logon script = %m.bat
  logon script = %U.bat
  logon path = \\%N\Profiles\%U
    logon drive = H:
    logon home = \\fserver\%u


当网络使用域的方式的时候,域控制器成为网络的中心点,它能用来认证用户、认证域内计算机、提供信任关系等等。Samba服务器在域中可以起到不同的作用,最简单的情况下Samba服务器可以成为域的成员计算机。


域内的成员需要寻找它的主域控制器,以执行很多认证任务。让Samba服务器了解它所在域的主域控制器的方法是指定在设置文件中指定域基本控制器PDC的NetBIOS名字,这需要使用domain controller参数进行设置。这在设置Samba服务器作为成员加入一个域的时候非常有用。


如果Samba服务器被用作一个域的控制器,那它就能起到管理用户的作用,包括支持用户登录的功能。这就是说,当用户通过一台Windows客户机使用用户级认证登录域的时候,会执行服务器中相应目录中的登录脚本,以自动执行一些相关设置。


通常这种域登录功能是由Windows NT服务器来执行的,然而Samba服务器也能完成这个任务,但必须设定domain logons参数。此后就可以对不同的客户计算机或不同用户指定相应的登录脚本,登录脚本可以使用不同的用户名或计算机名进行区分。这个功能还必须要求在本配置文件后面设置[netlogon]共享选项,共享出登录脚本的资源,以便客户机能访问相应的登录脚本。


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


而logon home和logon drive则可以在用户登录的时候,自动映射其个人目录到一个驱动器上。


 名字服务支持


  wins support = yes
  wins server = w.x.y.z
  wins proxy = yes
   dns proxy = no


上面的这些选项是用于设置Samba的NetBIOS名字解析方式,wins support选项使得Samba的nmdb能对外表现为一个WINS名字服务器,因而系统可以使用本身进行名字解析。


如果不希望本身用作一个名字服务器,可以指定wins support为no,同时可以设置wins server参数,用于指定一个外部名字服务器的地址(可以为NT上的wins服务器或另一个Samba服务器),使得nmbd能用做名字解析的客户端,通过访问该wins名字服务器解析NetBIOS名字。


此外,还有一些比较老的NetBIOS客户,例如一些Lan Manager的客户,它们不支持使用名字服务器进行解析,而只能使用广播的方式解析名字。这样,如果名字服务器位于另一个子网上,那么它们就无法正确解析整个网络中的某些NetBIOS名字,而和它们在同一个子网的Samba服务器可以用作一个名字服务器的代理,这需要设置wins proxy参数。例如一个WINS服务器在另一个子网上,一些Windows客户没有设置wins服务器地址,它们使用广播方式查询名字,在这台Samba服务器设置了wins proxy能力之后,它就能代替wins服务器以广播的方式回应客户请求。


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


2) [homes]个人目录共享设置


 [homes]
   comment = Home Directories
   browseable = no
   writable = yes


如前面所提到的,[homes]部分是用户的个人目录共享设置,使得每个Unix用户通过SMB客户登录上来的时候,可以共享使用他自己的个人目录。


这个共享资源具备特别属性,它的共享资源名字是用户自己的标识符。因此对于不同用户,这个设置部分设置了不同的共享资源,是一个动态的共享设置,而不是静态的。设置这个特别的动态共享选项,就允许每个用户访问自己的个人目录,而不必为每个用户都配置一个共享资源部分。正由于系统会自动映射,因此就不需要定义要共享的文件目录路径,而在正常的文件资源共享选项中,都需要使用path参数定义共享的目录。


Comment为一段注释文本,能显示在Windows Explorer中,用于解释这个资源的内容。


由于这里设置的共享资源不确定,跟用户相关,因此可以设定browseable参数为no,设置homes本身这个名字不出现在资源列表中。


Writable参数为用户写权限设置,由于是在用户的个人目录下,用户可以具备写权限。


3) 网络登录和漫游设置


当Samba服务器如果用作域控制器的时候,就可以支持用户的域认证、登录等功能,因此就需要使用[netlogon]设置登录支持,和使用[profiles]设置漫游支持。


; [netlogon]
  comment = Network Logon Service
  path = /usr/local/samba/lib/netlogon
  guest ok = yes
  writable = no
  read only = yes
  share modes = no


 当在[global]部分中设置Samba服务器支持客户的网络登录功能之后(设置domain logon),就需要设置[netlogon]部分,为登录用户打开登录路径的访问权限,以保证每个用户都能访问其自己的登录脚本。


相应的,path参数定义保存登录脚本的位置,这些登录脚本的具体名字则由上面的logon script参数定义。


对于一些匿名用户,可以设置guest ok,支持它们的登录脚本。而writable用来保护这个路径,它和read only选项用于同一个目的,share modes用来设置它不是一个普通的共享资源。


需要使用正确的权限设置这个目录和目录下对应各个计算机或用户的登录脚本,保证系统的安全性,以及保证登录脚本可以被不同的用户读取。


;[Profiles]
   path = /usr/local/samba/profiles
   browseable = no
   guest ok = yes
   create mask = 0600
   directory mask = 0700


当支持Windows计算机漫游能力时,可以设定[Profiles]部分,并设置保存用户漫游的数据保存路径,来为Window用户保存桌面环境。


为了保证安全,计算机自动创建的文件和目录使用的权限使用create mask和directory mask来设置。


4) 打印机共享设置


Samba的打印设置可以一次将所有的打印机都共享出去,而不是对每个打印机都单独进行一次设置。因此,这需要设置[print$]共享选项。


在早期的Windows版本,打印机共享使用Printer$共享资源,因此早期的Samba使用[printer$]作为共享资源来设置打印机共享,但[printer$]在设置打印驱动方面存在一些问题,因此在Samba 2.2.x中改变为使用[print$]共享设置,这与Samba2.0之前是不同的。


[print$]
   comment = All Printers
   path = /var/spool/samba
   browseable = yes
   guest ok = no
   read only = yes
   write list = @admin,root


这个部分的具体设置就依赖于系统的具体规划,例如如果要求每个用户都使用用户方式认证,那么guest ok就可以为no,否则可以设置为yes,允许任意用户打印。
而write list用于设置打印机管理员可以改变一些打印驱动程序。


为了针对不同的系统,放置不同的打印机驱动程序,以便系统能够自动下载打印驱动,需要在该路径下建立针对不同系统的目录,通常,可以建立WIN40,用于放置Windows 95/98系统的打印驱动,而建立W32X86目录,用于放置Windows NT系统的打印驱动。那么,write list中的用户就可以上载相应的打印驱动了。


提示:上载打印驱动、设置打印机和驱动之间的关系,都可以使用Windows NT/2000浏览Samba服务器的打印机,并使用打印机的属性对话框来完成。也可以使用Windows NT/2000中的添加打印机向导来为Samba服务器添加打印机。


5) 其他专有共享目录


;[public]
  comment = Public Stuff
  path = /home/samba
  public = yes
  writable = yes
  printable = no
  write list = @staff

;[fredsdir]
  comment = Fred's Service
  path = /usr/somewhere/private
  valid users = fred
  public = no
  writable = yes
  printable = no
 
;[pchome]
comment = PC Directories
path = /usr/pc/%m
public = no
writable = yes
 
;[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中也给出了一些设定各种共享文件资源的例子,例如设置公共共享文件夹的[public],设置私人文件共享资源的[freddir]和[myshare],使用宏为多个用户设置共享的[pchome]等等。


在这些例子中值得注意的是访问权限的设置,例如valid users可以设置这个资源的合法访问用户列表,当然也可以使用组名来设置可以访问这个资源的合法用户。而public用于设置这个资源是否可以被公共访问,当设置了public为yes,则可以不必设置valid users的用户列表。guest ok和only guest则是两个用来设置匿名(或不存在的)用户的访问选项, guest ok设置是否许可这些用户访问资源,而only guest可以限制真正的合法用户访问这些资源。


FreeBSD的管理员可以根据具体情况,根据这些设置例子设置相应的共享资源,并设置相应的访问权限,以保护文件系统不被非法访问。


设置这些共享选项,使用SWAT的SHARE部分进行设置更为方便和直接。

  评论这张
 
阅读(564)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017