1、主配置文件smb.conf。
在配置参数昌有以下几个共性。
(1)参数配置基本采用“参数” = “值”的方式,如果参数有多个值时,多个参数之间用空格分隔。
(2)当使用用户和组作为参数时,值为组时需在组名前加@字符。
(3)以“;”或“#”开始的是注释行。
(4)方括号标识表示为标志,比如[global]为全局配置标识。
(5)一般当全局配置与某个共享资源配置发生冲突时,共享资源配置优先。
(6)关键字对大小写不敏感。
配置文件/usr/local/samba/etc/smb.conf或/etc/samba/smb.conf内容结构
==================== Global Settings ====================
#以[global]开始,该部分主要涉及Samba服务的全局配置。
[global]
-----------Network Related Options----------
workgroup = MYGROUP 设置Samba服务所在工作组或域的名称,默认为MYGROUP。
server string = Samba Server Version %v 设置Samba服务器的描述信息,默认为Samba Server Version %v。可以使用Samba设定的变量。
netbios name = Samba Server 设置Samba服务器NetBIOS名称,默认使用该服务器的DNS名称的第一部分。
interfaces = lo eth0 192.168.10.1/24 设置服务器监听本地网络接口(网卡),使用该参数时,推荐保留lo(本地回环地址),参数设置:网络接口名(eth0/1);IP地址。
hosts allow = 127. 192.168.10. 192.168.10.1 except 192.168.10.100 允许连接到Samba服务器的客户端;对应是hosts deny参数。
use sendfile = no 当设置为yes时,将直接由 kernel 读取数据后发给客户端,大大提高效率;默认no。
getwd cache =yes 是否启用cache功能。默认yes。
max connectons = 0 允许连接到服务器的最大连接数,0表示无限制
max open files = 16404 同一个客户端最多能打开的文件数目。
deadtime = 0 设置断开一个没有打开任何文件的链接的时间,单位是分钟,0表示无限制
keepalive = 60 服务器每隔多少秒向客户端发送keepalive包用于确认客户端是否工作正常。
time server = yes/no 设置让nmbd成为windows客户端的时间服务器
guest account = nobody
fstype = Samba FileSystem 定义Windows客户端显示的文件系统。
username map = </usr/local/samba/etc/smbusers或/etc/smaba/smbusers> 定义用户映射关系的文件
config file = </usr/local/samba/etc/smb.conf.%m> 使用另外的配置文件来覆盖缺省的配置文件
说明:
host allow = value设置
Example 1: allow all IPs in 150.203.*.*; except one
hosts allow = 150.203. EXCEPT 150.203.6.66
Example 2: allow hosts that match the given network/netmask
hosts allow = 150.203.15.0/255.255.255.0
Example 3: allow a couple of hosts
hosts allow = lapland, arvidsjaur
Example 4: allow only hosts in NIS netgroup "foonet", but deny access from one particular host
hosts allow = @foonet
hosts deny = pirate
Samba设定的变量:
变量名 | 作 用 | 变量名 | 作 用 |
%S | 当前服务名(如果存在) | %L | Samba服务器的NetBIOS名 |
%P | 当前服务的根目录(如果存在) | %N | NIS服务器主机名 |
%u | 当前服务的用户名(如果存在) | %p | NIS服务器家目录 |
%g | 当前用户的初始组 | %R | 采用协议等级 |
%U | 当前连接的用户名 | %d | Samba服务的进程ID |
%G | 当前连接用户的初始组 | %a | 访问Samba服务器的客户端系统 |
%D | 当前用户所属域或工作组名称 | %I | 访问Samba服务器的客户端IP地址 |
%H | 当前服务用户的家目录 | %M | 访问Samba服务器的客户端主机名 |
%v | Samba服务器的版本 | %m | 访问Samba服务器的客户端NetBIOS名 |
%h | Samba服务器的主机名 | %T | Samba服务器日期及时间 |
-----------Logging Options----------
log level = 8 设置日志记录等级。值越大越详细。参数设置:0~10。
log file = /var/log/samba/log.%m 定义Samba日志文件的位置及名称。默认为每一个与服务器连接的客户端定义一个单独的日志文件。
max log size =50 设置最大的日志文件大小,单位为KB。
-----------Standalone Server Options----------
#使用独立服务器作为Samba服务器认证用户来源,也就是当访问Samba服务器时输入的用户名和密码的验证工作由Samba服务器本机系统内账户完成。
security = user 设置安全级别,即客户端访问Samba服务器的验证方式。此部分中只能设置以下三种参数,参数设置:share(不推荐)、user、server(不推荐)。
passdb backend = tdbsam 参数设置:smbpasswd、tdbsam、ldapsam、mysql。默认为tdbsam,一般不用修改,除非想使用老版本Samba服务器的smbpasswd文件方式或其它方式。
encrypt passwords = yes/no 认证密码在传输过程中是否加密。
参数说明:
security = share/user/server/domain/ads
以下三种安全级别用在Standalone Server Options部分,其中user级别也用于Domain Controller Options部分。
(1)share:访问Samba服务器共享资源时不需要输入用户名和密码,属于匿名访问。
(2)user:访问Samba服务器共享资源时需要输入用户名和密码,认证用户来源为Samba服务器本机。
(3)server:访问Samba服务器共享资源时需要输入用户名和密码,认证用户来源为另一台Samba服务器或Windows服务器。
以下两种安全级别用在Domain Members Options部分:
(4)domain:Samba服务器在一个基于Windows NT平台的Windows域中,访问共享资源需要输入用户名和密码,认证用户来源为Windows域。
(5)ads:Samba服务器在一个基于Windows 200X平台的Windows活动目录中,访问共享资源需要输入用户名和密码,认证用户来源为Windows活动目录。
passdb backend = tdbsam/smbpasswd/ldapsam/mysql
(1)tdbsam:该方式使用一个数据库文件来建立用户数据库,数据库文件名为passdb.tdb。可以使用#smbpasswd -a [用户名]来建立Samba用户。也可以使用pdbedit命令来建立用户。
(2)smbpasswd:该方式使用Samba提供的工具smbpasswd来给系统用户设置一个用于访问Samba服务的密码,客户端就用这个密码访问Samba共享资源。此方式还要使用一个 smb passwd file = /usr/local/samba/etc/smbpasswd(或/etc/samba/smbpasswd) 参数来指定保存用户名和密码的文件,该文件需要手动建立。不推荐使用此方法。
(3)ldapsam:该方式基于LADP的账户管理方式来验证用户,先要建立LDAP服务。
(4)mysql:该方式是将Samba服务器的用户名和密码存储到MySQL数据库中。
pdbedit命令常用参数:
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
注意:
Standalone Server Options、Domain Members Options、Domain Controller Options三部分均与Samba的认证方式及工作角色有关,三部分均需要配置合适的security(安全级别,用于配置Samba的认证方式),此三部分为服务器的三种角色。
-----------Domain Members Options----------
#该部分将Samba服务器加入Windows NT平台域或Windows 2000 Server/2003/2008活动目录中。也就是当访问Samba服务器时输入的用户名和密码的验证工作由域控制器完成。
security = domain 在此部分中该参数只能设置为domain、ads。
passdb backend = tdbsam 默认为tdbsam,不用修改。
realm = MY_REALM
password server = <NT-Server-Name> 指定进行身份验证的域控制器IP地址或主机名。
参数说明:
-----------Domain Controller Options----------
#该部分将Samba服务器配置为一台域控制器。
security = user 在此部分中该参数只能设置为user。
passdb backend = tdbsam 默认为tdbsam,一般不用修改。
domain master = yes 让Samba成为主域控制器(PDC),在此部分中此参数必须为yes。
domain logons = yes 允许旧的Windows客户端提交验证信息。
logon script = %m.bat/%u.bat 当用户登录到域时执行的启动脚本,依据机器名或用户名加载脚本(相当于Windows组策略中用户开机脚本)。
logon path = \\%L\Profiles\%u 当用户登录到域后的配置文件存放的位置,用来初始化工作环境(相当于Windows中的漫游配置文件)。
add user script = /usr/sbin/useradd "%u" -n -g users 指定Windows与Linux中用户信息同步脚本,当Windows域中新建用户后指定脚本会将该用户的信息复制到Linux中。
add group script = /usr/sbin/groupadd "%g" 指定Windows与Linux中组信息同步脚本,当Windows域中新建组后指定脚本会将该组信息复制到Linux中。
add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u" 指定Windows与Linux中计算机信息同步脚本,当Windows域中加入新的计算机后指定脚本会将计算机信息复制到Linux中。
delete user script = /usr/sbin/userdel "%u" 指定Windows与Linux中用户信息同步脚本,当Windows域中删除用户后指定脚本会将该用户信息复制到Linux中。
delete user from group script = /usr/sbin/userdel "%u" "%g" 指定Windows与Linux中用户信息同步脚本,当Windows域中将用户从组中删除后指定脚本会将信息复制到Linux中。
delete group script = /usr/sbin/groupdel "%g" 指定Windows与Linux中组信息同步脚本,当Windows域中删除组后指定脚本会将该组的信息复制到Linux中。
-----------Browser Control Options----------
#配置浏览服务器
local master = yes/no 是否允许Samba服务器作为主浏览服务器。
os level = 33 该数字越大被选举为主浏览服务器的可能性越高。
preferred master = yes 当为yes时被选为主浏览服务器的可能性越高。
注:
主浏览服务器的功能主要是实现Windows中的网上邻居。计算机浏览服务是一系分部式的含有可用的网络资源列表,这些列表分布在一些计算机上,提出浏览请求的计算机充当浏览工作站,面提供浏览列表的计算机充当浏览服务器。该操作通过计算机从同一个子网中的主浏览服务器获得浏览列表副本完成。
浏览服务器有域主浏览服务器、主浏览服务器、备份浏览服务器、潜在浏览服务器,非浏览服务器之分。
-----------Name Resolution----------
#该部分包括Samba服务器名称解析方法相关配置。
wins support = yes 设置nmbd进程支持WINS服务器。
wins server = w.x.y.z 设置WINS服务器IP地址。
wins proxy = yes 设置Samba服务器是否可作为WINS代理。
dns proxy = yes 设置Samba服务器是否在无法联系WINS服务器时通过DNS去解析主机的NetBIOS名。
name cache timeout = 660 设置Samba服务器解析主机名缓存的保存时间,单位是秒;默认660。
name resolve order = lmhosts host wins bcast 设置Samba服务器名称解析的方法及顺序。可指定一个或多个值。
参数说明:
name resolve order = lmhosts host wins bcast
(1)lmhosts:使用 /etc/samba/lmhosts文件对NetBIOS名称与IP地址对应关系进行解析,此方式用于解析NetBIOS名。
(2)host:使用主机名方式解析IP地址,该方式可以使用NIS、DNS及/etc/hosts文件三种方法完成解析,这三种方式的使用顺序是在/etc/nsswitch.conf文件中hosts参数定义的。
(3)wins:使用WINS服务器进行名称解析,使用此方式时wins server参数必须指明WINS服务器的IP地址。
(4)bcast:使用广播的方式进行名称解析。
注:
WINS代理:是为了解决跨网段的非WINS客户端与WINS客户端的NetBIOS名称解析的问题。
-----------Printing Options----------
#该部分包括Samba服务器打印机相关设置。
load printers = yes 是否自动共享打印机,而不根据[printer]标签内的配置。
cups options = raw
printcap name = /etc/printcap 设置获取打印机描述信息的文件位置。默认为/etc/printcap。
printing = cups 定义打印机的系统类型,可选项有:bsd、sysv、plp、lprng、aix、hpux、qnx、cups
-----------Filesystem Options----------
#该部分包括Samba服务器如何保留从Windows客户端复制或移动到Samba服务器共享目录文件的Windows文件属性的相关配置。
map archive = no 当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的存档属性。默认yes。
map hidden = no 当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的隐藏文件属性。默认yes。
map read only = no 当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的只读属性。默认为yes。
map system = no 当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的系统文件属性。默认为no。
store dos attributes = yes 当Windows客户端将文件复制或移动到Samba服务器共享目录时,是否保留文件在Windows中的相关属性(只读、系统、隐藏、存档属性)。默认为no。
unix charset = utf8
display charset = utf8
dos charset = utf8
注意:
设置与系统所使用的字符集相同。
-----------Performance Options----------
#服务器性能调优
read raw = yes
write raw = yes
aio read size = 16384
aio write size = 16384
write cache size = 262144
max xmit = 65536
getwd cache = yes
strict locking = no
注:
此部分本人加入,待继续整理……
==================== Share Definitions ====================
#该部分主要涉及Samba服务器需要共享的资源。默认已设置用户家目录(从[home]标识开始)、打印机共享(从[printers]标识开始)、登录脚本及登录域中有关用户家目录的配置,用户自定义配置信息也在此处定义。
[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[printers] 共享名,即客户端访问Samba服务器时浏览到的目录名,该名称不要求与本地目录名相同,但在当前Samba服务器必须唯一。
comment = All Printers 共享目录的描述信息,该参数不是必须的。
path = /var/spool/samba 需要共享的本地目录路径,必须使用绝对路径。
browseable = no
guest ok = no
writable = no
printable = yes
[print$]打印机驱动
comment = Printer drivers
path = /etc/samba/drivers
browseable = yes
readonly = yes
write list = gongxiaoli
[cdrom]共享光驱
commnet = this is cdrom
path = /mnt/cdrom
root preexec = /bin/mount -t iso9660 /dev/cdrom /mnt/cdrom 连接时用root用户运行mount命令。
root postexec = /bin/umount /mnt/cdrom 断开时用root用户运行umount命令。
……
在编辑Samba主配置文件时,smb.conf文件中并不要求参数缩进。但推荐在编写时对参数进行缩进,以便以后阅读。对用户自定义的共享资源配置内容放在smb.conf文件的末尾,也是为了便于以后阅读