如下内容摘选自笔者即将出版上市的新做——《金牌网管师——大中型企业网络组建、配置与管理》一书。 7.5 ads模式Samba服务器配置示例ios
本 节要介绍ads模式下Samba服务器的配置方法。相对于前面介绍的user模式下的Samab服务器,ads模式的配置更为复杂,由于它涉及到 Windows域网络中的Kerberos身份验证技术,除了须要配置主配置文件smb.conf外,还须要配置用于Kerberos身份认证的配置文件 /etc/krb5.conf,用于控制Samba服务器Linux系统帐户与Windows域帐户交换的/etc/nsswitch.conf文件。还 须要使用“net ads join -S”命令把Samba服务器加入到Windows AD域中。shell
仍采用上节的两个共享目 录:/usr/share和/etc/program,要求使用主机名为lycb-DC1,域名为lycb.local的Windows Server 2003域控制器进行身份验证,容许全部用户对/usr/share共享目录具备只读权限,仅容许administrators组成员对/etc /program共享目录具备写入权限,而其余的用户对/usr/share共享目录具备只读权限。固然首先也要确保Windows Server 2003域网络与Samba服务器处于同一网段。若是不处于同一网段,则要配置好相应的网络路由。另外,在Samba服务器中要用DNS域名格式配置好主 机名和域搜索路径。bash
7.5.1 ads模式主配置文件配置示例服务器
根据上述要求,能够写以下Samba服务器主配置文件smb.conf。网络
[global]app
workgroup = lycb # 指定AD域的NetBIOS名称。必须有这个语句,不然不能在域网络中搜索获得该Samba服务器dom
server string = File Server测试
netbios name = Sambaserverui
security = ads # 指定Samba服务器的工做模式为adsdebug
hosts allow = 172.16. 127.
encrypt passwords = yes
guest account = alice # 指定alice用户做为来宾访问帐户
realm = lycb.local # 指定Windows域名(DNS格式)
password server =172.16.0.1 # 指定担当身份验证服务器的服务器IP地址
[homes]
comment = Home Directories
browseable = no
writable = yes
path = /home/%U
valid users = %U
[share]
comment = All user's share directory
path = /usr/share
public = no
guest ok =yes
readonly = yes
[program]
comment = Program Files
path = /etc/program
valid users = @administrator alice # 指定该共享目录仅容许域网络中的administrtors组成员和alice用户访问
public = no
writable = yes
另外,建议在[global]部分使用如下所示配置,使得winbind服务能够列出Samba服务器加入的AD中的全部用户和组信息。确保在windbind服务运行时,可使用在DC中的用户和组来进行相似文件/目录权限设置,以及samba共享定义等。
idmap uid = 15000-20000 # 指定一个uid范围,该范围内的uid被用来映射Linux用户到Windows用户SID,并且要确保这个id范围内没有被本地或者NIS用户占用,在winbind服务启动后,也不能在该ID范围内添加用户。
idmap gid = 15000-20000 # 指定一个gid范围,该范围内的gid被用来映射Linux用户到Windows的组SID,并且要确保这个id范围内没有被本地或者NIS组占用,在winbind启动之后,也不能在该ID范围内添加新组。
winbind enum groups = yes # 指定winbind服务是否能在系统上建立Windows域组。通常状况下都要设置为yes,除非你处于某种缘由但愿关闭该功能。
winbind enum users = yes # 指定winbind服务是否能在系统上建立Windows域用户。通常状况下都要设置为yes,除非你处于某种缘由但愿关闭该功能。
winbind separator = + # 指定一个字符做为分隔符,winbind将使用该分隔符来用户或组名。使用该配置将使得域用户表示为"MYDOMAIN+username",域组被表示为"MYDOMAIN+Domain Users"
template homedir = /homes/%D/%U # 用来指定为域用户产生主目录。使用变量替换可以使winbind服务把用户主目录设置为/homes/MYDOMAIN/username。
template shell = /bin/bash # 控制samba在哪里寻找域用户的主目录。
而后,管理员须要手工编辑/etc/nsswitch.conf文件,这样winbind能实现使用域上的用户。具体将在7.4.3节介绍。
使用testparm命令检查主配置文件的语法和完整的综合有效设置,确认无识后便可进行下面的krb5.conf配置文件。
7.5.2 krb5.conf配置文件配置示例
在配置ads模式Samba服务器时,/etc/krb5.conf配置文件必须配置的。它是做为Kerberos身份验证模块,可使Samba服务器对Windows AD域有更好的支持。
在 /etc/krb5.conf配置文件主要是配置与域有名的项目,在RedHat Enterprise Linux 5系统中属于包krb5-libs-1.5-17.i386.rpm。打开/etc/krb5.conf配置文件,而后按下面格式进行修改并保存(本示例 域名为lycb.local)。
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = LYCB.LOCAL # 指定默认领域名
dns_lookup_realm = false # 指定无需DNS解析领域请求包
dns_lookup_kdc = ture # 指定容许DNS解析kdc请求包
ticket_lifetime = 24h # 指定Kerberos认证票证有效期
forwardable = yes # 容许转发解析请求
[realms]
LYCB.LOCAL = {
kdc = 172.16.0.1:88 # 指定KDC服务器和KDC服务端口
admin_server = 172.16.0.1:749 # 指定域控制器和管理端口
default_domain = lycb.local # 指定默认域
}
[domain_realm]
.lycb.local = LYCB.LOCAL
lycb.local = LYCB.LOCAL
# 以上两条实际上是设置一个领域搜索范围,并经过这两个语句可使得领域名与大小写无关。
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true # 容许转发请求
krb4_convert = false
}
把以上内容(“#”说明部分无须要粘贴)所有替换原/etc/krb5.conf配置文件中的原有内容并保存。但必定要注意其中各部分的领域名大小写不能写错,哪怕一个字母的大小写错了都不行。这一点很是重要。
这 时咱们能够用kinit命令来测试一下Samba服务器与Windows Server 2003域控制器间的通讯是否正常。后面接一下Windows Server 2003域中已存在并启用的用户帐户便可。如直接用域管理员帐户administrator帐户,则可输入该帐户的如下命令(后面的域名必定要大写):
Kinit administrator@LYCB.COM
正 常状况下会提示你输入administrator帐户的密码,以下所示。若是出现“kinit(v5): Cannot find KDC for requested realm while getting initial credentia”这样的错误提示,则多是上面在administrator@LYCB.COM中的域名部分不是所有大写,或者是你在/etc /krb5.conf配置文件中有关领域名称配置语句中的大小写输入错误,必定要按照本示例,或者默认配置文件那样正确输入大写或小写域名。
[root@sambaserver ~]# kinit administrator@LYCB.LOCAL
Password for administrator@LYCB.LOCAL:
7.5.3 nsswitch.conf配置文件配置示例
Nsswitch.conf 配置文件是用来控制在用户访问Samba服务器时与Windows域中DC中的用户帐户的切换,使用DC中的用户帐户来进行身份验证。 Nsswitch.conf配置文件是在/etc目录下,要配置的内容也很是简单。只须要编辑如下两行语句便可:
passwd: files winbind
group: files winbind
shadow: files winbind
hosts: files dns wins
networks: files dns
protocols: db files
services: db files
ethers: db files
rpc: db files
用“#”符号注释掉全部与上面语句配置不一致的语句,保存配置文件。
7.5.4 把Samba服务器加入到AD域
通 过前面几个配置文件的成功配置,如今就能够把Samba服务器加入到Windows Server 2003域网络中,成中域客户端了。但首先要使用“service smb restart”和“service winbind restart”命令重启smb和winbind服务。而后使用如下命令把Samba服务器加入到域中(此时只能使用有权把客户机加入到域的域用户帐户, 一般是直接使用域管理员帐户administrator)。正常状况下会出现要求你输入管理员帐户的密码,而后过一会就会出现成功加入XXX.XXX领域 的提示,如图7-21就是成功加入到本示例中LYCB.COM领域的提示。
net ads join –U administrator
图7-21 Samba服务器成功加入AD域的提示
一 般来讲若是经过前面用kinit命令对两服务器间通讯的测试,则本步也不会有什么问题。但建议不要在上面的命令中的管理员帐户 administrartor后再加领域尾缀,由于此时在Samba服务器上已创建了与DC上同名且密码同样的administrator帐户了。再加上 领域尾缀,反而可能会出现“SMB Signature verification failed on incoming packet!”这样的错误提示,结果加入不成功。
而后使用“wbinfo –u”能够在Samba服务器上查看域中现有的域用户帐户,使用“wbinfo –g”命令能够查看域中现有的组帐户。若是能列出这些帐户出来(如图7-22所示),证实域加入真正成功了。用“wbinfo –t”命令确认Samba主机账号在AD中正确注册。若是注册成功会有“checking the trust secret via RPC calls succeeded”的提示。
这时咱们能够在Windows Server 2003 DC的“Active Directory用户和计算机”管理单元的“Computers”容器中见到Samba服务器了。如本示例中的Samba服务器NetBIOS名称为 sambaserver,如图7-23所示。这时Samba服务器就至关于AD中的一台客户机,而且已使用了administrator帐户登陆。上一切 正常后就能够在Windows Server 2003域网络中的客户端机访问Samba服务器了。这时Samba服务器成为了域成员了,域用户能够像访问Windows系统域成员主机同样访问 Samba服务器的共享资源了,固然是否能访问这也得得依照相应共享资源的用户访问权限来定。
但是发如今Windows系统域客户端, 或者Linux客户端中访问Samba服务器时出现如图7-24所示的错误提示。看似是因为防火墙阻止了,但是此时Samba服务器上的防火墙关了还不 行,确定再也不与防火墙有关了。此时我在DC上管理这台机时出现不能管理localhost.localhost这台计算机的错误提示。这台Samba服务 器已改为sambaserver.lycb.local了啊,并且在smb.conf主配置文件中也加了“netbios name = sambaserver”这个语句。何况在DC中也正确显示了这个名称啊,为何仍是显示localhost.localhost这个默认的主机名呢?
图7-22 在Samba服务器上列出的域用户和组帐户
图7-23 在DC上见到的Samba服务器
图7-24 在域网络中访问Samba服务器时出现的错误提示
网 上查了好久,都没有找到答案,最终仍是本身想到了前面介绍的lmhosts这个主机文件,打开一看,果真还是“127.0.0.1 hostlocal”这样的设置,把它改为“172.16.3.100 sambaserver.lycb.local”,重启smb进程,再次访问,就再也不有这个错误提示了。直接在“网上邻居”中可见到Samba服务器的共 享资源了(如图7-25所示),连身份验证都不用,由于此时Samba服务器已成为了域成员,全部域用户均可以在其被授予的权限范围内访问所能访问的共享 资源,就像Windows域内其余Windows系统主机同样。
咱们再来打开在本示例中不容许匿名访问,仅容许administrators组成员和alice用户访问的program目录,此时会打开如图7-26所示身份验证对话框。输入账户和密码后即进入到这个共享目录,如图7-27所示。
图7-25 在域网络Windows系统主机上打开的Samba服务器
图7-26 访问非容许匿名访问共享目录时弹出的身份验证对话框 图7-27 进入到的program共享目录