注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 利用IPSec实现网络安全之..
 帮助

samba结合AD实现大型网络方案


2007-11-02 13:11:18
 标签:方案 samba AD   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://eric86.blog.51cto.com/115287/48718
前言:
这文章可能在某些情况下还会有各种的不足,所以我只是作一个抛砖来引玉.希望能和大家讨论这个方案存在的问题与如何解决问题.
 
背景:
在上次的背景之下(见上一文章),管理员发现公司内现有部门不多,但员工数量非常的多.如果按照用户一个一个的去创建用户并用smbpasswd增加samba的登陆用户非常的麻烦.而且公司内已经存在一台windows 2003 server域控制器(建立方法),并且包含所有员工的帐号信息.在此管理员想通过windows 2003 server域控制器的帐号来作为samba的登陆帐号.
 
环境:
 
   Windows 2003 Server  Linux Samba's Server
IP地址   192.168.1.1/24  192.168.1.250/24
DNS  192.168.1.1  192.168.1.1
hostname  gz  rhel
 eric.local  
 
 配置:
一.linux加入到AD域(这步暂时大家先放一下,因为我后面步骤没有使用到.大家先做后面的步骤如果不行在返过来做这一步骤.以前在RHEL AS4的时候,用这步骤是很简单就能成功的,但我用RHEL AS5就不知道为什么怎么都不成了.)
 
#vi /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 = ERIC.LOCAL(验证域的realm,必须全部大写)
dns_lookup_realm = false
dns_lookup_kdb = false

[realms]
ERIC.LOCAL = {
kdc = 192.168.1.1:88 
default_domain = ERIC.LOCAL(缺省域名,同样必须全部大写)
}
[domain_realm] 
.eric.local= ERIC.LOCAL
eric.local = ERIC.LOCAL
 
后面不用修改,省略......

 
做完这里的话就测试一下
#kinit administrator@ERIC.LOCAL            (@ERIC.LOCAL必须大写)
 
输入AD里的administrator密码,如果没有任何的提示.直接返回到shell里的话就表示已经成功了.但这并不代表已经加入了域.继续看下去
 
修改samba的主配置文件
#vi /etc/samba/smb.conf
 
修改以下的内容
workgroup = ERIC        # <-- 这里的 workgroup 见图1就知道填什么了.
realm = ERIC.LOCAL   # <-- 建立的域名称
security = ADS
password server = 192.168.1.1 # <-- windos AD 域控制器的完整主机名。也可以用 IP 地址来代替
 
workgroup的填写内容就在登陆到里显示了!!,图1
 
然后就基本可以了.
启动samba服务
#service smb start
 
同步时钟,加入域必须时差在5分钟内!
#ntpdate 192.168.1.1
 
测试与加入域
 
#net ads join  (在AS4的话用这句很容易就加到域的,但AS5中我怎么都加不到.所以krb5.conf文件就变得似呼没有用了.)
 
#net rpc join -S gz.eric.local -U administrator (如果上句不行就试试这一句,我AS5就是用rpc方式连接域的,功能上没有ADS强.)
 
 
如果能够加入后,在AD域可以在windows 2003 server里看到rhel
 
到这里其实就只是加入域而已,但并不能用AD帐号登陆samba
 
二.将AD帐号同步到linux里.这里要用到一个工具winbind
修改samba的主配置文件
#vi /etc/samba/smb.conf
 
在配置文件中添加以下内容
idmap uid = 10000 - 20000
idmap gid = 10000 - 20000
template shell = /sbin/nologin
template homedir = /home/%D/%U
winbind separator = %
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
encrypt passwords = yes
 
修改以下内容
[home]
         path = /home/%D/%U
         browsable = no
         writable = yes
         create mask = 0664
         directory mask = 0775
 
前面不是看到/home/%D/%U这样的目录吗?我们就要手工去创建这个目录了.不过这里比较麻烦,AD帐号的个人目录必须要工的去创建,而不能说自动的检测是否已存在,不存在自动创建.不知道哪个高手能够说说有什么方法解决,我想到用脚本去做.但还在测试中...大家说说你们的高见
#mkdir /home/ERIC
 
#chmod -R 777 /home/ERIC
 
 
添加winbind写入帐号的信任
#vi /etc/nsswitch.conf
 
修改以下位置
passwd:    files   winbind
shadow:    files   winbind
group:       files   winbind
 
保存然后就重启两个服务
#service smb restart
 
#service winbind start
 
再加入域语句和前面一样,我这就不再写了.
 
加入成功后就测试一下!
#wbinfo -t       #看winbind是否正常运行
 
#wbinfo -u      #看AD用户是否同步过来了
 
 
基本上到这里就已经完成了配置.到windows测试一下吧!
 
 
我先来说一下存在的问题:
1.首先最亟待解决的问题就是AD帐号主目录的自动建立问题,一直想不到好的解决方法.暂时有一个方向是用脚本去实现,还在研究当中.
 
2.net ads join不能够加入域,只能用net rpc join的方法.不知道哪个高人能指点一下.
 
以上是我暂时想到的问题,大家在操作研究中如果发现有什么问题可以提出来大家讨论一下.学习Linux就必须多思考,而不是到处搜索.版本多了,并不一定网上的转载就正确.讨论才是解决的好办法!哈哈

本文出自 “网络实验室” 博客,请务必保留此出处http://eric86.blog.51cto.com/115287/48718





    文章评论
 
2007-11-02 16:37:49
好东东,学习一下,

2007-11-02 21:48:26
很好的案例,希望能看到更多这样的内容

2007-11-03 11:01:53
技术上没有问题.但windows本身有问题,为什么还要网windows上面靠呢?

2007-11-03 11:52:49
因为Linux并没有windows普及,特别是在那些非计算机专业的人.有很多压根就连Linux也不知道是什么.而在Linux下要做到AD上的功能的估计非常难找,我所知道的就只有那么一个RA什么的帐号管理系统.而作为文件服务器,个人觉得如果在windows下的话很容易就把文件服务器搞到中毒,或散播病毒.Linux下的话就比较稳妥的做到本身不中毒,也减少很多潜在问题.

因此AD与SAMBA的结合,我觉得是必要的.提供给员工的是大家熟悉的windows客户端,但服务器就尽量往Linux发展.还有我的是企业内部的应用服务,并不是互联网上的应用服务.

2008-04-30 14:32:43
博主:
你好,我一直碰到一个问题:
wbinfo -a 域用户名%域用户的口令

你执行有成功吗?
我的QQ:418027712,想与你讨论下!!!
怀疑:wbinfo -u 及wbinfo -t我都成功!
但是wbinfo -a不成功,我在网上查了下,有个仁兄与我一样的错?
http://www.mail-archive.com/samba@lists.samba.org/msg71903.html

看后,请回复!谢谢,想与你交流讨论下!

2008-05-04 11:34:23
参照以上作法, 也只能加入到域中, 但无法实现如上所讲的进行帐号同步, 不知为何.

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: