linux加入域后使用ad帐号登录linux终端,图形界面黑屏
请各位大侠帮忙分析,不胜感激!参照网上配置说明,samba成功加入AD域中,可是现在用ad账户登录linux服务器时,图形界面显示黑屏,只有一个鼠标箭头,文字界面可用。切换samba本机上一个用户登录,正常。检查自动创建的域用户目录,发现没有拷贝/etc/skel,于是尝试把这个文件下所有文件cp到该ad用户目录,仍不行。删除该用户目录,重新登录,现象依旧。ad用户目录下没有所谓的.Xauthority文件,于是复制了本机可正常登录用户目录下的.Xauthority文件到域用户目录,更改所有者和组,还是黑屏,再次拷贝/etc/skel下含隐藏文件的全部文件到域用户目录,仍然不行。黑屏状态下鼠标键盘可用,也不是所有用户都无法正常屏显图形界面,感觉是用户文件配置和权限的问题。求高手解答!不胜感激! 没有人知道么?:em16:自己顶一下。 没测试过,应该是环境问题
查一下看看日志,有没有这方面的说明 能具体指导一下么? 帮你顶一下哦 samba 加入到ad域中没测试过,我只测试了samba自己做为pdc来验证登陆的账号。以下资料你可以参考下,比较长
6.4 加入domain(域成员模式)和ADS域模式
ads模式的配置更为复杂,因为它涉及了Windows域网络中的Kerberos身份验证技术,除了需要配置主配置文件smb.conf外,还需要配置用于Kerberos身份认证的配置文件/etc/krb5.conf、用于控制Samba服务器Linux系统账户与Windows域账户交换的/etc/nsswitch.conf文件,还需要使用net ads join -S命令把Samba服务器加入到Windows AD域中。
仍采用上节的两个共享目录:/usr/share和/etc/program,要求使用主机名为lycb-DC1、域名为lycb.local的Windows Server 2003域控制器进行身份验证,允许所有用户对/usr/share共享目录具有只读权限,仅允许administrators组成员对/etc/program共享目录具有写入权限,而其他的用户对/usr/share共享目录具有只读权限。当然首先也要确保Windows Server 2003域网络与Samba服务器处于同一网段。如果不处于同一网段,则要配置好相应的网络路由。另外,在Samba服务器中要用DNS域名格式配置好主机名和域搜索路径。
根据上述要求,可以配置如下Samba服务器主配置文件smb.conf:
1.
2. workgroup = lycb # 指定AD域的NetBIOS名称。
必须有这个语句,否则不能在域网络中搜
3. # 索得到该Samba服务器
4. server string = File Server
5. netbios name = Sambaserver
6. security = ads # 指定Samba服务器的工作模式为ads
7. hosts allow = 172.16. 127.
8. encrypt passwords = yes
9. guest account = alice # 指定alice用户作为来宾访问账户
10. realm = lycb.local # 指定Windows域名(DNS格式)
11. password server = 172.16.0.1 # 指定担当身份
验证服务器的服务器IP地址
12.
13.
14. comment = Home Directories
15. browseable = no
16. writable = yes
17. path = /home/%U
18. valid users = %U
19.
20.
21. comment = All user's share directory
22. path = /usr/share
23. public = no
24. guest ok =yes
25. readonly = yes
26.
27.
28. comment = Program Files
29. path = /etc/program
30. valid users = @administrator alice # 指
定该共享目录仅允许域网络中的administrtors组成员
31. # 和alice用户访问
32. public = no
33. writable = yes
另外,建议在部分使用以下所示配置,使得winbind服务可以列出Samba服务器加入的AD中的所有用户和组信息,确保在windbind服务运行时,可以使用在DC中的用户和组来进行类似文件/目录权限设置以及Samba共享定义等:
1. idmap uid = 15000-20000 # 指定一个uid范围,
该范围内的uid被用来映射Linux用户到
2. # Windows用户SID,而且要确保这个id范围内没有被本地或NIS
3. # 用户占用,在winbind服务启动后,也不能在该ID范围内添加用户
4. idmap gid = 15000-20000 # 指定一个gid范围,该
范围内的gid被用来映射Linux用户到
5. # Windows的组SID,而且要确保这个id范围内没有被本地或NIS
6. # 组占用,在winbind启动以后,也不能在该ID范围内添加新组
7. winbind enum groups = yes # 指定winbind服务
是否能在系统上创建Windows域组。一般情况下
8. # 都要设置为yes,除非你出于某种原因希望关闭该功能
9. winbind enum users = yes # 指定winbind服务
是否能在系统上创建Windows域用户。一般情
10. # 况下都要设置为yes,除非你出于某种原因希望关闭该功能
11. winbind separator = + # 指定一个字符作为分隔符,
winbind将使用该分隔符来分隔用户或组
12. # 名使用该配置将使得域用户表示为"MYDOMAIN+username",域组
13. # 被表示为"MYDOMAIN+Domain Users"
14. template homedir = /homes/%D/%U # 用来指定为域
用户产生主目录。使用变量替换可使winbind
15. # 服务把用户主目录设置为/homes/MYDOMAIN/username
16. template shell = /bin/bash # 控制Samba在哪里寻找域用户的主目录
然后,管理员需要手动编辑/etc/nsswitch.conf文件,这样winbind能实现使用域上的用户。具体将在7.5.3节介绍。
使用testparm命令检查主配置文件的语法和完整的综合有效设置,确认无误后即可进行下面的krb5.conf配置文件配置。
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):
1.
2.
3. default = FILE:/var/log/krb5libs.log
4. kdc = FILE:/var/log/krb5kdc.log
5. admin_server = FILE:/var/log/kadmind.log
6.
7.
8.
9. default_realm = LYCB.LOCAL # 指定默认域名
10. dns_lookup_realm = false # 指定无需
DNS解析域请求包
11. dns_lookup_kdc = ture # 指定允许
DNS解析kdc请求包
12. ticket_lifetime = 24h # 指定Kerberos认证票证有效期
13. forwardable = yes # 允许转发解析请求
14.
15.
16.
17. LYCB.LOCAL = {
18. kdc = 172.16.0.1:88 # 指定kdc服
务器和kdc服务端口
19. admin_server = 172.16.0.1:749 # 指定域
控制器和管理端口
20. default_domain = lycb.local # 指定默认域
21. }
22.
23.
24.
25. .lycb.local = LYCB.LOCAL
26. lycb.local = LYCB.LOCAL
27.
28. # 以上两条其实是设置一个域搜索范围,并通过这两个语句可以
使得域名与大小写无关
29.
30.
31. profile = /var/kerberos/krb5kdc/kdc.conf
32.
33.
34. pam = {
35. debug = false
36. ticket_lifetime = 36000
37. renew_lifetime = 36000
38. forwardable = true # 允许转发请求
39. krb4_convert = false
40. }
将以上内容("#"说明部分不需要粘贴)全部替换原/etc/krb5.conf配置文件中的原有内容并保存。但一定要注意其中各部分的领域名大小写不能写错,哪怕一个字母的大小写错了都不行。这一点非常重要。
这时可以用kinit命令来测试一下Samba服务器与Windows Server 2003域控制器间的通信是否正常,后面接一个Windows Server 2003域中已存在并启用的用户账户即可。如直接用域管理员账户administrator账户,则可输入该账户的以下命令(后面的域名一定要大写):
1. kinit administrator@LYCB.COM
正常情况下会提示你输入administrator账户的密码,如下所示:
1. # kinit administrator@LYCB.LOCAL
2. Password for administrator@LYCB.LOCAL:
如果出现"kinit(v5): Cannot find KDC for requested realm while getting initial credentia"这样的错误提示,则可能是上面在administrator@LYCB.COM中的域名部分不是全部大写,或者是你在/etc/krb5.conf配置文件中有关领域名称配置的语句中的大小写输入错误,一定要按照本示例或者默认配置文件那样正确输入大写或小写域名。
nsswitch.conf配置文件配置示例
nsswitch.conf配置文件是用来控制在用户访问Samba服务器时与Windows域中DC中的用户账户的切换,使用DC中的用户账户来进行身份验证。nsswitch.conf配置文件是在/etc目录下,要配置的内容也非常简单,只需要编辑以下几行语句即可:
1. passwd: files winbind
2. group: files winbind
3. shadow: files winbind
4.
5. hosts: files dns wins
6. networks: files dns
7.
8. protocols: db files
9. services: db files
10. ethers: db files
11. rpc: db files
用"#"符号注释掉所有与上面语句配置不一致的语句,保存配置文件。
把Samba服务器加入到AD域
通过前面几个配置文件的成功配置,现在就可以把Samba服务器加入到Windows Server 2003域网络中,成为域客户端了。但首先要使用service smb restart和service winbind restart命令重启smb和winbind服务。然后使用以下命令把Samba服务器加入到域中(此时只能使用有权把客户机加入到域的域用户账户,通常是直接使用域管理员账户administrator):
1. net ads join -U administrator
正常情况下会出现要求你输入管理员账户的密码,然后过一会就会出现成功加入XXX.XXX领域的提示,如图7-22所示就是成功加入到本示例中LYCB.COM领域的提示。
(点击查看大图)图7-22 Samba服务器成功加入AD域的提示
一般来说如果通过了前面用kinit命令对两服务器间通信的测试,则本步也不会有什么问题。但建议不要在上面命令中的管理员账户administrartor后再加领域尾缀,因为此时在Samba服务器上已建立了与DC上同名且密码一样的administrator账户了。再加上领域尾缀,反而可能会出现"SMB Signature verification failed on incoming packet!"这样的错误提示,结果加入不成功。
然后使用wbinfo -u可以在Samba服务器上查看域中现有的域用户账户,使用wbinfo-g命令可以查看域中现有的组账户。如果能列出这些账户(如图7-23所示),则证明域加入真正成功了。用wbinfo -t命令确认Samba主机账号在AD中正确注册。如果注册成功会有"checking the trust secret via RPC calls succeeded"的提示。
(点击查看大图)图7-23 在Samba服务器上列出的域用户和组账户
这时可以在Windows Server 2003 DC的"Active Directory用户和计算机"管理单元控制台的Computers容器中见到Samba服务器。如本示例中的Samba服务器NetBIOS名称为sambaserver,如图7-24所示。这时Samba服务器就相当于AD中的一台客户机,并且已使用了administrator账户登录。一切正常后就可以在Windows Server 2003域网络中的客户端机上访问Samba服务器了。这时Samba服务器成为了域成员,域用户可以像访问Windows系统域成员主机一样访问Samba服务器的共享资源了,当然是否能访问这也得依照相应共享资源的用户访问权限来定。
可是发现在Windows系统域客户端或Linux客户端中访问Samba服务器时会出现如图7-25所示的错误提示。看似是由于防火墙阻止了,可是此时Samba服务器上的防火墙关了还不行,肯定不再与防火墙有关了。此时在DC上管理这台机时出现不能管理localhost.localhost这台计算机的错误提示。这台Samba服务器已改成sambaserver.lycb.local了呀,而且在smb.conf主配置文件中也加了netbios name = sambaserver这个语句,况且在DC中也正确显示了这个名称,那为什么还是显示localhost.localhost这个默认的主机名呢?
(点击查看大图)图7-24 在DC上见到的Samba服务器
(点击查看大图)图7-25 在域网络中访问Samba服务器时出现的错误提示
网上查了很久都没有找到答案,最终还是自己想到了前面介绍的lmhosts这个主机文件,打开一看,果然仍是127.0.0.1 hostlocal这样的设置,把它改成172.16.3.100 sambaserver.lycb.local,重启smb进程,再次访问,就不再有这个错误提示了。直接在"网上邻居"窗口中可以见到Samba服务器的共享资源了(如图7-26所示),连身份验证都不用,因为此时Samba服务器已成为了域成员,所有域用户都可以在其被授予的权限范围内访问所能访问的共享资源,就像Windows域内其他Windows系统主机一样。
(点击查看大图)图7-26 在域网络Windows系统主机上打开的Samba服务器
再来打开在本示例中不允许匿名访问、仅允许administrators组成员和alice用户访问的program目录,此时会打开如图7-27所示的身份验证对话框。输入账户和密码后即进入到这个共享目录,如图7-28所示。
图7-27 访问非允许匿名访问共享
目录时弹出的身份验证对话框
(点击查看大图)图7-28 进入到的program共享目录
至此,本章以命令方式配置Samba服务器的示例就全部介绍完了,至于使用system-config-samba工具在图形界面(如图7-29所示)下配置Samba服务器(当然先必须安装system-config-samba程序包),因篇幅的原因就不作介绍了。况且图形界面配置方式虽然简单,但配置不够灵活,比较少用。
页:
[1]