用windows操作系统作为文件服务器优点是配置置简单,但是存在不稳定和安全性不高的问题。
samba作为文件服务器主要是和域的集成有点麻烦,我经过一个多星期的试验总算解决了在复杂的网络环境下samba加域的问题。
过程和要注意的事项如下(我用的是centos 5.5):
1.首先当然是该装的软件包要装上,要装哪些,自己去问哥(谷歌)
然后关掉防火墙,或者是打开防火墙中需要打开的端口。
2.配置好网络,尤其是DNS配置! (主DNS要配成域控的IP)。
3.修改/etc/krb5.conf文件,该文件是kerberos的配置文件。(Windows的密码验证用的是这个东西)
下面是我这里改的示意:
(注意这个文件大小写敏感)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = SANY.COM.CN //改成你的域名
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
SANY.COM.CN = { //改成你的域名
kdc = DCEXTEND.SANY.COM.CN:88 //改成你DC的FQDN(GOOGLE一下这是什么)或者是IP,网上说两者没什么区别,仩但我是改成FQDN才加成的。
admin_server = 10.0.3.1:749 //这里建议用ip
default_domain =SANY.COM.CN /改成你的域名,注意和上面的不同.(大小写)
}
[domain_realm]
sany.com.cn = SANY.COM.CN //改成你的域名
.sany.com.cn = SANY.COM.CN //改成你的域名
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
测试配置文件是否有问题:
在这里要注意的小问题就是Linux本地的时间要和DC的时间差问题,我们都知道,在DC上的策略中,时间差允许的范围是5分钟,所以,在运行上述的命令前,最好先同步下Linux和DC的时间:
ntpdate -b 10.0.3.1 //同步为AD的时间
使用命令:kinit (注意大写的部分)
遇到的一些问题:
1)
[root@Gh0st CentOS]# kinit
kinit(v5): Cannot find KDC for requested realm while getting initial credentials
原因:客户端主DNS未指向域控制器
解决:
编辑文件/etc/resolv.conf,将nameserver的值修改成域控制器的IP地址。
2)
kinit(v5): Clock skew too great while getting initial credentials
原因:
客户端与认证服务器的时间差距太大,将客户端与认证服务器的时间同步即可
解决:
安装ntp软件,执行ntpdate –b 10.0.3.1(域控制器的IP),时间被同步
3)
kinit(v5): KDC reply did not match expectations while getting initial credentials
解决:使用大写的域名
4. 配置samba
[global]
workgroup = SANY //域名(左边第一个点的左边部分)
realm = SANY.COM.CN //完整域名
server string = Samba Server //随便
security = ADS //这是模式
password server = 10.0.3.1 //域控的IP
username map = /etc/samba/smbusers
log file = /var/log/samba/%m.log
unix password sync = Yes
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = /etc/printcap
dns proxy = No
; idmap domains = SANY
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
winbind enum groups = yes
winbind enum users = yes
template shell = /bin/bash
winbind separator = / //这个也很重要我试了一下,和后面的用户授权的表达方式相关如:sany/xxxx
winbind use default domain = Yes
guest ok = Yes
cups options = raw
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[① 操作系统] //这些共享为只要是域用户就可以查看
path = /home/it/① 操作系统
[② 标装软件]
path = /home/it/② 标装软件
[③ 资产管理]
path = /home/it/③ 资产管理
[④ 驱动程序]
path = /home/it/④ 驱动程序
[⑤ 工具软件]
path = /home/it/⑤ 工具软件
[内部共享] //这些共享只有指定的这些用户可以查看,并且可以写。
path = /home/it/共享
valid users = SANY/liuj42, SANY/shaosh, SANY/yedx, SANY/dingz, SANY/ip7,itadmin
read only = No
create mask = 0664
directory mask = 0775
[工具]
path = /home/it/工具
valid users = SANY/liuj42, SANY/shaosh, SANY/yedx, SANY/dingz, SANY/ip7,itadmin
read only = No
create mask = 0664
directory mask = 0775
测试配置文件正确性:
[root@localhost ~]# testparm //测试samba配置文件的命令
Loaded services file OK. //语法测试通过
Server role: ROLE_DOMAIN_MEMBER //验证级别为 域成员
Press enter to see a dump of your service definitions //回车将显示起作用的配置
5. 启动相关的服务:
service winbind restar
service smb restart
chkconfig --levels 35 winbind on
chkconfig --levels 35 smb on
6. 将Linux加入Windows域
net rpc join -W @SANY.COM.CN -S DCEXTEND.SANY.COM.CN
-U account //注意变色粗体部分:一定要知道域控的FQDN,不然加会报错,FQDN可以通过nslookup得到:如:nslookup 10.0.3.1
Password:
Joined domain SANY.
8. 修改Linux的密码查找顺序
vi /etc/nsswitch.conf
passwd: files winbind //确定是这样的,网上把winbind放到files前面,经过我测试不行,那样不能正确验证(不能把用户名和密码缓存到本地文件中,后面几个同样,主要是passwd,group)
shadow: files winbind
group: files winbind
netgroup: files winbind
测试:
wbinfo -t //测试域的信任关系
wbinfo -u //查看域用户
wbinfo -g //查看域用户组
修改 /etc/pam.d/system-auth (应该是登录Linux系统本机的验证方式,如果作文文件服务器,不让普通用户登录,不设置应该也可以,我的修改了,但是好像是没有起作用,不过我的域用户不需要登陆到liunx服务器所以没起作用也没关系)
下面我直接给出我的配置文件:
vi /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_winbind.so //这行是我加的
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_winbind.so cached_login use_first_pass
auth required pam_deny.so
account sufficient pam_winbind.so //这行也是我加的
account required pam_unix.so broken_shadow use_first_pass
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_krb5.so
account [default=bad success=ok user_unknown=ignore] pam_winbind.so cached_login
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_krb5.so use_authtok
password sufficient pam_winbind.so cached_login use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_krb5.so
阅读(6975) | 评论(0) | 转发(0) |