今天下午没什么事情,就看了些关于如何整合linux samba服务器和Windows AD的文章。其实就是利用linux的winbindd服务来使用Windows AD为Samba进行用户认证。自己在操作的过程中,也遇到了错误,写下来,留个念想吧,:)
一.环境介绍
WINDOWS 2003 SERVER + AD
域名:exchange.umtest.local
ip地址: 192.168.0.117
账户: administrator
密码: R0ck1t
REDHAT AS 4 U4 + Kerbose 5 + Samba 3 (其实都是系统默认安装上的软件包)
机器名: TSM-SC
ip地址:192.168.0.235
账户: root
密码: 123456
二.开始配置
1. Kerberos配置
Win2003系统默认通过Kerberos做身份验证,Kerberos验证需要安装Krb5软件包。配置文件及测试都很简单。Krb5的配置文件为/etc/krb5.conf,配置如下:
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log
[libdefaults] default_realm = EXCHANGE.UMTEST.LOCAL (验证域的realm,必须全部大写) dns_lookup_realm = false dns_lookup_kdc = false
[realms] EXCHANGE.UMTEST.LOCAL = { kdc = 192.168.0.117:88 admin_server=192.168.0.117:749 default_domain = EXCHANGE.UMTEST.LOCAL }
[domain_realm] .exchange.umtest.local = EXCHANGE.UMTEST.LOCAL exchange.umtest.local = EXCHANGE.UMTEST.LOCAL
[kdc] profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false } |
配置完成以后,可以通过kinit工具进行测试,方法如下:
如果配置正确,就会直接返回到shell。
Samba 和 MS AD 的系统时间相差不大于5分钟, 否则会出现下面的错误:
kinit(v5): Clock skew too great while getting initial credentials |
2.Samba的配置
系统默认的配置文件在/etc/samba/smb.conf,如果是从源码包安装的,会在/usr/local/etc/smb.conf。 更改配置文件如下:
[global] workgroup = EXCHANGE (域的NETBIOS名字) netbios name = TSM-SC server string = Samba Server security = ADS (设置为AD验证) realm = EXCHANGE.UMTEST.LOCAL (验证域realm,必须大写) password server = 192.168.0.117 (PDC,这里就是AD服务器) encrypt passwords = yes
os level = 20 dns proxy = no
idmap uid = 10000-20000 idmap gid = 10000-20000 winbind use default domain = yes winbind separator = / winbind enum users = yes winbind enum groups = yes
|
- idmap uid - 指定一个uid范围,该范围内的uid被用来映射UNIX用户到windows用户SID,而且要确保这个id范围内没有被本地或者NIS用户占用,winbind启动以后,也不能在该ID范围内添加用户。
- idmap gid - 指定一个gid范围,该范围内的gid被用来映射UNIX用户到windows的组SID,而且要确保这个id范围内没有被本地或者NIS组占用,winbind启动以后,也不能在该ID范围内添加新组。
- winbind separator - 指定一个字符作为分隔符,winbind将使用该分隔符来用户或组名。使用该配置将使得域用户表示为 "MYDOMAIN+username",域组被表示为"MYDOMAIN+Domain Users"
- winbind enum groups和winbind enum users - 指定winbind是否在系统上创建域的组/用户,一般情况下都要设置为yes,除非你处于某种原因希望关闭该功能
配置完成,你要将Samba加入AD中,命令如下:
然后重新启动samba
3. 配置NSS
Nss为Name Service Switch,控制帐号的验证。编辑/etc/nsswitch.conf,如下
passwd: files winbind
group: files winbind |
配置完成,启动winbind服务,
4. 确认Samba主机帐号在AD中正确注册
使用wbinfo –t验证Samba主机已成功加入AD
# wbinfo –t checking the trust secret via RPC calls succeeded 说明主机信任已成功建立 |
如果得到如下的信息,重新运行一下#winbindd就可以解决
#wbinfo -t checking the trust secret via RPC calls failed error code was (0x0) Could not check secret |
使用wbinfo –u 可以列出AD中注册的帐号信息。Wbinfo –g可以返回AD中的组信息。
用getent passwd 和getent group你可以看到本地服务器及域服务器上所有的用户及组的信息。
好了,到这里你访问samba服务器时,就需要正确输入域名了,形如:EXCHANGE\rwang,输入正确,就可以访问了。
饿死了,胃疼,还是先闪人了,以后再慢慢学习,添加新的东西。
5.解决访问samba时,个人目录的问题
在samba的配置文件中加入如下内容:
[global] template homedir=/homes/%D/%U
[homes] comment = Home Directories path=/homes/%D/%U valid users=%U browseable = no writable = yes |
然后,逐个为用户建立目录并分配权限(这一步是比较麻烦),我们的域是EXCHANGE,为用户hrwang建立目录,方法如下
#mkdir -p /homes/EXCHANGE #cd /homes/EXCHANGE
#mkdir hrwang #chown "EXCHANGE\hrwang":"EXCHANGE\domain users" hrwang |
好了,用service smb restart 重启samba服务,再登陆samba服务器,可以看到除了其它共享的目录外,还有一个自己的目录,而且可以写。