smb.conf是Samba组件的配置文件,包含Samba程序运行时的配置信息.smb.conf被设计成可由swat (8)程序来配置和管理.本文件包含了关于smb.conf的文件格式和可能出现的选项的完整描述以供参考.
本文件由一系列段和选项构成.一个段由一对方括号中的段名开始,直到下一个段名结束.包含在段中的选项按以下格式定义:
选项名 = 选项值
本文件是基于文本行的.这就是说,每一个以换行符结束的行描述了一个项目(注释,段名,或选项).
段名和选项名是不区分大小写的.
只有选项设置中的第一个等号才有意义.第一个等号前后的空格会被忽略.段名和选项名的前后以及中间包含的空格是无关的.选项值前后的空格会被忽略.选项值中包含的空格会原样保留.
所有以‘;‘和‘#‘符开头的行都会被忽略,就象只有空格的行那样.
按照UNIX上的惯例,以‘‘符号结尾的行续下一行.(也就是说:‘‘是续行符,如果一行写不下,可以在行尾以‘‘结束,在下一行继续写--译注)
等号后面跟的是字符串(无需引号)或者逻辑值(可以是yes/no,1/0,或者true/false 来表示).逻辑值是不区分大小写的.字符串值则原样保留了输入的大小写.某些选项 (例如create modes)的值是数值型的.
配置文件的每一段([global]段除外)描述一项共享资源.段名就是共享名,段内的选项设置确定了该共享资源的属性.
三个特殊段([global],[homes],[printers])将在后面‘special sections‘单独说明,以下的内容是普通段的说明.
一个共享资源由一个文件目录和用户对此目录的操作权限的说明构成.另外,还列入了一些用于内部管理的选项.
每一段定义了一项文件服务(客户端可以把它看作其本机文件系统的延伸)或打印服务(客户端可以通过它来使用服务器提供的打印服务).
段可以定义成guest服务类型,在这种情况下,客户无需口令就可以访问该资源.一个特定的UNIX系统下的guest account通常用来指定这种情况下的客户访问权限.
除了guest服务类型以外,其他类型的段定义的共享资源都需要口令才能访问.用户名是由客户端提供的.由于某些老的客户端只提供口令,没有用户名,你需要在共享定义中使用"user="选项来指定一个用户列表,以便根据这个用户列表进行口令验证.对于象Windos95/98和WindowsNT这样的现代客户端程序,这个选项是不需要的.
注意,对于资源的操作权限还取决于主机系统赋予指定用户或来访者账户的权限.samba提供的服务权限不能超出主机系统指定的权限范围.
下面的示范段定义了一项文件服务,用户拥有对/home/bar目录进行写操作的权限.这个共享资源是通过共享名"foo"来访问的.
[foo] path = /home/bar read only = no
下面示范段定义了一项打印服务,此共享资源是只读的,但是可以进行打印操作.也就是说,唯一允许的写操作只能是打开、写入并关闭一个打印假脱机文件.其中的guest ok选项定义意味着允许以缺省的guest用户(在别处定义的)权限进行访问.
[aprinter] path = /usr/spool/public read only = yes printable = yes guest ok = yes
这一段中定义的选项是服务器的全局性设置,如果在其他段中没有再对这些选项进行重新设置的话还可以作为它们的缺省选项.更多的说明请参阅‘PARAMETERS‘部分的内容.
如果配置文件中包含名为‘homes‘的段,就可以建立客户到自己在服务器上的个人目录的连接.
当服务器收到连接请求时,首先在已定义的段中搜索,如果段名与被请求的共享资源名一致,则该段的内容就被采用.如果没有找到匹配的段,则被请求的资源就被当作是一个用户名,同时服务器查看本地的口令文件.如果该用户名在口令文件中存在且用户给出了正确的口令,服务器就会复制[homes]段的内容来生成一个共享资源(供该用户访问).
对新建共享会做以下修改:
如果要在[homes]段中定义访问路径path=,宏%S也许对你很有用.举例如下:
path = /data/pchome/%S
如果你的PC 有与UNIX服务器上个人目录不同的目录,象上面这样的设置会很有用的.
这是为大量用户提供对他们个人目录的访问的一种快速简洁的办法.
如果被请求访问的共享资源名就是‘homes‘,那么,除了共享名不被改变为发出请求的用户名外,其他处理过程和前面提到的过程是类似的.这种方式适合于不同用户共享一台终端的情况.
在[homes]段中可以定义所有普通段中可以使用的选项,可是有些选项更有意义.下面是一个实用的、典型的[homes]段的例子:
[homes] read only = no
注意,很重要的一点是:如果在[homes]段中定义了允许以guest账户访问的话,任何人都可以无须口令而访问所有账户的宿主目录.也许在某些特殊情况下,这正是想要的结果,在这种情况下,你最好同时把[homes]段设置成只读.
注意,自动的宿主目录共享资源的可浏览标志是从[global]段继承来的,而不是[homes]段.这样,当在[homes]段中设置browseable=no时,用户就看不到单独的‘homes‘共享,但可以看到自动的宿主目录.
这一段很象[homes]段,不过是用于设置共享打印机的.
如果在本配置文件中存在[printers]段,用户就可以连接到在主机上的printcap文件中指定的任一打印机.
当服务器收到连接请求时,首先在已定义的段中搜索,如果有段名与被请求的共享资源名一致,则该段的内容就被采用.如果没有找到匹配的段,且在配置文件中存在[homes]段,则按照前面所说的方式处理.否则,被请求的资源就被当作是一个打印机名,服务器在适当的printcap文件中查找,检验被请求的共享资源名是否是有效的打印机共享名.如果共享名匹配,服务器就会复制[printers]段的内容来生成一个共享打印服务.
对新建共享的修改:
注意,[printers]段必须设置为可打印,如果你不这样设置,服务器会拒绝装载配置文件.
指定的典型路径应该设为一个公用的可写假脱机目录(spooling)并且设置sticky标志.一个典型的[printers]段如下所示:
[printers] path = /usr/spool/public guest ok = yes printable = yes
上台打印机在printcap文件中列出的所有别名都是服务器相关的有效打印机名.如果你系统的打印子系统的工作方式不是这样,你就必须设置一个伪printcap文件,其中包含一行或多行如下格式的设置:
别名1|别名2|别名3|别名4...
每个别名必须是你的打印子系统可以接受的打印机名.在[global]段中指定这个新文件作为你的printcap文件.这个伪printcap文件可以包含任何你要的别名,而服务器只识别在此文件中列出的名字.这个技术可以很方便的用于限制对本地打印机子集的访问.
顺便提一下,printcap文件中的别名用每个记录第一项的任何部分来定义.记录由换行进行分隔.如果一条记录中有多个部分,中间用"|"符号分隔.
注意,在SYSV系统中,用lpstat可以确定系统中安装了什么样的打印机.你可以设置"printcap name = lpstat"来自动获得打印机列表.详情参见"printcap name"选项.
选项定义了每个段的属性.
有些选项是在[global]段中设定的(比如有关安全特性的设置),有些可以用在任何段中的(比如建立方式 ),剩下的就只能用在普通的段中了.在以下的描述中,[homes]和[printers]段被看作是普通段.标记(G)表示此选项只能在[global]段中使用,标记(S)表示此选项可以在服务定义段中使用.注意,有(S)标记的选项也可以用在[global]段中,在这种情况下,这个选项设置被当作所有其他段的缺省设置.
选项的详细说明是按照字母顺序排列的,这样也许不是最好的分类方式,但至少保证你可以找得到他们.如果有多个同义词,那么我们只对首选的那个作详细说明,其他的同义词都只指明参阅那个首选的选项名.
在配置文件中可以用很多字符串进行替换.例如,当用户以john的名称建立连接后,选项"path = /tmp/%u"就被解释成"path = /tmp/john".
这些置换会在后面的描述中说明,这里说明一些可以用在任何地方的通用置换.它们是:
Note that this parameter is not available when Samba listens on port 445, as clients no longer send this information
The following substitutes apply only to some configuration options(only those that are used when a connection has been established):
灵活运用这些置换和其他的smb.conf选项可以做出非常有创造性的事情来.
Samba支持"名称修正",这样dos和windows客户端就可以使用与8.3格式不一致的文件.也可以用来调整8.3格式文件名的大小写.
有一些选项可以控制名称修正的执行,下面集中列出来.对于缺省情况请看testparm程序的输出结果.
所有这些选项都可以针对每个服务项单独设置(当然也可以设为全局变量).
这些选项是:
缺省情况下,Samba3.0与Windows NT相同,就是不区分大小写但保持大小写形式.
用户有多种连接到服务项的方式.服务器按照下面的步骤来确定是否允许客户对指定服务的连接.如果下面步骤全部失败,则拒绝用户的连接请求.如果某一步通过,余下的检验就不再进行.
如果被请求的服务项设置为guest only = yes,并且,服务运行在共享级安全模式(security = share) ,则跳过1--5步检查.
以下列出了所有的全局选项,各选项的详细说明请参看后面的相应段落.注意,有些选项的意义是相同的.
以下列出了所有关于服务项的选项,各选项的详细说明请参见后面的相应段落.注意,有些选项的意义是相同的.
This command will be run as user.
缺省设置: None.
示例: abort shutdown script = /sbin/shutdown -c
缺省设置: acl compatibility = Auto
示例: acl compatibility = win2k
This option is only required when using sam back-ends tied to the Unix uid method of RID calculation such as smbpasswd. This option is only available in Samba 3.0.
缺省设置: add machine script = <空字符串>
示例: add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
For a Samba host this means that the printer must be physically added to the underlying printing system. The add printer command defines a script to be run which will perform the necessary operations for adding the printer to the print system and to add the appropriate service definition to the smb.conf file in order that it can be shared by smbd(8).
The addprinter command is automatically invoked with the following parameter (in order):
printer name
share name
port name
driver name
location
Windows 9x driver location
All parameters are filled in from the PRINTER_INFO_2 structure sent by the Windows NT/2000 client with one exception. The "Windows 9x driver location" parameter is included for backwards compatibility only. The remaining fields in the structure are generated from answers to the APW questions.
Once the addprinter command has been executed, smbd will reparse the smb.conf to determine if the share defined by the APW exists. If the sharename is still invalid, then smbd will return an ACCESS_DENIED error to the client.
The "add printer command" program can output a single line of text, which Samba will set as the port the new printer is connected to. If this line isn‘t output, Samba won‘t reload its printer shares.
参见 deleteprinter command, printing, show add printer wizard
缺省设置: none
示例: addprinter command = /usr/bin/addprinter
When executed, smbd will automatically invoke the add share command with four parameters.
configFile - the location of the global smb.conf file.
shareName - the name of the new share.
pathName - path to an **existing** directory on disk.
comment - comment string to associate with the new share.
This parameter is only used for add file shares. To add printer shares, see the addprinter command.
参见 change share command, delete share command.
缺省设置: none
示例: add share command = /usr/local/bin/addshare
通常,samba服务器需要为所有访问服务器上文件的用户建立UNIX用户账号.但是在使用Windows NT账号数据库作为主用户数据库的站点,建立这些用户并在与NT的主域控制器保持用户列表同步是一件很麻烦的事情.这个选项使smbd可以在用户访问时根据需要自动生成UNIX用户账号.
为了使用这个选项,smbd必须被设置成security=server或者security=domain,并且add user script必须设为用%u参数来建立unix帐号的脚本文件的全路径,%u扩展成建立的unix帐号名.
当windows用户尝试访问samba服务器时,在登陆时(建立SMB协议会话),smbd与口令服务器联系,并尝试验证用户名和口令.如果成功,smbd就会根据unix的口令文件试着将这个windows用户映射成一个unix用户.如果查找失败,但设置了add user script ,smbd就会以root的身份调用这个脚本,将%u扩展成该要建立的用户账号.
如果这个脚本执行成功,smbd就认为这个用户已经存在.用这种方式,可以动态建立UNIX用户账号并匹配已有的NT账号.
参见 security, password server, delete user script.
缺省设置: add user script = <空字符串>
示例: add user script = /usr/local/samba/bin/add_user %u
缺省设置: add user to group script =
示例: add user to group script = /usr/sbin/adduser %u %g
小心使用该选项,因为在这个名单里的用户可以对共享资源作任何他们想做的事.
缺省设置: 没有 admin users
示例: admin users = jason
缺省设置: afs share = no
示例: afs share = yes
The mapped user name must contain the cell name to log into, so without setting this parameter there will be no token.
缺省设置: none
示例: afs username map = %u@afs.samba.org
Setting this option to a larger value could be useful to sites transitioning from WinNT and Win2k, as existing user and group rids would otherwise clash with sytem users etc.
All UIDs and GIDs must be able to be resolved into SIDs for the correct operation of ACLs on the server. As such the algorithmic mapping can‘t be ‘turned off‘, but pushing it ‘out of the way‘ should resolve the issues. Users and groups can then be assigned ‘low‘ RIDs in arbitary-rid supporting backends.
缺省设置: algorithmic rid base = 1000
示例: algorithmic rid base = 100000
如果你只需要在域中对成员提供服务资源的话这个选项是非常有用的.举例来说,假设有两个域DOMA和DOMB,DOMA已经向DOMB进行了委托,而samba服务器位于DOMA中.在通常情况下,在DOMB中有账号的用户可以用同样的samba服务器账号名访问UNIX上的资源.而无须他在DOMA上有账号.不过这样就使安全界线更难分清了.
缺省设置: allow trusted domains = yes
缺省设置: announce as = NT Server
示例: announce as = Win95
缺省设置: announce version = 4.9
示例: announce version = 2.0
Each entry in the list attempts to authenticate the user in turn, until the user authenticates. In practice only one method will ever actually be able to complete the authentication.
Possible options include guest (anonymous access), sam (lookups in local list of accounts based on netbios name or domain name), winbind (relay authentication requests for remote users through winbindd), ntdomain (pre-winbindd method of authentication for remote domain users; deprecated in favour of winbind method), trustdomain (authenticate trusted users by contacting the remote DC directly from smbd; deprecated in favour of winbind method).
缺省设置: auth methods = <空字符串>
示例: auth methods = guest sam winbind
缺省设置: available = yes
对于名字服务,它将使nmbd 绑定到‘interfaces‘选项里列出的网络接口的137和138端口上.为了读取广播消息,nmbd也会绑定到"所有地址"接口(0.0.0.0)的137和138端口上.如果没有设置这个选项,nmbd将在所有的接口上响应名字服务请求.如果设置了"bind interfaces only",那么nmbd将在广播接口上检查任何分组的源地址,丢弃任何不匹配interfaces选项所列接口之广播地址的分组.当在其它接口上收到单播分组,此选项使nmbd拒绝对任何不是是interfaces选项所列接口来发送分组的主机的服务.IP源地址哄骗可以使这个简单的检查失效,所以不要将nmbd安全功能用于严肃场合.
对于文件服务,该选项使smbd(8)只在‘interfaces‘选项所列的网络接口上绑定.这就限制smbd 只响应那些接口上发出的分组.注意,不应该在PPP和时断时续的机器上或非广播网络接口上使用这个选项,因为它处理不了非永久连接的接口.
如果设置了bind interfaces only,除非网络地址127.0.0.1被加到interfaces选项的列表中,否则smbpasswd(8)和swat(8) 可能不会象我们所期望的那样工作,原因如下:
为了改变用户SMB口令,smbpasswd缺省情况下会以smb客户端的身份连接本地主机地址localhost - 127.0.0.1,发出更改口令请求.如果设置了bind interfaces only,smbpasswd在缺省情况下将会连接失败,除非127.0.0.1已被加入到interfaces选项.另外,可以用-r remote machine选项指定本地主机的主网络接口ip地址,这样smbpasswd就会强制使用本地的主ip地址.
swat的状态页面会在127.0.0.1尝试连接smbd和 nmbd,以确定它们是否正在运行.如果不加入127.0.0.1,将会使smbd和nmbd 总表示没有运行甚至实际情况并不是这样.这就阻止了 swat启动/停止/重启动smbd 和nmbd进程.
缺省设置: bind interfaces only = no
如果设置了这个选项,锁定范围请求不能立即满足的话,samba将会在内部对请求进行排队,并且周期性地尝试获得锁定,直到超时.
如果这个选项设置为no,samba就会同以前版本那样,在锁定范围无法获得时立即使锁定请求失败.
缺省设置: blocking locks = yes
Changing this parameter may have some effect on the efficiency of client writes, this is not yet confirmed. This parameter was added to allow advanced administrators to change it (usually to a higher value) and test the effect it has on client write performance without re-compiling the code. As this is an experimental option it may be removed in a future release.
Changing this option does not change the disk free reporting size, just the block size unit reported to the client.
缺省设置: browseable = yes
缺省设置: browse list = yes
缺省设置: case sensitive = no
缺省设置: change notify timeout = 60
示例: change notify timeout = 300
这将把扫描时间改为每5分钟一次.
When executed, smbd will automatically invoke the change share command with four parameters.
configFile - the location of the global smb.conf file.
shareName - the name of the new share.
pathName - path to an **existing** directory on disk.
comment - comment string to associate with the new share.
This parameter is only used modify existing file shares definitions. To modify printer shares, use the "Printers..." folder as seen when browsing the Samba host.
参见 add share command, delete share command.
缺省设置: none
示例: change share command = /usr/local/bin/addshare
The LANMAN encrypted response is easily broken, due to it‘s case-insensitive nature, and the choice of algorithm. Clients without Windows 95/98 servers are advised to disable this option.
Disabling this option will also disable the client plaintext auth option
Likewise, if the client ntlmv2 auth parameter is enabled, then only NTLMv2 logins will be attempted. Not all servers support NTLMv2, and most will require special configuration to us it.
Default : client lanman auth = yes
If enabled, only an NTLMv2 and LMv2 response (both much more secure than earlier versions) will be sent. Many servers (including NT4 < SP4, Win9x and Samba 2.2) are not compatible with NTLMv2.
Similarly, if enabled, NTLMv1, client lanman auth and client plaintext auth authentication will be disabled. This also disables share-level authentication.
If disabled, an NTLM response (and possibly a LANMAN response) will be sent by the client, depending on the value of client lanman auth.
Note that some sites (particularly those following ‘best practice‘ security polices) only allow NTLMv2 responses, and not the weaker LM or NTLM.
Default : client ntlmv2 auth = no
缺省设置: client plaintext auth = yes
缺省设置: client schannel = auto
示例: client schannel = yes
When set to auto, SMB signing is offered, but not enforced. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either.
缺省设置: client signing = auto
缺省设置: client use spnego = yes
如果想设置机器名后的说明文字请参考 server string 命令.
缺省设置: No comment string
示例: comment = Fred‘s Files
由于这个原因,如果在加载这个选项的时候发现配置文件名变化了,就会从新的配置文件里重新加载选项.
这个选项作为常用的替换非常有用.
如果这个配置文件不存在,那么就不会被加载.(允许你特殊地处理少数客户的配置文件)
示例: config file = /usr/local/samba/lib/smb.conf.%m
这个特性允许建立一个服务的‘模版‘,可以很容易的生成相似的服务.注意,被拷贝的服务在配置文件里必须先于拷贝的服务出现.
缺省设置: no value
示例: copy = otherservice
当生成一个文件的时候,需要知道从dos模式映射到unix下的文件权限.最后的结果用这个参数进行逐位的与运算得到.这个选项可以理解成unix下文件的位掩码.在生成文件的时候,任何没有设置的位将会从创建模式中去掉.
这个选项的缺省值是从unix的文件创建模式中去掉组和其他用户的写和执行标志位.
根据这个规则,samba将会把这个选项生成的unix文件创建模式和由force create mode设置的选项进行逐位的或运算,force create mode 的缺省选项是000.
这个选项不会影响目录创建模式.细节参见directory mode .
参考force create mode以进一步了解在创建文件时设置的特殊位.关于创建目录模式参见directory mode选项.参见 inherit permissions parameter.
Note that this parameter does not apply to permissions set by Windows NT/2000 ACL editors. If the administrator wishes to enforce a mask on access control lists also, they need to set the security mask.
缺省设置: create mask = 0744
示例: create mask = 0775
These values correspond to those used on Windows servers.
For example, shares containing roaming profiles can have offline caching disabled using csc policy = disable.
缺省设置: csc policy = manual
示例: csc policy = programs
这可以保护服务器不被过多的发呆连接耗尽资源.
多数客户端有连接断开后的自动重连功能,所以大多数情况下,这个选项对用户应该是透明的
对多数系统建议使用较短的发呆超时的选项.
发呆超时选项被设为0意味着不会自动断开连接..
缺省设置: deadtime = 0
示例: deadtime = 15
注意要使用这个选项,必须打开 debug timestamp选项.
缺省设置: debug hires timestamp = no
注意要使用这个选项,必须打开 debug timestamp 选项.
缺省设置: debug pid = no
缺省设置: debug timestamp = yes
Note that the parameter must be on for this to have an effect. 注意要使用这个选项,必须打开 debug timestamp选项.
缺省设置: debug uid = no
缺省设置: default case = lower
Most problems with serving printer drivers to Windows NT/2k/XP clients can be traced to a problem with the generated device mode. Certain drivers will do things such as crashing the client‘s Explorer.exe with a NULL devmode. However, other printer drivers can cause the client‘s spooler service (spoolsv.exe) to die if the devmode was not created by the driver itself (i.e. smbd generates a default devmode).
This parameter should be used with care and tested with the printer driver in question. It is better to leave the device mode to NULL and let the Windows client set the correct values. Because drivers do not do this all the time, setting default devmode = yes will instruct smbd to generate a default one.
For more information on Windows NT/2k printing and Device Modes, see the MSDN documentation.
缺省设置: default devmode = no
这个选项没有缺省值. 如果没给出这个选项的话,对不存在的服务的请求将返回错误.
缺省服务一般是那些允许guest ok, read-only的服务.
外在的服务名可能被替换成请求的服务名,这样就可以用象%S这样的宏来做一个通用的服务.
注意在缺省服务选项指定的服务名里, 字符‘_‘被映射为‘/‘. 这样可能会出现有趣的事情.
示例:
[global] default service = pub [pub] path = /%S
For a Samba host this means that the printer must be physically deleted from underlying printing system. The deleteprinter command defines a script to be run which will perform the necessary operations for removing the printer from the print system and from smb.conf.
The deleteprinter command is automatically called with only one parameter: "printer name".
Once the deleteprinter command has been executed, smbd will reparse the smb.conf to associated printer no longer exists. If the sharename is still valid, then smbd will return an ACCESS_DENIED error to the client.
参见 addprinter command, printing, show add printer wizard
缺省设置: none
示例: deleteprinter command = /usr/bin/removeprinter
这个选项对于rcs这样的应用很有用,在这种情况下,unix文件的属主不允许改变权限,dos文件只读.
缺省设置: delete readonly = no
When executed, smbd will automatically invoke the delete share command with two parameters.
configFile - the location of the global smb.conf file.
shareName - the name of the existing service.
This parameter is only used to remove file shares. To delete printer shares, see the deleteprinter command.
参见 add share command, change share command.
缺省设置: none
示例: delete share command = /usr/local/bin/delshare
缺省设置: delete user from group script =
示例: delete user from group script = /usr/sbin/deluser %u %g
当远程客户使用‘User Manager for Domains‘ 或是 rpcclient 从服务器上删除一个用户时执行此操作。
这个脚本删除给定的unix用户。
缺省设置: delete user script = <空字符串>
示例: delete user script = /usr/local/samba/bin/del_user %u
如果这个选项被设为了 yes,Samba将试图递归删除在被禁止目录里的任何文件和目录.这对于整合象NetAtalk这样的文件服务系统很有用,它通常会在目录里生成Dos/windows用户看不见的中间文件(e.g. .AppleDouble).
设置delete veto files = yes 使那些有权限的用户可以在删除父目录的时候透明的删除子目录.
参见 veto files 选项.
缺省设置: delete veto files = no
这个设置允许用外部程序代替内部程序来计算总共的磁盘空间和可用的磁盘空间.下面的例子给出了一个能完成这个功能的脚本.
这个外部程序的输入是文件系统里一个需要计算的目录,典型的包括./字符串.以ascii码返回两个整数.第一个是总共的磁盘空间(以块为单位),第二个是可用块树.可选的第三个返回值可以以字节为单位给出块的大小.缺省的块的大小是1024字节.
注意:这个脚本应该属主为root,只有root可写,并且不能带有用户标识位和组标识位(setuid or setgid)!
缺省设置: 缺省用内部程序来计算磁盘容量和可用空间.
示例: dfree command = /usr/local/samba/bin/dfree
如下这个dfree脚本必须是可执行的.
#!/bin/sh df $1 | tail -1 | awk ‘{print $2" "$4}‘
在Sys V一类的系统上可能是:
#!/bin/sh /usr/bin/df -k $1 | tail -1 | awk ‘{print $3" "$5}‘
注意在特定的系统上可能需要给出相应的带有全路径的命令.
当生成一个路径的时候,必须指定的目录权限从dos模式映射到unix模式,然后这个结果和这个选项进行逐位的与运算.这个选项可以理解成unix模式下的位掩码.这个选项里任何没有设置的位在生成unix下的目录时将会被去掉
缺省情况下,这个选项把组和其他用户的写权限位去掉,只允许目录的属主对目录进行修改.
Samba将把这个选项和force directory mode的选项进行逐位的或运算,这个选项缺省时设置为000(也就是不加额外的限制).
Note that this parameter does not apply to permissions set by Windows NT/2000 ACL editors. If the administrator wishes to enforce a mask on access control lists also, they need to set the directory security mask.
在生成目录时如果需要设置特殊的模式位,参见force directory mode选项.
关于生成文件时的模式位参见create mode 选项和directory security mask选项.
Also refer to the inherit permissions parameter.
缺省设置: directory mask = 0755
示例: directory mask = 0775
这个选项以掩码来实现改变权限位,所以在修改时要防止不在掩码中涉及的那些位.实际上,在这个掩码中的位0可以使用户无法改变任何东东.
如果没有明确设定的话,这个选项会用与directory mask选项同样的值.要允许用户在目录中可以修改所有的user/group/world权限,可以把这个选项设为0777.
注意,能访问samba服务器的用户通过其它方法也可以很容易地绕过这个限制,所以对独立工作的系统来说这个选项是最根本最有用的.很多系统管理的管理员都会把它设为默认的0777.
参见 force directory security mode, security mask, force security mode 选项。
缺省设置: directory security mask = 0777
示例: directory security mask = 0700
Note that clients that only support netbios won‘t be able to see your samba server when netbios support is disabled.
缺省设置: disable netbios = no
示例: disable netbios = yes
See also use client driver
Default : disable spoolss = no
缺省设置: display charset = ASCII
示例: display charset = UTF8
注意,NetBISO名的最大长度是15个字符,所以DNS名(或DNS别名)同样最多只能有15个字符.
nmbd 在做DNS名查询的时候将自身复制一份,因为域名查询是一个阻塞的动作.
参见 wins support 。
缺省设置: dns proxy = yes
缺省设置: domain logons = no
注意,windows NT主域控制器默认情况总是占有这个在工作组中的特殊的NetBIOS名,宣称自己是工作组的主域浏览器(也就是说,没有什么方法可以阻止一个Windows NT主域控制器这样做). 这样如果设置了这个选项,并且nmbd 在Windows NT之前向工作组宣称了这个特殊的名字,那么跨子网的浏览行为会变得奇怪,并且可能会失败.
If domain logons = yes , then the default behavior is to enable the domain master 选项。 If domain logons is not enabled (the default setting), then neither will domain master be enabled by default.
缺省设置: domain master = auto
注意,Samba对‘dont descend‘选项的输入格式十分挑剔.例如他也许要求你输入./proc而不是仅仅是/proc.实践是最好的策略.
缺省设置: none (也就是说,所有目录的内容会正常的传递给客户端)
示例: dont descend = /proc,/dev
The default depends on which charsets you have installed. Samba tries to use charset 850 but falls back to ASCII in case it is not available. Run testparm(1) to check the default on your system.
缺省设置: dos filemode = no
这个选项的主要用于解决Visual C++与Samba的兼容性问题.当共享文件被锁定时(oplocks选项被设置为允许),Visual C++使用两个不同的读取时间的函数调用来检查文件自从最后一次读操作以来是否有改变.其中一个函数使用1秒的时间尺度,而另一个则使用2秒的时间尺度.由于使用基于2秒的方法要舍去任何的奇数秒,当文件的时间记录是奇数秒时,Visual C++的两次函数调用结果就会不一致,Visual C++就会总是认为文件被改变.设置这个选项可以使得两次函数调用的结果一致,Visual C++会很高兴的接受这一切.
缺省设置: dos filetime resolution = no
缺省设置: dos filetimes = no
缺省设置: enable rid algorithm = <yes>
想要使加密口令能正确的工作, smbd(8)必须能访问本地的smbpasswd(5)文件(如何正确设置和维护这个文件,请参阅smbpasswd(8)手册),或者,设置选项security= [server|domain|ads],这样设置将使得smbd依赖其它的服务器来帮它鉴别口令.
缺省设置: encrypt passwords = yes
The first enhancement to browse propagation consists of a regular wildcard query to a Samba WINS server for all Domain Master Browsers, followed by a browse synchronization with each of the returned DMBs. The second enhancement consists of a regular randomised browse synchronization with all currently known DMBs.
You may wish to disable this option if you have a problem with empty workgroups not disappearing from browse lists. Due to the restrictions of the browse protocols these enhancements can cause a empty workgroup to stay around forever which can be annoying.
In general you should leave this option enabled as it makes cross-subnet browse propagation much more reliable.
缺省设置: enhanced browsing = yes
缺省设置: no enumports command
示例: enumports command = /usr/bin/listports
这个选项的主要用于解决Visual C++与Samba的兼容性问题.Visual C++生成makefiles文件时, 包含目标文件所依赖的目的目录. 包含建立目录的规则. 同样的, 当NMAKE比较时间属性时, 它检查目录建立时间. 目标目录不存在的话, 会建立一个;如果存在,它的建立时间总是比它所包含的目标文件的建立时间早.
UNIX的时间规则意味着只要有文件在共享目录中建立或删除,Samba将更新关于该目录建立时间的报告. NMAKE将发现目录中除了最后建立的文件以外的所有目标文件都过期了(与目录的建立时间相比较), 然后重新编译目标文件.设置这个选项值将保证目录的建立时间早于它里面的文件,NMAKE就能够正常工作.
缺省设置: fake directory create times = no
当你设置fake oplocks = yes后,smbd(8)总是允许oplock请求, 而不管到底有多少的客户端在使用这个文件.
在通常情况下, 使用真实的oplocks支持总是比使用这个选项好.
如果你使用这个选项在一些只读的共享上(例如: CDROM共享),或者你知道这个共享只能够被一个客户端所访问(例如: 客户主目录). 你将会注意到性能上的重大提升. 如果你将这个选项用在多个客户端都可以读写的共享上, 由于客户可能同时访问一个共享文件, 这样会造成文件损坏. 请一定小心使用.
缺省设置: fake oplocks = no
这个选项缺省是允许(也就是, smbd将允许访问符号链接)
缺省设置: follow symlinks = yes
参见 create mask 来获得关于建立文件时的掩码的详细资料。
另外也参见 inherit permissions 参数.
缺省设置: force create mode = 000
示例: force create mode = 0755
这个例子中, 将迫使所有被建立的文档对"同组/其它(用户)"有读和执行权. 对用户自己有读/写/执行权力.
参见 directory mask 来获得关于建立目录时的掩码的详细资料。
另外也参见 inherit permissions参数.
缺省设置: force directory mode = 000
示例: force directory mode = 0755
这个例子中, 将迫使所有被建立的目录对"同组/其它(用户)"有读和进入权. 对用户自己有读/写/进入权力.
此选项以掩码(‘or‘)来实现权限位的改变,所以它强制了任何掩码中用户可以更改的位.实际上,当在修改目录的安全性时,这个掩码中的一个0位可以作为一组用户已经设为‘on‘的位来看待.
如果没有明确设定的话,这个选项会用与force directory mode选项同样的值.要允许用户在目录中可以修改所有的user/group/world权限,可以把这个选项设为0000.
注意,能访问samba服务器的用户通过其它方法也可以很容易地绕过这个限制,所以这个参数只对独立工作的应用系统来说有用.很多系统管理的管理员都会把它设为默认的0000.
参见 directory security mask, security mask, force security mode 参数。
缺省设置: force directory security mode = 0
示例: force directory security mode = 700
在samba 2.0.5及更新的版本中这个选项已经按下面的方法有了一些扩展功能.如果在此列出的组名有一个‘+‘字符加在名称前的话,当前用户正在访问的共享资源只有初始组被缺省分配到这个组中,而可能的情况是用户已经是其它组成员了.这样,管理员可以决定只有在特殊组里的用户才能以设定的组身份建立文件,更有益于所有权分配管理.例如,设定force group = +sys的话,只有在sys组里的用户才能在访问samba共享资源时拥有缺省的初始组标识.而其它所有用户保留他们原始的组标识.
如果又设定了 force user选项的话,force group选项中指定的组将会越过在 force user中指定的初始组. If the force user parameter is also set the group specified in force group will override the primary group set in force user.
参见 force user选项.
缺省设置: no forced group
示例: force group = agroup
此选项以掩码(‘or‘)来实现权限位的改变,所以它强制了任何掩码中用户可以更改的位.实际上,当在修改目录的安全性时,这个掩码中的一个0位可以作为一组用户已经设为‘on‘的位来看待.
如果没有明确设定的话,这个选项会用与force create mode选项同样的值.要允许用户在文件上可以修改所有的user/group/world权限,可以把这个选项设为000.
注意,能访问samba服务器的用户通过其它方法可以很容易地绕过这个限制,所以这个选项对独立工作的系统来说才有用的.很多系统管理的管理员都会把它设为默认的0000.
参见 force directory security mode, directory security mask, security mask 参数。
缺省设置: force security mode = 0
示例: force security mode = 700
这个选项只有当一个连接建立起来后才有用. 在建立连接的使用, 用户还是必须有合法的用户名和口令. 一旦连接建立起来, 所有的操作将强迫以这个名字进行, 而不管它是以什么名字登录的.
samba 2.0.5和更新的版本中这个选项会导致用户的初始组被作为所有文件操作的初始组.2.0.5以前的初始组被允许作为联接用户的初始组(这是个bug)
参见 force group 选项。
缺省设置: no forced user
示例: force user = auser
缺省设置: fstype = NTFS
示例: fstype = Samba
This parameter should specify the path to a script that queries the quota information for the specified user/group for the partition that the specified directory is on.
Such a script should take 3 arguments:
directory
type of query
uid of user or gid of group
The type of query can be one of :
1 - user quotas
2 - user default quotas (uid = -1)
3 - group quotas
4 - group default quotas (gid = -1)
This script should print its output according to the following format:
Line 1 - quota flags (0 = no quotas, 1 = quotas enabled, 2 = quotas enabled and enforced)
Line 2 - number of currently used blocks
Line 3 - the softlimit number of blocks
Line 4 - the hardlimit number of blocks
Line 5 - currently used number of inodes
Line 6 - the softlimit number of inodes
Line 7 - the hardlimit number of inodes
Line 8(optional) - the number of bytes in a block(default is 1024)
参见 set quota command 选项。
缺省设置: get quota command =
示例: get quota command = /usr/local/sbin/query_quota
缺省设置: getwd cache = yes
在某些系统上,缺省的访问用户名"nobody"账户可能不能打印.如果遇到这种情况,请使用其它的账户名(例如ftp)。想要测试这种情况,可以试着用来访账户登录(可以用su -命令),然后,使用系统打印命令lpr(1)或lp(1).
这个参数不接受%宏,因为Samba系统的很多组件要正确工作都需要这个值是一个常量。
缺省设置: 编译时指定,通常是"nobody"
示例: guest account = ftp
这个选项抵消了设置 restrict anonymous = 2 的好处。
参见下面的 security来获得更多信息。
缺省设置: guest ok = no
参见下面的 security 参数来获得更多信息。
缺省设置: guest only = no
缺省设置: hide dot files = yes
每个条目必须以"/"分隔以便允许在条目中使用空格.可以使用DOS风格的通配符"*"和"?"匹配多个目录和文件。
每一个条目必须使用UNIX格式的路径,而不是DOS格式的路径,同时,不能包含UNIX路径分隔符"/".
注意:大小写敏感的特性也适用于隐含文件.
设置这个选项会影响Samba的性能,它会迫使系统检查所有的文件和目录以确定是否与它的所要寻找的项目匹配.
参见 hide dot files, veto files 和 case sensitive.
缺省设置: 没有隐藏文件
示例: hide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/
上面的例子中的文件从Thursby共享出来,给Macintosh的SMB客户端(DAVE),供内部使用,仍然隐藏了"."打头的文件.
缺省设置: hide local users = no
缺省设置: hide special files = no
缺省设置: hide unreadable = no
缺省设置: hide unwriteable = no
username server:/some/file/system
程序从":"号前取得服务器名字.将来也许会有更好的解释系统来处理不同的映射格式,当然,也包括Amd(另一种自动装载方式)映射.
需要系统中有一个运行的NIS客户来使这个选项工作。
参见 nis homedir , domain logons .
缺省设置: homedir map = <空字符串>
示例: homedir map = amd.homedir
参见 msdfs root share level 选项。 For more information on setting up a Dfs tree on Samba, refer to ???.
缺省设置: host msdfs = no
缺省设置: hostname lookups = yes
示例: hostname lookups = no
这个选项是一个由逗号,空格或者tab字符隔开的一组主机名.列入其中的主机才允许访问.
如果该选项出现在[global]段中,它会作用于所有服务而忽略单个服务所作的不同设置.
你可以用ip地址或主机名来指定主机.比如,你可以用类似 allow hosts = 150.203.5. 来限定只允许访问在这个c类子网中的主机.hosts_access(5)中详细描述了关于这个选项设置的完整语法.注意到你的系统中也许没有这个参考手册,这里也作一个简单的说明.
注意,本机地址127.0.0.1 总是允许连接,除非在hosts deny 选项中加以禁止.
你也可以使用子网号/子网掩码对来指定主机.如果你的网络支持网络组,你还可以用网络组名来指定组内的主机.EXCEPT(除了...)关键字可以在使用了通配符的情况下起到限定作用.
Example 1: 允许150.203.*.* 中除了一台机器之外的所有IP访问
hosts allow = 150.203. EXCEPT 150.203.6.66
Example 2: 允许满足给定的子网号/子网掩码的IP访问
hosts allow = 150.203.15.0/255.255.255.0
Example 3: 允许一系列主机访问
hosts allow = lapland, arvidsjaur
Example 4: 允许NIS网络组"foonet"访问,但是禁止其中的一台主机
hosts allow = @foonet
hosts deny = pirate
注意,访问时还是需要有适当的用户级口令.
参见testparm(1) 来检测主机是否可以按照你希望的方式被访问.
缺省设置: none (也就是说,所有机器都可以访问)
示例: allow hosts = 150.203.5. myhost.mynet.edu.au
缺省设置: none (没有禁止访问的主机)
示例: hosts deny = 150.203.4. badhost.mynet.edu.au
不要把这个选项和hosts allow 搞混了,那是关于控制主机对服务的访问的,用于管理对来访者的服务.而 hosts equiv是用于支持那些不对samba提供口令的NT客户的.
注意:使用hosts equiv 可能会成为一个很大的安全漏洞.这是因为你相信发起访问的PC提供了正确的用户名.找一台PC来提供一个假的用户名是很容易的.我建议你只有在完全明白你在干什么的情况下才使用hosts equiv选项,或者在你自己的家里(那里有你可以完全信任的配偶和孩子)使用它.仅仅是在你完全可以信任他们的时候才用 :-)
缺省设置: no host equivalences
示例: hosts equiv = /etc/hosts.equiv
缺省设置: idmap backend = <空字符串>
示例: idmap backend = ldap:ldap://ldapslave.example.com
The availability of an idmap gid range is essential for correct operation of all group mapping.
缺省设置: idmap gid = <空字符串>
示例: idmap gid = 10000-20000
缺省设置: idmap uid = <空字符串>
示例: idmap uid = 10000-20000
它支持标准替换,除%u , %P 和 %S以外.
缺省设置: 没有包含其他文件
示例: include = /usr/local/samba/lib/admin_smb.conf
缺省设置: inherit acls = no
New directories inherit the mode of the parent directory, including bits such as setgid.
New files inherit their read/write bits from the parent directory. Their execute bits continue to be determined by map archive , map hidden and map system as usual.
Note that the setuid bit is never set via inheritance (the code explicitly prohibits this).
This can be particularly useful on large systems with many users, perhaps several thousand, to allow a single [homes] share to be used flexibly by each user.
参见 create mask , directory mask, force create mode and force directory mode .
缺省设置: inherit permissions = no
这个选项的内容是一个接口字符串的列表, 每个字符串可以是下列任何一种格式:
一个网络接口名(例如eth0).它可以包含象在shell风格的通配符如eth*来匹配任何以子字符品"eth"起始的网络接口.
一个IP地址.这种情况下,网络掩码是从内核中获得的接口列表中检测的.
一个IP/掩码对.
一个广播地址/掩码对.
"mask"选项可以是一个位长度(例如C类网络可以是24)或者是以点分格式出现的完整网络地址掩码.
"IP"选项可以是完整点分十六进制IP地址或是按操作系统通常使用的主机名解析机制查找的主机名.
例如,下面这一行:
interfaces = eth0 192.168.2.10/24 192.168.3.10/255.255.255.0
将配置三个网络接口,对应eth0设备以及IP地址192.168.2.10 和192.168.3.10。后两个接口的网络掩码将设置为255.255.255.0。
参见bind interfaces only.
缺省设置: 除了127.0.0.1 之外的所有活动接口 that are broadcast capable
以@开头的用户名首先被当作NIS网络组名(如果你的系统支持NIS的话),如果在NIS的网络组数据库中找不到这个组,那么这个名字就被当作一个UNIX用户组名来处理.
以+开头的用户名仅表示UNIX用户组名,以&开头的用户名仅表示NIX网络组名(这个设置要求你的系统中有NIS在运行).‘+‘和‘&‘符号可以以任何顺序出现在用户组名前,因此,你可以指定对这个名称的查找次序,比如+&group表示先在UNIX用户组中查找,再在NIS网络组中查找,而&+group则相反,先在NIX网络组中查找,再到UNIX用户组中查找.(这与使用@前缀的效果相同).
当前的服务名可以用%S来表示,这在[homes]段中是很有用的.
参见 valid users .
缺省设置: 没有非法用户
示例: invalid users = root fred admin @wheel
通常,如果用于连接的socket使用了SO_KEEPALIVE属性设置(参见socket options),那么发送保持连接的包是不需要的.基本上,除非你遇到了某些困难,这个选项是用不到的.
缺省设置: keepalive = 300
示例: keepalive = 600
This parameter is only usd when your kernel supports change notification to user programs, using the F_NOTIFY fcntl.
缺省设置: Yes
内核机会性锁定操作使得本地UNIX进程或NFS对文件进行操作时可以锁定(冻结)smbd(8)对同一个文件的oplocks 操作.这可以保持SMB/CIFS,NFS和本地文件操作之间的数据一致性.(这是一个很cool的特性哦 :-)
如果你的系统支持这个设置,缺省设置就是on(打开),如果系统不支持,缺省设置就是Off(关闭).你根本不必去管这个选项.
参见 oplocks 和 level2 oplocks 参数.
缺省设置: kernel oplocks = yes
The LANMAN encrypted response is easily broken, due to it‘s case-insensitive nature, and the choice of algorithm. Servers without Windows 95/98 or MS DOS clients are advised to disable this option.
Unlike the encypt passwords option, this parameter cannot alter client behaviour, and the LANMAN response will still be sent over the network. See the client lanman auth to disable this for Samba‘s clients (such as smbclient)
If this option, and ntlm auth are both disabled, then only NTLMv2 logins will be permited. Not all clients support NTLMv2, and most will require special configuration to us it.
Default : lanman auth = yes
缺省设置: large readwrite = yes
缺省设置: ldap delete dn = no
缺省设置: ldap filter = (&(uid=%u)(objectclass=sambaAccount))
缺省设置: none
示例: dc=samba,ou=Groups
缺省设置: none
示例: ou=Idmap,dc=samba,dc=org
缺省设置: none
The ldap passwd sync can be set to one of three values:
Yes = Try to update the LDAP, NT and LM passwords and update the pwdLastSet time.
No = Update NT and LM passwords and update the pwdLastSet time.
Only = Only update the LDAP password and let the LDAP server do the rest.
缺省设置: ldap passwd sync = no
这个选项控制用于和LDAP服务器通讯的tcp端口号。默认应用标准的LDAP端口636。
参见: ldap ssl
Default : ldap port = 636 ; 如果 ldap ssl = on
Default : ldap port = 389 ; 如果 ldap ssl = off
这个选项应当包含ldap目录服务器的FQDN,用来查询和定位用户帐户信息。
Default : ldap server = localhost
The ldap ssl can be set to one of three values:
Off = Never use SSL when querying the directory.
Start_tls = Use the LDAPv3 StartTLS extended operation (RFC2830) for communicating with the directory server.
On = Use SSL on the ldaps port when contacting the ldap server. Only available when the backwards-compatiblity --with-ldapsam option is specified to configure. See passdb backend
Default : ldap ssl = start_tls
缺省设置: none
缺省设置: none
2级,或者只读oplocks允许Windows NT客户在文件中可以保持一个oplocks,一旦第二个用户请求同一文件时可以从读写oplocks级降为只读oplocks(而不是像传统的做法,保持唯一的oplocks,在第二次打开时释放所有的oplocks).这样就可以允许支持2级oplocks的文件打开者缓存用于只读的文件(也就是说,他们的写和锁定请求不可能被缓冲),并且使只读文件的大量访问提升性能(例如.exe文件).
一旦在拥有只读oplocks的客户中有一位对文件进行了写操作,所有的客户都会被通知(不需要回复及等待), told to break their oplocks to "none",然后删除所有read-ahead caches.
推荐打开这个选项,为共享的可执行程序提高访问速度。
更多关于2级oplocks的讨论请查看CIFS的规约.
当前,如果使用了kernel oplocks的话,就不会认可2级oplocks(即使把那个选项设为yes也没用).还要注意,oplocks 选项必须在共享上被设成yes才有效果.
参见 oplocks 和 kernel oplocks 选项。
缺省设置: level2 oplocks = yes
参见 lm interval.
缺省设置: lm announce = auto
示例: lm announce = yes
参见lm announce.
缺省设置: lm interval = 60
示例: lm interval = 120
缺省设置: load printers = yes
设置这个值为 no 将使 nmbd 永远不会 成为主控浏览器。
缺省设置: local master = yes
缺省设置: lock directory = ${prefix}/var/locks
示例: lock directory = /var/run/samba/locks
如果 locking = no ,所有的锁定请求和解除锁定请求将表现为成功执行.对锁定的查询将会显示没有锁定.
如果locking = yes 服务器将执行真正的锁定。
这个选项可能对只读文件系统有用,因为它可能不需要锁定(例如:CDROM).即使在这种情况下,我们也不真正推荐使用no.
要特别小心,不管是全局的关闭这个选项或者在某个服务上关闭这个选项,都有可能由于缺少锁定而导致数据损坏.其实,你根本就不需要设置这个选项.
缺省设置: locking = yes
缺省设置: lock spin count = 3
缺省设置: lock spin time = 10
这个选项支持标准的文件名代换变量,允许方便的为每个用户或者机器设置专用的日志文件.
示例: log file = /usr/local/samba/var/log.%m
缺省的调试水平将在命令行里定义,如果没有定义,调试水平为零.
示例: log level = 3 passdb:5 auth:10 winbind:2
注意:这个选项只有在Samba是登录服务器时才有用.
缺省设置: logon drive = z:
示例: logon drive = h:
C:\> NET USE H: /HOME
这样的命令。
这个选项支持标准的命令选项替换,方便为每个用户或者机器提供登录脚本.
This parameter can be used with Win9X workstations to ensure that roaming profiles are stored in a subdirectory of the user‘s home directory. This is done in the following way:
logon home = \%NU
rofile
This tells Samba to return the above string, with substitutions made when a client requests the info, generally in a NetUserGetInfo request. Win9X clients truncate the info to \\server\share when a user does net use /home but use the whole string when dealing with profiles.
Note that in prior versions of Samba, the logon path was returned rather than logon home. This broke net use /home but allowed profiles outside the home directory. The current implementation is correct, and can be used for profiles if you use the above trick.
注意,这个选项只在Samba被设置成为登录服务器logon server时才起作用.
缺省设置: logon home = "\%NU"
示例: logon home = "\remote_smb_serverU"
这个选项支持标准替换,允许你为每一个用户或机器设置不同的登录脚本.它也可以指定那些显示在Windows NT客户端上的"应用程序数据"(桌面,开始菜单,网上邻居和程序等文件夹和他们的内容).
指定的共享资源和路径必须是用户可读的,这样,设定的选项和目录才能被Windows NT客户端装载使用.这个共享资源在用户第一次登录时必须是可写的,这样Windows NT客户端才能建立NTuser.dat文件及其他目录.
然后,这些目录以及其中的任何内容都可以根据需要设置为只读的.把NTuser.dat文件设置成只读是不明智的,你应该把它改名成NTuser.man(一个强制使用(MANdatory)的user.dat)来达到同样的目的.
Windows终端有时候即使没有用户登录也会保持对[homes]共享资源的连接.因此,logon path不能包含对homes共享资源的任何参照(也就是说,把这个选项设置成类似\\%N\HOMES\profile_path会引起问题).
这个选项支持标准替换,允许你为不同的机器或用户设置不同的登录脚本.
注意,这个选项只有在Samba被设置成为登录服务器logon server的时候才起作用.
缺省设置: logon path = \\%N\%U\profile
示例: logon path = \\PROFILESERVER\PROFILE\%U
脚本文件的存放位置必须是相对于[netlogon]服务中指明的目录路径,举例来说,如果[netlogon]服务指定了了一个path是/usr/local/samba/netlogon,而logon script = STARTUP.BAT, 那么将要下载到客户端执行的文件的实际存放位置是:
/usr/local/samba/netlogon/STARTUP.BAT
登录脚本的内容包含什么,完全由你决定.我们建议包含这个指令:NET TIME \SERVER /SET /YES,它强迫每一台机器的时间和服务器的时间同步(以服务器的时间为准);另一个建议是映射公共工具盘:NET USE U:\\SERVER\"公共工具目录" 例如:
NET USE Q:\SERVERISO9001_QA
注意:在一个有安全要求的系统环境中,特别重要的是要记住不要允许客户在[netlogon]上有写的权限,也不要给以客户改写登录脚本文件的权利.如果允许客户随意的修改,安全规则就给撕裂了一个口子.
这个选项支持标准的置换规则,允许你为每个不同的用户或机器定制不同的登录脚本.
注意,这个选项只有在Samba设置为登录服务器时才起作用.
缺省设置: no logon script defined
示例: logon script = scriptsU.bat
这个指令应该是一个可以根据打印机名和作业号中断打印作业的程序或脚本.实现这个操作的一个办法是使用作业优先级,优先级别太低的作业不会被发送到打印机上.
用%p置换可以取得打印机名,而%j会被打印作业号(一个整数)置换.在HPUX系统中(参见printing=hpux ),如果给lpq命令加上-p%p选项,打印作业会显示其执行状态,具体的说,如果作业的优先级低于阻塞级别,它会显示‘PAUSED‘状态,反之,如果作业的优先级等于或高于阻塞级别,它会显示‘SPOOLED‘或‘PRINTING‘状态.
注意,在这个设置中使用绝对路径是一个好习惯,因为这个路径有可能不在服务器的PATH环境变量中.
参见 printing parameter选项.
缺省设置: 目前这个选项没有缺省设置,除非printing选项设置SYSV,在这种情况下,缺省参数是:
lp -i %p-%j -H hold
或者在printing选项设置为softq时,缺省选项是:
qstat -s -j%j -h
在HPUX系统中的例子: lppause command = /usr/bin/lpalt %p-%j -p0
缓冲文件被存放在/tmp/lpq.xxxx文件中,其中的xxxx是正在使用的lpq命令哈希表.
这个选项的缺省值是10秒,这就是说以前相同的lpq命令的缓冲内容将在周期为10秒内被使用.如果lpq命令非常慢的话,可以取稍大的值.
把这个值设为0就完全禁止了缓冲技术的使用.
参见 printing 选项.
缺省设置: lpq cache time = 10
示例: lpq cache time = 30
这个命令应该是一个只以打印机名作为选项并可以输出打印机状态信息的程序或脚本.
通常支持九种打印机状态信息:CUPS, BSD,AIX,LPRNG,PLP,SYSV,HPUX,QNX和SOFTQ.而这些正好覆盖了大多数的UNIX系统.你可以用printing =选项来控制到底要用哪种类型.
有些客户端(特别是Windows for Workgroups)可能不能正确地向打印机发送联接号以获得状态信息.对此,服务器会向客户报告它所联接的首个打印服务.这样的情况只当联接号发送非法时才会发生.
如果使用%p变量的话,系统会在此处放置打印机名.否则在命令后放置打印机名.
注意,当服务器不能获得PATH变量的话,以绝对路径来描述lpq command是个好习惯. 当与CUPS库编译连接时,不需要lpq command,因为smbd将使用库调用来获得打印队列列表。
参见 printing 选项.
缺省设置: 依赖于 printing 的设置情况
示例: lpq command = /usr/bin/lpq -P%p
此命令应该是一个以打印机名和要恢复的打印任务号作为选项的程序或脚本.参见lppause command 参数。
如果使用%p变量的话,系统会在此处放置打印机名.用%j来代替打印任务号,当然是用整数形式罗.
注意,当服务器不能获得PATH变量的话,以绝对路径来描述lpresume command是个好习惯
参见 printing 选项.
缺省设置: 当前没有缺省设置,除非 printing 选项是 SYSV, 此时默认是
lp -i %p-%j -H resume
或者如果printing 选项是 SOFTQ, 那么默认是:
qstat -s -j%j -r
HPUX的示例: lpresume command = /usr/bin/lpalt %p-%j -p2
此命令应该是一个使用打印机名和打印任务号的程序或脚本,并且执行它们可以删掉打印任务.
如果使用%p变量的话,系统会在此处放置打印机名.用%j来代替打印任务号,当然是也用整数形式罗.
注意,当不能从服务器获得PATH变量的话,以绝对路径来描述lprm command是个好习惯.
参见printing 选项.
缺省设置: 依赖于 printing 选项设置
示例 1: lprm command = /usr/bin/lprm -P%p %j
示例 2: lprm command = /usr/bin/cancel %p-%j
参见 smbpasswd(8), 和 security = domain 选项.
缺省设置: machine password timeout = 604800
警告:如果两个客户在同样的目录下用相同的magic script,输出文件内容是无法确定的.
缺省设置: magic output = <magic script name>.out
示例: magic output = myfile.txt
以这种方式运行的脚本将会在完成以后被删除,只要权限允许的话.
如果脚本产生了输出的话,这些信息就被送到magic output选项指定的文件中(见以上描述).
注意,一些命令解释器不能解释包含CR/LF而不是CR回车换行符的脚本.magic脚本必须是可以被运行的(就象在本地主机运行一样),而有些脚本在某些主机上或某些shell下可能会在dos客户端进行过滤处理.
magic脚本仍处于实验阶段,所以不能对此完全依赖.
缺省设置: 无。禁止使用magic script.
示例: magic script = user.csh
缺省设置: mangle case = no
所以如果要将 html 映射为 htm 你应当这样:
mangled map = (*.html *.htm)
有一个非常有用的经验是删掉在CDROM光盘上一些文件名后面讨人厌的;1(只有在一些UNIX可以看到它们).为此可以这样映射:(*;1 *;).
缺省设置: 没有 mangled map
示例: mangled map = (*;1 *;)
NAME MANGLING部分有更多关于如何控制这类处理的详细信息.
如果使用了这种映射,那么其算法就象下面这样:
把文件名最后一个点符号前面首五个字母数字字符强制转换成大写,作为要映射名字的首五个字符.
在要映射名字的起始部分加上"~"符号,后面跟两个字符的特殊序列字串,而这个序列字串是由原始的文件名而来(也就是:原文件名去掉最后的文件扩展名).只有当文件的扩展名含有大写字母或长于三个字符时,文件的最后扩展名才被包含在散列计算中.
注意,如果你不喜欢‘~‘的话,可以用mangling char选项来指定你想要的字符.
最后,扩展名部分的前三个字符会被保留,强制转换到大写并作为映射后名字的扩展名.最后的扩展名就是原始文件名中最后一个‘.‘右面的那部分.如果文件名中没有‘.‘,那么映射后的文件名也没有扩展名部分(除非用了"hidden files" - 参见后面的介绍).
unix的文件名如果以点开始,那么好比DOS中的隐藏文件.这些文件映射后的文件名就会拿掉点符号并用"___"来作为它的扩展名,而不管原来的扩展名是什么("___"是三个下划线).
大写字母数字字符组成了两位散列值.
如果目录中的文件与要映射的文件名使用了相同的前五位字符,这样的算法会导致名称冲突,不过发生冲突的可能性是1/1300.
名称映射允许当需要保留unix长文件名时在unix目录与Windows/DOS之间拷贝文件.从Windows/DOS中拷过来的unix文件可以更换新的扩展名并保留同样的主文件名.名称映射并不会在转换时更改什么东西.
缺省设置: mangled names = yes
栈里保存了最近映射的基本文件名(扩展名只有在超过3个字符或者包含大写字符时才会保留).
栈值设得稍大一些,对于映射unix的长文件名操作会更顺利一些.但是,它会使目录访问变得更慢;小一些的栈可以保存在服务器的内存中(每个栈元素占256个字节).
并不保证在转换长文件名时绝对正确无误,准备好面对可能出现的惊奇.
缺省设置: mangled stack = 50
示例: mangled stack = 100
mangle prefix is effective only when mangling method is hash2.
缺省设置: mangle prefix = 1
示例: mangle prefix = 4
缺省设置: mangling char = ~
示例: mangling char = ^
缺省设置: mangling method = hash2
示例: mangling method = hash
缺省设置: map acl inherit = no
注意这个选项需要在create mask忻挥信懦募糁鞯闹葱腥ㄏ尬?也就是说它必须包含100).参见create mask选项中的描述.
缺省设置: map archive = yes
注意这个选项需要在create mask中没有排除所有用户的执行权限位(也就是说它必须包含001).参见create mask选项中的描述.
缺省设置: map hidden = no
注意这个选项需要在create mask中没有排除组用户的执行权限位(也就是说它必须包含010).参见create mask选项中的描述.
缺省设置: map system = no
这时,选项会有三种不同的值,分别通知smbd(8)在用户以非法身份登录时作何相应处理.
这三种设定是:
Never - 意思是用户登录时用了个非法口令并且被服务器所拒.这是个缺省值.
Bad User - 意思是用户登录时用了非法口令并且被服务器所拒,除非用户名不存在,否则也可以以来宾身份登录并映射到对应的guest account账号.
Bad Password - 意思是用户登录时即使用了非法口令,但是还会以来宾身份登录并映射到对应的guest账号.可能出现这样的问题,就是用户虽然输错了口令,却非常平静地以“来宾”身份登录到系统上。他们不明白为什么他们不能访问那些他们认为可以访问的资源,因为在登录时没有任何信息提示他们输错了口令。所以应该小心使用它,以避免不必要的麻烦. Helpdesk services will hate you if you set the map to guest parameter this way :-).
注意当使用共享级以外的其它安全模式时,要设定这个选项,以使"Guest"共享资源服务发挥作用.因为在这些安全级模式中,用户请求的共享资源名在服务器成功验证用户登录前不会发送到服务器作处理,所以服务器就在不能处理联接验证结果时为联接提供"Guest"共享.
对于那些以前的版本,这个选项会映射到编译时所用的local.h文件里定义的GUEST_SESSSETUP变量的值.
缺省设置: map to guest = Never
示例: map to guest = Bad User
为了实现这样的功能,系统会使用记录锁定文件.锁定文件存放在lock directory选项指定的目录中.
缺省设置: max connections = 0
示例: max connections = 10
注意这个选项并不是限制管理员往磁盘上存放数据的容量.在上面所说的情况中,管理员仍然可以存放超过100M的数据到磁盘上,但如果客户查询剩余磁盘空间或磁盘总空间的话,所得到的结果就只在这个 max disk size指定的容量范围之内.
使用这个选项主要是为了对一些疯狂使用磁盘空间的软件进行一定的限制,特别是它们可能会使用超过1G上以的磁盘空间.
把这个选项设为0说明没有限制.
缺省设置: max disk size = 0
示例: max disk size = 1000
把这个选项设为0说明没有限制.
缺省设置: max log size = 5000
示例: max log size = 1000
缺省设置: max mux = 50
打开文件极限通常用UNIX每进程最大文件描述符数来限制更好,所以你不需要去碰这个选项的.
缺省设置: max open files = 10000
缺省设置: max print jobs = 1000
示例: max print jobs = 5000
可能的值是:
CORE: 早期版本,不接受用户名.
COREPLUS: 在CORE的基础上改进了一些性能.
LANMAN1: 第一个比较流行的协议,支持长文件名.
LANMAN2: 对LANMAN1进行了更新.
NT1: 目前用于Windows NT,一般称为CIFS.
通常,此选项不必设定,因为在SMB协议中会自动协商并选择合适的协议.
参见 min protocol
缺省设置: max protocol = NT1
示例: max protocol = LANMAN1
缺省设置: max reported print jobs = 0
示例: max reported print jobs = 1000
缺省设置: max smbd processes = 0 ## no limit
示例: max smbd processes = 1000
缺省设置: max ttl = 259200
参见 min wins ttl 选项.
缺省设置: max wins ttl = 518400
缺省设置: max xmit = 65535
示例: max xmit = 8192
通常这个命令所做之事都取决于你的想象.
例如:
message command = csh -c ‘xedit %s;rm %s‘ &
这个命令用xedit发出一条信息,然后再删除它.注意很重要的一点是这个命令应该立即返回.这就是为什么在行末用‘&‘的原因.如果它没有立即返回的话,计算机可能会在发送信息时当掉的(不过一般都会在30秒后恢复).
所有信息都被以全局访客用户身份发送.命令可以使用标准的替换符,不过%u将不会有效(在这里用%U可能更好).
除了标准替换的部分,还可以应用一些附加的替换,比如:
%s =包含消息的文件名
%t = 发送信息的目标(很可能是服务器名).
%f = 信息的来源.
你可以用这个命令来发送邮件或者你想要的内容.如果你有关于发送内容的好主意请通知开发人员.
有个例子可以以邮件形式发送信息给root:
message command = /bin/mail -s ‘message from %f on %m‘ root < %s; rm %s
如果没有指定发送信息所用的命令,那么这个信息并不会被发出,同时Samba向发送者报告出错.不幸的是WfWg(Windows for Workgrups)完全忽略出错代码,提示信息已被发出.
如果你想要悄悄地删掉它的话请用:
message command = rm %s
缺省设置: 没有 message command
示例: message command = csh -c ‘xedit %s; rm %s‘ &
参见 unix password sync, passwd program和 passwd chat debug 选项.
缺省设置: min password length = 5
参见 printing 选项。
缺省设置: min print space = 0
示例: min print space = 2000
If you are viewing this parameter as a security measure, you should also refer to the lanman auth 选项。 Otherwise, you should never need to change this 选项。
Default : min protocol = CORE
Example : min protocol = NT1 # disable DOS clients
缺省设置: min wins ttl = 21600
Only Dfs roots can act as proxy shares. Take a look at the msdfs root and host msdfs options to find out how to set up a Dfs root share.
示例: msdfs proxy = \\otherserver\someshare
参见 host msdfs
缺省设置: msdfs root = no
缺省设置: name cache timeout = 660
示例: name cache timeout = 0
这些名字解析选项是:"lmhosts","host","wins"和"bcast".它们决定了名字解析是以如下方式的:
lmhosts : 在samba的lmhosts文件中查找IP地址.如果lmhosts文件的内容行中没有名字类型附加在NetBIOS名上时(参见lmhosts (5)中的详细描述),任何类型的名字都可以匹配这个查询.
host : 执行标准的主机名到IP地址的解析操作,此操作会使用系统的/etc/hosts,NIS或者是DNS来查询.具体方法取决于操作系统,在IRIX和Solaris中解析名字的方法可能是由/etc/nsswitch.conf文件来控制的.注意此方法只适用于对被查询的NetBIOS名字类型为0x20(服务器)或者是0x1c(域控制器)时才有用,其它类型都会被忽略.后一种情况只在活动目录域中有用,返回一个匹配_ldap._tcp.domain 的SRV RR条目的DNS 查询。
wins : 向列在wins server选项中的服务器查询一个名字对应的IP地址.如果没有指定WINS服务器,那么此方法就被略过了.
bcast : 向在interfaces选项中列出的每一个已知本地网络接口进行广播来作查询.这是最不可信的名字解析方法,除非目标主机就在本地子网中.
缺省设置: name resolve order = lmhosts host wins bcast
示例: name resolve order = lmhosts bcast host
在上例中首先检查本地lmhosts文件,然后尝试广播,接下来就是用通常的系统主机名查询方式了.
When Samba is functioning in ADS security mode (security = ads) it is advised to use following settings for name resolve order:
name resolve order = wins bcast
DC lookups will still be done via DNS, but fallbacks to netbios names will not inundate your DNS servers with needless querys for DOMAIN<0x1c> lookups.
参见 netbios name 选项。
缺省设置: 空字符串 (没有附加的名字)
示例: netbios aliases = TEST TEST1 TEST2
参见 netbios aliases 选项
缺省设置: machine DNS name
示例: netbios name = MYNAME
如果samba登录服务器不是作为真正主目录服务器而是通过NFS来实现,却通知用户以SMB服务器来使用主目录时,用户装载主目录来进行访问需要两个网络跳步(一个以SMB方式,另一个以NFS方式装载).这样的使用方式是非常慢的.
此选项允许当Samba在主目录服务器方式运行时让samba反馈目录服务器而非登录服务器上的主共享资源,这样samba用户可以直接从目录服务器上装载目录.当samba把目录共享资源反馈给用户,这时它会参考homedir map选项指定的NIS映射表然后再反馈表中列出的服务.
注意要使此项起作用必须有一个运作中的NIS系统,并且samba服务器必须是一个登录服务器。
缺省设置: nis homedir = no
缺省设置: nt acl support = yes
If this option, and lanman auth are both disabled, then only NTLMv2 logins will be permited. Not all clients support NTLMv2, and most will require special configuration to us it.
Default : ntlm auth = yes
缺省设置: nt pipe support = yes
You should not need to ever disable this 选项。
缺省设置: nt status support = yes
参见smbpasswd(5).
缺省设置: null passwords = no
缺省设置: obey pam restrictions = no
要注意的是上面的说法也表明了samba并不会从服务名而推演出相应的用户名.这样的话对于[homes]段就比较麻烦了.要避免麻烦的话需要用user = %S,这句就表明你的用户列表user正好就是这个服务资源名,这时的主目录名就是用户名.
参见 user 选项。
缺省设置: only user = no
除非你理解了samba的oplock代码,否则不要改变这个选项!
缺省设置: oplock break wait time = 0
简单地说,这个选项指定了一个数字,如果争夺相同文件的用户数量超过了此设定极限的话,即使有请求,smbd(8)也不再认可oplock的操作了.这样的话smbd就象Windows NT一样的运行.
除非你理解了samba的oplock代码,否则不要改变这个选项!
缺省设置: oplock contention limit = 2
oplocks会有选择性地关闭每一个基本共享资源上的特定文件.参见 veto oplock files 选项.在有些系统上会通过最底层的操作系统确认oplocks.这样就可以在所有的访问与oplocked文件中进行数据同步,而不管此访问是通过samba或NFS或者是本地的UNIX进程.参见kernel oplocks选项查看细节.
参见 kernel oplocks 以及 level2 oplocks parameters.
缺省设置: oplocks = yes
<nt driver name> = <os2 driver name>.<device name>
For example, a valid entry using the HP LaserJet 5 printer driver would appear as HP LaserJet 5L = LASERJET.HP LaserJet 5L.
The need for the file is due to the printer driver namespace problem described in ???. For more details on OS/2 clients, please refer to ???.
缺省设置: os2 driver map = <空字符串>
注意: 默认情况下,Samba将在本地主控浏览器选举中超越所有M$操作系统并且获胜,除非还有Windows NT4.0/2000 域控制器。这意味着Samba主机的错误配置将使一个子网的浏览无效。参见Samba docs/ 目录中的BROWSING.txt 来获取详细信息。
缺省设置: os level = 20
示例: os level = 65
缺省设置: pam password change = no
缺省设置: panic action = <空字符串>
示例: panic action = "/bin/sleep 90000"
Disabling this option prevents Samba from making this check, which involves deliberatly attempting a bad logon to the remote server.
缺省设置: paranoid server security = yes
This parameter is in two parts, the backend‘s name, and a ‘location‘ string that has meaning only to that particular backed. These are separated by a : character.
Available backends can include: .TP 3 * smbpasswd - The default smbpasswd backend. Takes a path to the smbpasswd file as an optional argument. .TP * tdbsam - The TDB based password storage backend. Takes a path to the TDB as an optional argument (defaults to passdb.tdb in the private dir directory. .TP * ldapsam - The LDAP based passdb backend. Takes an LDAP URL as an optional argument (defaults to ldap://localhost) LDAP connections should be secured where possible. This may be done using either Start-TLS (see ldap ssl) or by specifying ldaps:// in the URL argument. .TP * nisplussam - The NIS+ based passdb backend. Takes name NIS domain as an optional argument. Only works with sun NIS+ servers. .TP * mysql - The MySQL based passdb backend. Takes an identifier as argument. Read the Samba HOWTO Collection for configuration details. .LP
缺省设置: passdb backend = smbpasswd
示例: passdb backend = tdbsam:/etc/samba/private/passdb.tdb smbpasswd:/etc/samba/smbpasswd
示例: passdb backend = ldapsam:ldaps://ldap.example.com
示例: passdb backend = mysql:my_plugin_args tdbsam
这个chat序列一般发生在特定的主机上,取决于本地口令控制的方法(就象NIS或者别的).
注意这个选项仅仅在unix password sync选项设置为yes的时候有用。当smbpasswd文件中的SMB口令被更改时是以root身份运行的,不必输入旧密码文本. 这意味着root必须可以在不知道用户密码时重置他的密码。在NIS/YP 中这意味着passwd程序必须在NIS主控服务器上运行。
这个字符串可以包含%n宏,用于替换新密码。chat序列还可以包含标准宏\\n, \\r, \\t 和\\s 来给出换行,回车,tab和空格。chat序列字符串还可以包含‘*‘ 来匹配任何字符序列。双引号用来将带空格的字符串设为一个单独的字符串。
如果在对话序列的任何部分发送的字符串为一个句号".",那么不会发送任何内容.同样,如果等待接收部分有字符串是一个".",那么不等待任何的内容.
如果pam password change参数设置为yes,chat可以以任何顺序进行,没有特定的输出,是否成功可以由PAM结果得到。在PAM会话中宏\n被忽略。
参见 unix password sync, passwd program , passwd chat debug 和 pam password change.
缺省设置: passwd chat = *new*password* %n\n *new*password* %n\n *changed*
示例: passwd chat = "*Enter OLD password*" %o\n "*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password changed*"
参见 passwd chat , pam password change , passwd program .
缺省设置: passwd chat debug = no
需要注意的是很多口令程序强调口令要合法,例如应该有最小长度或者是字母与数字的混合.这可能在一些客户端(如WfWg)总将口令转为大写发送时,引起一些问题.
注意如果把unix password sync选项设为yes的话,在改变smbpasswd文件中的SMB口令时是以root身份调用改口令程序的.如果口令更改失败的话,smbd对SMB口令的更改也会失败,这是设计时的机制.
如果设定了unix password sync选项的话,指定口令程序时必须使用所有程序的绝对路径,必须检查安全问题.缺省的unix password sync选项值是 no.
参见 unix password sync.
缺省设置: passwd program = /bin/passwd
示例: passwd program = /sbin/npasswd %u
此选项定义了口令字中大写字母的最大数量.
例如,假定给出的口令是"FRED".如果 password level设为1的话,在"FRED"验证失败时会尝试以下的口令组合:
"Fred", "fred", "fRed", "frEd","freD"
如果password level设为2的话,就会尝试下面的组合:
"FRed", "FrEd", "FreD", "fREd", "fReD", "frED", ..
等等。
把此选项设成的值越高,相对单一大小写口令来说大小写混合的口令越容易匹配。.不过,要小心使用这个选项会降低安全性,同时增加处理新联接所花的时间量.
如果把选项设为0时会使处理口令时只作两种尝试 - 先与给出的口令比较,再比较它的全部小写形式.
缺省设置: password level = 0
示例: password level = 4
此选项设定上面所说的其它口令服务器的名字或者IP地址. 新的语法允许在连接到ADS realm服务器时指定端口号。要指定默认的LDAP 389端口之外的号码,可以将端口号放在名字或ip后面,中间用一个冒号连接(比如说,192.168.1.100:389)。如果你不指定一个端口,Samba将使用标准的LDAP端口tcp/389. 注意端口号在WindowsNT4.0 域或者netbios连接的服务器上无效
如果参数是一个名称,它将使用 name resolve order 中指定的方式来解析。
口令服务器应该是使用"LM1.2X002"或"LM NT 0.12"协议的主机,而且它本身必须使用用户级安全模式.
注意:使用口令服务器表明你的UNIX主机(就是运行Samba的那台)就只与你指定的口令服务器具有相同的安全等级了.在没有完全信任的情况下不要选择使用其它的口令服务器.
不要把口令服务指向Samba服务器本身,这产生一个循环而去查找你的Samba服务器,导致死锁.
在指定口令服务器名时可以使用标准的替换符,而实际能用的可能只是%m这一个,这个替换符说明Samba服务器会用联入的客户作为口令服务器.如果这样用的话说明你非常信任你的客户,同时最好以主机允许策略对他们进行限制!
如果把安全级security选项设为domain或者ads的话,指定的其它口令服务器必须是在这个Domain中的一个主域控制器或备份域控制器或者‘*‘.另外指定字符‘*‘的话就以samba服务器会在整个域中使用加密验证RPC调用来验证用户登录.使用 security = domain的好处是,如果指定了几个password server时,smbd 会对每一个进行尝试直到它收到回应,对于初始服务器当机时这就很有用了.
如果password server选项设为字符‘*‘的话,samba将尝试通过查询WORKGROUP<1C>名字来自动查找主或者备份域控制器并联系经过名字解析得到的IP地址列表中的每个服务器来进行用户验证.
如果服务器列表包含名字或IP同时也包含‘*‘时,列表将视为首选域控制器的列表,但是也会添加一个自动的对所有其余DC的查找。Samba不会通过定位最近的DC来优化这张列表。
如果security是server的话,会有一些安全级为security = domain时所没有的限制:
如果在password server选项中指定了几个口令服务器的话,smbd在联接具体的服务器时会失败,也不能验证任何的用户账号.这是安全级为security = server 模式时SMB/CIFS协议的一个限制,并且Samba无法修改.
如果把Windows NT服务器作为口令服务器,你必须确保用户可以从Samba服务器上进行登录.当使用 security = server模式时,网络登录看起来是从那里处理的,而不是从用户工作站.
参见 security 选项。
缺省设置: password server = <空字符串>
示例: password server = NT-PDC, NT-BDC1, NT-BDC2, *
示例: password server = windc.mydomain.com:389 192.168.1.101 *
示例: password server = *
对于那些要对访客提供的可打印服务来说,服务项应该设为只读,而且路径应该设为全局可写属性并具有粘性(s)位.这当然不是强制性的,不过不这样做的话可能会无法得到你所希望的结果.
路径出现%u的地方将以正处于联接状态的UNIX用户名来替换;同样出现%m的地方将以请求联接的主机NetBIOS名替换.在设定伪主目录时,这种替换项很有用的.
所指定的路径都是基于根目录root dir(如果有的话)的.
缺省设置: 无
示例: path = /home/fred
缺省设置: pid directory = ${prefix}/var/locks
示例: pid directory = /var/run/
缺省设置: posix locking = yes
一个有趣的示例,用于卸载服务器资源:
postexec = /etc/umount /cdrom
参见 preexec.
缺省设置: 无 (不执行命令)
示例: postexec = echo
一个有趣的示例,在用户每一次登录时向对方发送一个欢迎信息:(一条格言?)
preexec = csh -c ‘echo
当然,一段时间以后这类信息可能就比较讨厌了:-)
参见 preexec close 和 postexec .
缺省设置: 无 (不执行命令)
示例: preexec = echo
缺省设置: preexec close = no
如果设此选项为yes时,nmbd会在启动时强制进行一次选举,它有一些有利条件来赢得选举.推荐把此选项与 domain master = yes联合使用,这样nmbd可以保证成为一个域浏览器.
小心使用此项,因为如果在相同的子网内有多个主机(不管是Samba服务器,Windows95还是NT)参加选举的话,他们每个都会周期性不断地尝试成为本地主浏览器,这时会造成不必须的广播交通流量并降低浏览性能.
参见 os level.
缺省设置: preferred master = auto
注意,如果你想加载printcap里所有的打印机,那么用load printers会更容易.
缺省设置: no preloaded services
示例: preload = fred lp colorlp
缺省设置: preload modules =
示例: preload modules = /usr/lib/samba/passdb/mysql.so+++
缺省设置: preserve case = yes
参见NAME MANGLING段中的完整讨论.
注意一个可打印的服务总是允许通过缓存打印数据的方法向服务项路径中执行写操作(需要用户有可写权限).read only选项控制只允许不可打印地访问资源.
缺省设置: printable = no
To use the CUPS printing interface set printcap name = cups . This should be supplemented by an addtional setting printing = cups in the [global] section. printcap name = cups will use the "dummy" printcap created by CUPS, as specified in your CUPS configuration file.
在可以用lpstat命令列出可用打印机的列表的System V系统上,可以用printcap name = lpstat 来自动获得可用打印机列表.这对于配置samba时定义成SYSV的系统(这就包括了很多基于System V的系统)来说是缺省情况.如果在这些系统上设好printcap name为lpstat的话,samba就会执行lpstat -v并尝试分析输出信息以获得一份打印机列表.
通常最小的printcap文件看起来就象下面这样:
print1|My Printer 1 print2|My Printer 2 print3|My Printer 3 print4|My Printer 4 print5|My Printer 5
我们看到‘|‘符号用来定义打印机的别名.第二个带有空格的别名其实是提示Samba它是注释.
在AIX中默认的printcap文件名是/etc/qconfig. 如果在文件名中找到qconfig字样,Samba将假定文件是AIX 的qconfig格式。
缺省设置: printcap name = /etc/printcap
示例: printcap name = /etc/myprintcap
打印命令是一个简单的文本字符串。它可以在宏替换之后逐字传递给系统。
%s, %f - 缓冲文件名路径
%p - 适当的打印机名
%J - 客户提交的作业名
%c - 缓冲的作业需要打印的页数
%z -缓冲的打印作业的大小(以字节计)
打印命令至少必须包含%s或%f替换符中的一个,而%p是个可选项.在提交打印作业时,如果不提供打印机名的话,%p替换符会从打印命令中删掉.
如果在[global]段中指定了打印命令,它将被用于任何可打印性的服务项,而不再需要在它们之中单独指定了.
如果既没有对可打印性服务项单独指定打印命令又没有指定一个全局的打印命令时,假脱机文件虽然会建立却不会被处理也不会被删除(这很重要哦).
注意在某些UNIX上以nobody账号身份进行打印会导致失败.如果发生了这样的情况请建立一个单独的有打印权的访客账号并在[global]段里设置guest account选项.
如果你明白命令是直接传递给shell的话,你可以组织非常复杂的打印命令.举例来说,下面的命令会记录一个打印作业,打印这个文件然后删掉它.注意这里的‘;‘是shell脚本命令常用的分隔符.
print command = echo Printing %s >> /tmp/print.log; lpr -P %p %s; rm %s
你可能必须根据平时在系统上打印文件的方式来改变这个命令.缺省情况下,此选项会根据printing选项的设定而变化.
缺省设置: 对于 printing = BSD, AIX, QNX, LPRNG 或者 PLP :
print command = lpr -r -P%p %s
对于 printing = SYSV 或者 HPUX :
print command = lp -c -d%p %s; rm %s
对于 printing = SOFTQ :
print command = lp -d%p -s %s; rm %s
对于 printing = CUPS :
如果Samba 编译时加入了libcups, 那么printcap=cups将使用CUPS API来提交作业等等。否则它用-oraw选项,使用SystemV命令来打印,也就是说它会用lp -c -d%p -o raw; rm %s.当printing = cups, 并且Samba编译时加入了libcups时,任何手工设置的打印命令将被忽略。
示例: print command = /usr/local/samba/bin/myprintscript %p %s
缺省设置: printer admin = <空字符串>
示例: printer admin = admin, @staff
如果在[global]段里指定了打印机名称,那么给出的打印机就用于任何可打印性服务项而不需个别的指定打印机名称了.
缺省设置: 空 (在很多系统中可能是 lp )
示例: printer name = laserwriter
通常系统支持九种打印机风格,它们是BSD, AIX, LPRNG, PLP, SYSV, HPUX, QNX, SOFTQ,还有 CUPS
要在系统上查看使用了不同的选项后其它打印命令的缺省值,可以用testparm(1)程序.
此项可以在每一台打印机上分别设置.
参见[printers]段的讨论。
Default :private dir = ${prefix}/private
When not in domain mode with winbindd then the security info copied onto the local workstation has no meaning to the logged in user (SID) on that workstation so the profile storing fails. Adding this parameter onto a share used for profile storage changes two things about the returned Windows ACL. Firstly it changes the owner and group owner of all reported files and directories to be BUILTIN\\Administrators, BUILTIN\\Users respectively (SIDs S-1-5-32-544, S-1-5-32-545). Secondly it adds an ACE entry of "Full Control" to the SID BUILTIN\\Users to every returned ACL. This will allow any Windows 2000 or XP workstation user to access the profile.
Note that if you have multiple users logging on to a workstation then in order to prevent them from being able to access each others profiles you must remove the "Bypass traverse checking" advanced user right. This will prevent access to other users profile directories as the top level profile directory (named after the user) is created by the workstation profile code and has an ACL restricting entry to the directory tree to the owning user.
缺省设置: profile acls = no
此命令应该是个只用打印机名作为选项的程序或脚本,以便用来停止打印队列,使打印作业不再向打印机发送.
此命令不支持Windows for Workgroups,但可以在Windows 95和NT的打印机窗口中发送.
此处用替换符%p可以替代打印机名称.否则这个名称将被放置在命令后面.
注意,在命令中使用绝对路径是个好习惯,因为不一定可以获得服务器的PATH变量.
缺省设置: 依赖于 printing 选项的设置
示例: queuepause command = disable %p
此命令应该是个只用打印机名作为选项的程序或脚本,以便用来恢复打印队列,使打印作业继续向打印机发送.
此命令不支持Windows for Workgroups,但可以在Windows 95和NT的打印机窗口中发送.
此处用替换符%p可以替代打印机名称.否则这个名称将被放置在命令后面.
注意,在命令中使用绝对路径是个好习惯,因为不一定可以获得服务器的PATH变量.
缺省设置: 依赖于 printing 选项的设置
示例: queuepause command = enable %p
缺省设置: read bmpx = no
参见 write list 和 invalid users 选项。
缺省设置: read list = <空字符串>
示例: read list = mary, @students
如果这个参数是yes, 那么服务的用户不能建立或修改服务目录中的文件。
注意一个可打印的服务(printable = yes) 的目录 总是 可写的(需要用户可写权限)但是只能通过缓冲操作来写.
缺省设置: read only = yes
如果允许,那么它会以65535 字节为单位来读取一个数据包的65535字节.这会带来较多的性能方面的好处.
但是,有些客户端使用不正确的包容量(虽然是可允许的),或者它们不支持大容量包,所以对这些客户端你应该禁止这一选项.
通常将此选项作为一种系统调试工具,而且严格来说不应修改.参见write raw选项.
缺省设置: read raw = yes
在磁盘与网络的访问速度相近时,这种交迭式的工作就会做得非常好,不过当其中一类设备的速度大大高于另一类时,它只会有那么一点点效果.
缺省的值是16384,但没有做过测试最优值的实验。根据已经了解的情况来看,在使用不同的系统时,最优化值的差别很大.一个大于65536的值是没有任何意义的,它只会造成不必要的内存分配.
缺省设置: read size = 16384
示例: read size = 8192
缺省设置: realm =
示例: realm = mysambabox.mycompany.com
如果你要samba服务器处在一个通常浏览传播规则没有正常工作的远程工作组里时,用此项就很有用了.此远程工作组可以位于IP包到得到的任何地方.
例如:
remote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF
以上这行说明nmbd 对两个给出的使用工作组名的IP地址进行申明.如果你只用了IP地址的话,那么会用workgroup选项里给出的工作组名来替代.
你选用的IP地址通常应该是远程网络的广播地址,不过也可以用配置稳定的网络中的已知主浏览器IP地址.
缺省设置: remote announce = <空字符串>
This is useful if you want your Samba server and all local clients to appear in a remote workgroup for which the normal browse propagation rules don‘t work. The remote workgroup can be anywhere that you can send IP packets to.
例如:
remote browse sync = 192.168.2.255 192.168.4.255
以上行会使nmbd向位于指定子网或地址中的主浏览器请求同步他们本地服务器中的浏览列表
你选用的IP地址通常应该是远程网络的广播地址,不过也可以用配置非常稳定的网络中的已知主浏览器IP地址.如果给出一个主机的IP地址,或者主控浏览器事实上在自己的网段中, samba就不验证远程主机是否有效、是否正在侦听了。
缺省设置: remote browse sync = <空字符串>
The security advantage of using restrict anonymous = 1 is dubious, as user and group list information can be obtained using other means.
The security advantage of using restrict anonymous = 2 is removed by setting guest ok = yes on any share.
缺省设置: restrict anonymous = 0
加入一个root directory,注意不是实际的"/"目录,可以增加额外的安全级别,但是代价就高了.这样完全确保了所指定的root directory及所属子目录外的文件都是不能访问的,包括服务器正常运行时所需的一些文件也是如此.因此要想维护服务器整体的可操作性,你需要镜像一些系统文件到所指定的root directory下.特别是要镜像 /etc/passwd文件或此文件的子集,如果需要的话,任何打印操作要用到的二进制文件或配置文件也要镜像.当然,应该由操作系统决定必须被镜像的文件集合.
缺省设置: root directory = /
示例: root directory = /homes/smb
参见 postexec.
缺省设置: root postexec = <空字符串>
参见 preexec 和 preexec close 选项.
缺省设置: root preexec = <空字符串>
参见 preexec 和preexec close.
缺省设置: root preexec close = no
这个选项设置了“安全模式位”用于答复协议协商以使smbd(8) 调整共享安全级是开或者关.客户端根据此位决定是否(以及如何)向服务器传送用户和口令信息.
缺省值是security = user,这也是在Windows 98和Windows NT环境中最常用的设定.
可选的值 security = share, security = server 或者security = domain .
2.0.0版本之前的Samba中,缺省值是 security = share 主要因为当时只有这一个值可选。
在WfWg里有一个错误,当在使用用户和服务器安全级时,WfWg客户将会完全忽略你在"connect drive"对话框里键入的口令.这就使除了在WfWg里已登录的用户以外的任何人要联接Samba服务项变得非常困难.
如果你的主机使用与UNIX主机上相同的用户名时,就应当使用security = user.如果你用的用户名通常在UNIX上不存在时就应该用security = share.
如果你想设置共享而不用口令的话(访客级共享)也应该用security=share.这通常用于提供共享打印的服务器.在security=user里设定guest帐户非常困难,详细的情况请参见map to guest选项.
smbd可能会使用一种混杂模式(hybrid),这样就可以在不同的NetBIOS aliases下提供用户和共享级的安全特性.
现在解释各个不同的设定.
SECURITY = SHARE
当客户联接到一个共享安全级的服务器,在联接共享资源之前无需用一个合法的用户名和口令登录到服务器(虽然现在的客户端象WIN95/95及NT在与security = share 的服务器交谈时都会以用户名发送一个登录请求,但却没有带口令).相反,客户端会在每一个共享上发送认证信息(口令)以尝试联接到这个共享项.
注意 smbd 总是 用合法的UNIX用户代表客户进行操作, 即使是在 security = share 的时候.
因为在共享安全级中,客户无需向服务器发送用户名,所以smbd用一些技术来为客户决定正确的UNIX用户账号.
用于匹配给出客户口令的可能的UNIX用户名列表可以用以下方法建立:
如果设置了guest only选项,则跳过所有其它步骤只检查guest account用户名.
如果通过共享连接请求发送一个用户名,则此用户名(映射后 - 参见username map)被作为潜在用户名加入.
如果客户使用一个先前的 logon 请求(SessionSetup SMB调用)则在SMB中发送的用户名将作为潜在用户名加入.
客户请求的服务项名被作为潜在用户名加入.
客户的NetBIOS名被作为潜在用户名加入到列表中.
在user列表中的任何用户都被作为潜在用户名加入.
如果未设guest only选项,则使用提供的口令来尝试此列表.对于匹配到口令的第一个用户将作为UNIX用户身份使用.
如果设置了guest only选项或未检测到用户名,则如果共享项中标志为可以使用guest account,那么使用此访客用户账号,否则拒绝访问.
注意,在共享安全级中关于哪个UNIX用户名最后将在允许访问中使用非常混淆.
参见NOTE ABOUT USERNAME/PASSWORD VALIDATION段.
SECURITY = USER 这是samba2.0/3.0缺省安全级设置.对于用户安全级,一个客户必须先以合法的用户名和口令(也可以用username map选项进程映射)“登录”.在此安全模式中也可使用加密口令(参见encrypted passwords选项).如果设置了如user和guest only这样的选项,则它们会被应用并且在此连接上更改UNIX用户账号,但只能在用户账号被成功验证之后才行.
注意,当服务器成功验证客户身份之前,请求的资源名称是不发送到服务器上的.这就是为什么用户安全级中在没有允许服务器自动把未知用户映射为guest account的情况下,访客共享无法工作.参见map to guest选项获得完成映射的细节.
参见NOTE ABOUT USERNAME/PASSWORD VALIDATION段.
SECURITY = DOMAIN
只有已经用 net(8)把服务器添加进一个Windows NT的域中,此安全模式才能正常工作.它要求encrypted passwords选项设为yes.在此模式中Samba将试图把用户名/口令传送到一个WindowsNT主域或备份域控制器进行验证像一台真正的WindowsNT服务器那样。
注意,仍然需要存在一个和域控制器上的用户名一致的有效的UNIX用户,来使Samba拥有一个有效的UNIX帐户来映射存取文件操作。
注意,对于客户端来说,security=domain模式与security=user是一样的.它只影响服务器处理验证工作的方式.对于客户端无任何影响.
注意,当服务器成功验证客户身份之前,请求的资源名称是不发送到服务器上的.这就是为什么域安全级中在没有允许服务器自动把未知用户映射为guest account的情况下,访客共享无法工作.参见map to guest选项获得完成映射的细节
参见 NOTE ABOUT USERNAME/PASSWORD VALIDATION 段.
参见 password server parameter 和 encrypted passwords 选项。
SECURITY = SERVER
在此模式中Samba将试图把用户名/口令传送到其它SMB服务器,比如一台NT服务器,进行验证.如果验证失败则回到security = user模式,它需要encrypted passwords 参数设置为yes,除非远端系统不支持它们。但是要注意,如果使用了加密口令的话,samba不会再去检查UNIX系统口令文件的,它必须有一个合法的smbpasswd文件以再次检查用户账号.参见Samba HOWTO Collection 中关于User Database 的章节来获得如何设置的信息。
This mode of operation has significant pitfalls, due to the fact that is activly initiates a man-in-the-middle attack on the remote SMB server. In particular, this mode of operation can cause significant resource consuption on the PDC, as it must maintain an active connection for the duration of the user‘s session. Furthermore, if this connection is lost, there is no way to reestablish it, and futher authenticaions to the Samba server may fail. (From a single client, till it disconnects).
注意,对于客户端来说,security=server模式与security=user是一样的.它只影响服务器处理验证工作的方式.对于客户端无任何影响.
注意,当服务器成功验证客户身份之前,请求的资源名称是不发送到服务器上的.这就是为什么服务器安全级中在没有允许服务器自动把未知用户映射为guest account的情况下,访客共享无法工作.参见 map to guest选项获得完成映射的细节.
参见 NOTE ABOUT USERNAME/PASSWORD VALIDATION 段.
参见 password server parameter 和 encrypted passwords 选项。
SECURITY = ADS
In this mode, Samba will act as a domain member in an ADS realm. To operate in this mode, the machine running Samba will need to have Kerberos installed and configured and Samba will need to be joined to the ADS realm using the net utility.
Note that this mode does NOT make Samba operate as a Active Directory Domain Controller.
Read the chapter about Domain Membership in the HOWTO for details.
参见 ads server parameter, the realm paramter 和encrypted passwords 选项。
缺省设置: security = USER
示例: security = DOMAIN
此选项用掩码值‘与‘实现对权限位的更改,从而防止修改未出现在此掩码中的任何位.可以将掩码中的0看作用户无权更改的位值. This parameter is applied as a mask (AND‘ed with) to the changed permission bits, thus preventing any bits not in this mask from being modified. Essentially, zero bits in this mask may be treated as a set of bits the user is not allowed to change.
如未明确设定此选项,则把此选项设为0777,允许用户修改文件的所有user/group/world这些权限.
注意,可通过其它手段访问到Samba服务器的用户可以轻而易举地绕过此限制,所以此选项只对独立的服务器系统有用.多数普通系统的管理员可以将它保留为0777.
参见 force directory security mode, directory security mask, force security mode 选项.
缺省设置: security mask = 0777
示例: security mask = 0770
Please note that with this set to no you will have to apply the WindowsXP requireSignOrSeal-Registry patch found in the docs/Registry subdirectory.
缺省设置: server schannel = auto
示例: server schannel = yes
When set to auto, SMB signing is offered, but not enforced. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either.
缺省设置: client signing = False
它还设置显示在浏览列表中主机名后的内容.
%v 将替换为Samba版本号
%h 将替换为主机名
缺省设置: server string = Samba %v
示例: server string = University of GNUs Samba Server
setdir命令只在Digital Pathworks客户端中实现.参见Pathworks文档的细节.
缺省设置: set directory = no
缺省设置: No default value
示例: set primary group script = /usr/sbin/usermod -g ‘%g‘ ‘%u‘
This parameter should specify the path to a script that can set quota for the specified arguments.
The specified script should take the following arguments:
1 - quota type .TP 3 * 1 - user quotas .TP * 2 - user default quotas (uid = -1) .TP * 3 - group quotas .TP * 4 - group default quotas (gid = -1) .LP
2 - id (uid for user, gid for group, -1 if N/A)
3 - quota state (0 = disable, 1 = enable, 2 = enable and enforce)
4 - block softlimit
5 - block hardlimit
6 - inode softlimit
7 - inode hardlimit
8(optional) - block size, defaults to 1024
The script should output at least one line of data.
参见 get quota command 选项。
缺省设置: set quota command =
示例: set quota command = /usr/local/sbin/set_quota
这些打开模式UNIX是不直接支持的,所以要用共享内存或在UNIX不支持共享内存时(一般都支持)用锁定文件来模拟.
允许共享模式的选项是DENY_DOS, DENY_ALL, DENY_READ,DENY_WRITE, DENY_NONE 和DENY_FCB.
缺省情况下此选项提供了完全的共享兼容和许可.
你 不应 把此选项关闭因为很多Windows应用会因此停止运行。
缺省设置: share modes = yes
参见 NAME MANGLING 段.
缺省设置: short preserve case = yes
Under normal circumstances, the Windows NT/2000 client will open a handle on the printer server with OpenPrinterEx() asking for Administrator privileges. If the user does not have administrative access on the print server (i.e is not root or a member of the printer admin group), the OpenPrinterEx() call fails and the client makes another open call with a request for a lower privilege level. This should succeed, however the APW icon will not be displayed.
Disabling the show add printer wizard parameter will always cause the OpenPrinterEx() on the server to fail. Thus the APW icon will never be displayed. Note :This does not prevent the same user from having administrative privilege on an individual printer.
参见 addprinter command, deleteprinter command, printer admin
Default :show add printer wizard = yes
This command will be run as the user connected to the server.
%m %t %r %f parameters are expanded:
%m will be substituted with the shutdown message sent to the server.
%t will be substituted with the number of seconds to wait before effectively starting the shutdown procedure.
%r will be substituted with the switch -r. It means reboot after shutdown for NT.
%f will be substituted with the switch -f. It means force the shutdown even if applications do not respond for NT.
缺省设置: None.
示例: shutdown script = /usr/local/samba/sbin/shutdown %m %t %r %f
Shutdown script example:
#!/bin/bash $time=0 let "time/60" let "time++" /sbin/shutdown $3 $4 +$time $1 &
Shutdown does not return so we need to launch it in background.
参见 abort shutdown script.
缺省设置: smb passwd file = ${prefix}/private/smbpasswd
示例: smb passwd file = /etc/samba/smbpasswd
缺省设置: smb ports = 445 139
By default Samba will accept connections on any address.
示例: socket address = 192.168.2.20
套接字选项是使用在允许调整连接的操作系统的网络层的控制命令.
此选项通常用于在局域网上优化调整samba服务器的性能.因为samba无法知道与你的网络所对应的优化选项,所以你必须自己进行试验并作出选择.我们强烈推荐你先阅读与你的操作系统有关的相应文件(也许man setsockopt会有帮助).
你可能会发现在有些系统上samba会在你使用一个选项时发出"Unknown socket option"的信息.这就说明你没有正确拼写或者需要为操作系统添加一个包含文件到includes.h中.如有后面指出的问题请写信到samba-bugs@samba.org.
只要操作系统允许,你可以以任何方法组合任何所支持的套接字选项.
当前可用于此选项的可设置套接字选项列表有:
SO_KEEPALIVE
SO_REUSEADDR
SO_BROADCAST
TCP_NODELAY
IPTOS_LOWDELAY
IPTOS_THROUGHPUT
SO_SNDBUF *
SO_RCVBUF *
SO_SNDLOWAT *
SO_RCVLOWAT *
标有‘*‘的要使用一个整数参数.其它的有时使用1或0代表允许或禁止该选项,如未指定1或0则缺省值都为允许.
要指定一个变量,用"SOME_OPTION=VALUE"格式。比如可以是SO_SNDBUF=8192.注意,在"="前后不能有任何空格.
如在局域网上,则使用下面这个是比较明智的:
socket options = IPTOS_LOWDELAY
如有一个局域网则可以试一下:
socket options = IPTOS_LOWDELAY TCP_NODELAY
如有一个广域网,则试一下IPTOS_THROUGHPU.
注意有些选项可导致samba服务器完全失效.小心使用它们!
缺省设置: socket options = TCP_NODELAY
示例: socket options = IPTOS_LOWDELAY
If the value of this parameter starts with a "|" character then Samba will treat that value as a pipe command to open and will set the environment variables from the output of the pipe.
The contents of the file or the output of the pipe should be formatted as the output of the standard Unix env(1) command. This is of the form:
Example environment entry:
SAMBA_NETBIOS_NAME = myhostname
缺省设置: No default value
Examples: source environment = |/etc/smb.conf.sh
示例: source environment = /usr/local/smb_env_vars
缺省设置: stat cache = yes
When strict allocate is no the server does sparse disk block allocation when a file is extended.
Setting this to yes can help Samba return out of quota messages on systems that are restricting the disk quota of users.
缺省设置: strict allocate = no
当禁用strict locking时,服务器只在客户明确要求时才为他们检查文件锁.
循规蹈矩的客户总是在重要的时候要求检查文件锁,所以在多数情况下strict locking = no是可取的.
缺省设置: strict locking = no
参见 sync always 选项。
缺省设置: strict sync = no
参见 strict sync 选项。
缺省设置: sync always = no
此选项设置了对syslog发送信息的阈值.只有小于此值的调试级信息号才发给syslog.
缺省设置: syslog = 1
缺省设置: syslog only = no
缺省设置: template homedir = /home/%D/%U
缺省设置: template primary group = nobody
缺省设置: template shell = /bin/false
缺省设置: time offset = 0
示例: time offset = 60
缺省设置: time server = no
缺省设置: unicode = yes
缺省设置: unix charset = UTF8
示例: unix charset = ASCII
缺省设置: unix extensions = yes
参见 passwd program, passwd chat.
缺省设置: unix password sync = no
为了让此选项正确工作,当它设为yes时必须把 encrypt passwords选项设为no .
注意即使设置了此选项,smbd还是必须验证用户账号,直到输入合法的口令后才能正确连接并更新他们的散列计算(由smbpasswd完成)后的口令字.
缺省设置: update encrypted = no
The differentiating factor is that under normal circumstances, the NT/2000 client will attempt to open the network printer using MS-RPC. The problem is that because the client considers the printer to be local, it will attempt to issue the OpenPrinterEx() call requesting access rights associated with the logged on user. If the user possesses local administator rights but not root privilegde on the Samba host (often the case), the OpenPrinterEx() call will fail. The result is that the client will now display an "Access Denied; Unable to connect" message in the printer queue window (even though jobs may successfully be printed).
If this parameter is enabled for a printer, then any attempt to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped to PRINTER_ACCESS_USE instead. Thus allowing the OpenPrinterEx() call to succeed. This parameter MUST not be able enabled on a print share which has valid print driver installed on the Samba server.
参见 disable spoolss
缺省设置: use client driver = no
缺省设置: use mmap = yes
只有当主机无法提供它自己的用户名时才需要username选项。当用COREPLUS协议或你的用户拥有与UNIX用户名不同的WfWg用户名时就会有这样的情况.在这两种情况下,用\serverhare%user语句代替会更好的.
在大多数情况下username选项并不是最好的解决方案,因为它意味着Samba会尝试对username选项行中的每个用户名轮流作测试.这样做是很慢的,而且万一很多用户重复口令的话这就是个坏主意了.错误使用此选项可能会带来超时或安全缺陷.
samba依靠底层的UNIX安全.此选项不限制登录者,它只对Samba服务器提供响应所提供口令的用户名的线索.任何喜欢的人都可以登录,而且如果他们只是启动一次telnet对话的话不会造成破坏.进程以登录的用户身份运行,所以他们无法做任何他们不能做的事儿.
要对一组特殊的用户限制一个服务的话可以用 valid users 选项.
如果任何用户名以‘@‘字符开始则此用户名将首先在NIS网络组列表(如果Samba编译时加入了网络组支持的话)中进行查找,然后在UNIX用户组数据库中查找并展开成属于以此名为组的所有用户的列表.
如果任何用户名以‘+‘字符开始则此用户名只在UNIX用户组数据库中进行查找并展开成属于以此名为组的所有用户的列表.
如果任何用户名以‘&‘字符开始则此用户名只在NIS网络组列表(如果Samba编译时加入了网络组支持的话)中进行查找并展开成属于以此名为组的所有用户的列表.
注意通过用户组数据库进行查找要花很长时间,在此期间有些客户可能会超时.
查看 NOTE ABOUT USERNAME/PASSWORD VALIDATION 段来获得这个选项如何决定访问服务方面的信息。
缺省设置: 如果是guest服务就是guest帐号,否则是空字符串.
示例:username = fred, mary, jack, jane, @users, @pcgroup
如果把此选项设为非0,则情况就改变了.此选项指定的是用于尝试同时检测UNIX用户名的大写字母的组合数.数字越高,则尝试的组合数越多,但用户名的发现也越慢.当在你的UNIX主机上有奇特的用户名如AstrangeUser 时使用此选项.
缺省设置: username level = 0
示例: username level = 5
映射文件被逐行解析.每个行都应该在‘=‘号左边包含一个UNIX用户名,而在右边跟上一列用户名.右边的用户名列表可以包含@group形式的名称,它表示匹配任何组中的UNIX用户名.特殊客户名‘*‘是一个通配符用于匹配任何名称.映射文件的每个行可以达到1023个字符的长度.
对文件的处理是在每个行上取得提供的用户名并把它与‘=‘号右边的每个用户名进行比较.如果提供的名称匹配右边的任何名称则用左边的名称替换右边的.然后继续处理下一行.
忽略以‘#‘ 或 ‘;‘号开始的行.
当在行中发现了匹配,则在以‘!‘开始的行后中止处理,否则继续处理每一行的映射.当你在文件中用了通配映射的话‘!‘就很有用了.
例如把名称admin 或 administrator映射为UNIX名 root,你可以这样:
root = admin administrator
或把UNIX组 system中的任何人映射为UNIX名sys就可以这样:
sys = @system
可以在一个用户名映射文件中包含很多映射关系.
如果你的系统支持NIS NETGROUP选项,则在使用/etc/group 匹配组之前先检查网络组数据库.
你可以通过在名称上使用双引号来映射含有空格的Windows用户名.例如:
tridge = "Andrew Tridgell"
将把windows用户名"Andrew Tridgell"映射为unix用户名"tridge".
以下示例将把mary和fred映射为unix用户sys,然后把其余的映射为guest.注意使用‘!‘符号可以告诉Samba如果在该行获得一个匹配的话就停止处理.
!sys = mary fred guest = *
注意重映射作用于所有出现用户名的地方.因此如果你连接到\\server\fred而 fred已被重映射为 mary,则你实际会连接到\\server\mary"并需要提供mary的口令而不是 fred的.这种情况只有一个例外,那就是用户名是被传到 password server(如果你有一个的话)验证的.口令服务器会接收客户提供的未经修改的用户名.
同时要注意反向映射是不会出现的.这主要影响的是打印任务.已经被映射的用户会在删除打印任务时遇到麻烦,因为WfWg上的打印管理器会认为他们不是打印任务的属主.
缺省设置: no username map
示例: username map = /usr/local/samba/lib/users.map
缺省设置: use sendfile = no
缺省设置: use spnego = yes
Due to the requirements of the utmp record, we are required to create a unique identifier for the incoming user. Enabling this option creates an n^2 algorithm to find this number. This may impede performance on large installations.
参见 utmp directory 选项。
缺省设置: utmp = no
缺省设置: no utmp directory
示例: utmp directory = /var/run/utmp
This option should not be used by regular users but might be of help to developers. Samba uses this option internally to mark shares as deleted.
缺省设置: True
如果此项为空(缺省)则任何用户都可以登录.如果一个用户名同时存在于此列表及invalid users列表,则拒绝此用户访问.
%S 替换为当前服务名. 这在[homes]段里非常有用.
参见 invalid users
缺省设置: 空 (任何人都不会被拒绝)
示例: valid users = greg, @pcusers
每项必须是一个UNIX路径,而非一个DOS路径,同时必须不含 UNIX目录分隔符‘/‘.
注意case sensitive选项适用于对文件的禁止目的.
需要明白这个选项的很重要的一个特点: 在Samba删除一个目录时的行为。如果一个目录除了veto files之外不包含任何内容,删除操作将失败,除非设置了delete veto files 是yes.
设置此选项会影响Samba的性能,因为它将强制在扫描所有文件和目录时检查是否匹配.
参见 hide files 和 case sensitive.
缺省设置: 没有隐藏任何文件.
示例:
; 隐藏任何文件名带有‘Security‘的文件, ; 任何扩展名是.tmp的文件,任何文件名带有‘root‘的文件 veto files = /*Security*/*.tmp/*root*/ ; 隐藏NetAtalk服务器创建的Apple专用的文件 veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
缺省设置: 没有隐藏oplocks许可
你可能想在已知客户会猛烈争夺的文件上使用此项.在NetBench SMB基准程序下面就是个好例子,它导致客户猛烈地对以.SEM后缀的文件进行连接.为使Samba不在这些文件上允许oplocks,你可以在[global]段或特定的NetBench共享中使用此行:
示例: veto oplock files = /*.SEM/
缺省设置: no value
示例: vfs objects = extd_audit recycle
缺省设置: 共享的名称
注意设置此选项可对服务器性能产生负面影响,因为samba必须做一些额外的系统调用以检查那些链接.
缺省设置: wide links = yes
缺省设置: winbind cache type = 300
缺省设置: winbind enable local accounts = yes
Warning: Turning off group enumeration may cause some programs to behave oddly.
缺省设置: winbind enum groups = yes
Warning: Turning off user enumeration may cause some programs to behave oddly. For example, the finger program relies on having access to the full user list when searching for matching usernames.
缺省设置: winbind enum users = yes
The winbind gid parameter specifies the range of group ids that are allocated by the winbindd(8) daemon. This range of group ids should have no existing local or NIS groups within it as strange conflicts can occur otherwise.
缺省设置: winbind gid = <空字符串>
示例: winbind gid = 10000-20000
Please note that setting this parameter to + causes problems with group membership at least on glibc systems, as the character + is used as a special character for NIS in /etc/group.
缺省设置: winbind separator = ‘‘
示例: winbind separator = +
缺省设置: winbind trusted domains only = <no>
The winbind gid parameter specifies the range of user ids that are allocated by the winbindd(8) daemon. This range of ids should have no existing local or NIS users within it as strange conflicts can occur otherwise.
缺省设置: winbind uid = <空字符串>
示例: winbind uid = 10000-20000
缺省设置: winbind use default domain = <no>
示例: winbind use default domain = yes
此选项以如下形式指定要调用的一个脚本名或可执行程序:
wins_hook operation name nametype ttl IP_list
第一部分参数是opration(操作符),它有三种:"add"、"delete"和"refresh".在很多情况下该操作符可以忽略,因为其它选项可提供足够的信息.注意当有名称以前没有加入过,则有时会用到"refresh",在这种情况下,它应该和"add"有同样含义.
第二部分参数是netbios名.如果该名称不是合法名的话,该功能就不运行.合法的名称应只包含字母,数字,减号,下划线和句点.
第三部分参数是用2位十六进制数字表示的netbios名称类型.
第四部分参数是以秒计算的名称有效时间TTL (time to live).
第五部分是当前该名称所注册的IP地址表.如果表为空则该名称被删除.
一个调用BIND动态DNS更新程序nsupdate的脚本示例在samba源代码的示例目录可以找到.
缺省设置: wins partners =
示例: wins partners = 192.168.0.1 172.16.1.2
缺省设置: wins proxy = no
如果你有多个子网的话,应该指定向你的WINS服务器
If you want to work in multiple namespaces, you can give every wins server a ‘tag‘. For each tag, only one (working) server will be queried for a name. The tag should be seperated from the ip address by a colon.
注意,如有多子网并希望跨子网浏览工作正常的话,应该设置Samba指向一台WINS服务器.
缺省设置: 未启用
示例: wins server = mary:192.9.200.1 fred:192.168.3.199 mary:192.168.2.61
For this example when querying a certain name, 192.19.200.1 will be asked first and if that doesn‘t respond 192.168.2.61 . If either of those doesn‘t know the name 192.168.3.199 will be queried.
示例: wins server = 192.9.200.1 192.168.2.61
缺省设置: wins support = no
缺省设置: 编译时设置为 WORKGROUP
示例: workgroup = MYGROUP
This cache allows Samba to batch client writes into a more efficient write size for RAID disks (i.e. writes may be tuned to be the RAID stripe size) and can improve performance on systems where the disk subsystem is a bottleneck but there is free memory for userspace programs.
The integer parameter specifies the size of this cache (per oplocked file) in bytes.
缺省设置: write cache size = 0
示例: write cache size = 262144
for a 256k cache size per file.
注意如果一个用户同时属于读列表和写列表则拥有写入权.
参见 read list 选项。
缺省设置: write list = <空字符串>
示例: write list = admin, root, @staff
缺省设置: write raw = yes
参见 utmp 选项。 By default this is not set, meaning the system will use whatever utmp file the native system is set to use (usually /var/run/wtmp on Linux).
缺省设置: no wtmp directory
示例: wtmp directory = /var/log/wtmp
原文:https://www.cnblogs.com/fanweisheng/p/11098686.html