Windows的AD在企业中的广泛应用,和Linux的稳定性,我们各取所长,构建一个既方便又安全、稳定的环境。
配置方法一:
Linux在启动级别3, 所有的操作都是在命令行下。
Windows正常环境,升级为AD,同时集成了DNS,提升林功能级别为2003纯模式,林级别为20003 纯模式。
1.在Linux系统中安装相应的软件包
samba-3.0.23c-2
samba-common-3.0.23c-2
samba-client-3.0.23c-2 //samba的相关包
krb5-libs-1.5-17
krb5-workstation-1.5-17
krb5-devel-1.5-17
pam_krb5-2.2.11-1
2.禁用selinux
vi /etc/selinux/config
修改 SELINUX=enforcing (强制)
改成 SELINUX=disable (禁用)
修改iptables
清空iptables规则命令如下:
iptables -F
3. 配置dns
vi /etc/resolve.conf
nameserver 192.168.1.2 //windows DNS服务器的ip地址
4. 修改/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 = A.COM //改成你的域名
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
A.COM = { //改成你的域名
kdc = 192.168.1.2:88 //改成你DC的FQDN或者是IP,两者没什么区别
admin_server = 192.168.1.2:749 //这里建议用ip
default_domain = a.com //改成你的域名,注意和上面的不同.(大小写)
}
[domain_realm]
.example.com = A.COM
example.com = A.COM //接着改
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
测试:
在这里要注意的小问题就是Linux本地的时间要和DC的时间差问题,我们都知道,在DC上的策略中,时间差允许的范围是5分钟,所以,在运行上述的命令前,最好先同步下Linux和DC的时间:
ntpdate -b 192.168.1.2 //同步为AD的时间
使用命令:kinit [email protected] (注意大写的部分)
遇到的一些问题:
1)
[root@Gh0st CentOS]# kinit [email protected]
kinit(v5): Cannot find KDC for requested realm while getting initial credentials
原因:客户端主DNS未指向域控制器
解决:
编辑文件/etc/resolv.conf,将nameserver的值修改成域控制器的IP地址。
2)
[root@Gh0st CentOS]# kinit [email protected]
Password for [email protected]:
kinit(v5): Clock skew too great while getting initial credentials
原因:
客户端与认证服务器的时间差距太大,将客户端与认证服务器的时间同步即可
解决:
安装ntp软件,执行ntpdate –b 192.168.6.37(域控制器的IP),时间被同步
[root@Gh0st CentOS]# ntpdate -b 192.168.6.37
17 Sep 12:32:05 ntpdate[10302]: step time server 192.168.6.37 offset 2537.194742 sec
3)
[root@Gh0st CentOS]# kinit [email protected]
Password for [email protected]:
kinit(v5): KDC reply did not match expectations while getting initial credentials
解决:使用大写的域名
[root@Gh0st CentOS]# kinit [email protected]
Password for [email protected]:
[root@Gh0st CentOS]#
4)net rpc join -W @A.COM -S 192.168.1.50 -U administrator
出现 错误:NT_STATUS_INVALID_COMPUTER_NAME
解决办法:把ip地址改为dc的FQDN即可
5. 配置samba
vi /etc/samba/smb.conf
[global]
workgroup = A //需要加入的域的netbios名,注意是域的netbios名,要大写
netbios name = Linux //本机器的netbios名,有的版本没有这一项会没有这个,
要手动添加
server string = Samba Server //对该服务器的描述
printcap name = /etc/printcap
load printers = yes
cups options = raw
log file = /var/log/samba/%m.log
max log size = 50
security = ads //ads验证方式必须有realm项
realm = A.COM //增加这一行,注意这里是域名.
password server = 192.168.1.2 //这里是DC的FQDN,也可以写ip,但是有时候会出
问题,建议写IP
encrypt passwords = yes //加密在网络上传输的用户密码
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
winbind separator = / //用户的域名和用户名之间的间隔,用什么随你心情
idmap uid = 1000000-2000000
idmap gid = 1000000-2000000 //域用户映射成Linux本地用户时所有的uid和gid范围.
template homedir = /home/%D/%U //与home文件夹中定义的作用相同.两者定义一个就行
template shell = /bin/bash //用户登陆后所使用的shell
winbind use default domain = yes //用户登陆使用默认的域
winbind enum users = yes
winbind enum groups = yes //有人说是自动创建用 getent passwd[group]看到的
用户和组的信息.具体有什么用,我也说不清楚
winbind cache type = x (winbind同步账户时间,可以没有)
[homes]
comment = Home Directories
browseable = no
writable = yes
create mode = 0777
directory mode = 0777 //创建的文件和目录的默认权限
path = /home/%D/%U //用户主目录的相关设置
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
测试:[root@localhost ~]# testparm //测试samba配置文件的命令
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Loaded services file OK. //语法测试通过
Server role: ROLE_DOMAIN_MEMBER //验证级别为 域成员
Press enter to see a dump of your service definitions //回车将显示起作用的配置
[global]
workgroup = A
netbios name = LINUX
realm = A.COM
server string = Samba Server
security = ADS
password server = 192.168.1.2
encrypt passwords = yes
log file = /var/log/samba/%m.log
max log size = 50
dns proxy = no
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /sbin/nologin
winbind separator = /
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
cups options = raw
[homes]
comment = Home Directories
path = /home/%D/%U
read only = no
create mask = 0777
directory mask = 0777
browseable = no
[printers]
comment = All Printers
path = /usr/spool/samba
printable = yes
browseable = no
6. 启动相关的服务:
service winbind restar
service smb restart
chkconfig --levels 35 winbind on
chkconfig --levels 35 smb on
7. 将Linux加入Windows域
net ads join -W A.COM -S dc1(AD的主机名) -U administrator
有时候用net ads join 会不好使,这时候就试试net rpc join 这种方式.
有时候会出现这样的错误信息,解决办法如下:
先停掉winbind和smb服务:
service smb stop
service winbind stop
然后删除下面两个目录里的.tdb文件: /etc/samba 和 /var/cache/samba
据我理解,这些应该是在加入域过程中,产生的一些缓存
文件,但是有时候这些缓存会造成一些错误信息,就象我们刚才看到的那样,删除后,重启服务,让他重新
生成就行了.
重新启动相关的服务,在执行加入域操作。
测试:
wbinfo -t //测试域的信任关系
wbinfo -u //查看域用户
wbinfo -g //查看域用户组
8. 修改Linux的密码查找顺序
vi /etc/nsswitch.conf
修改相关记录
passwd: winbind files
shadow: files winbind
group: winbind files
修改 /etc/pam.d/system-auth (应该是登录Linux系统本机的验证方式,如果作文文件服务器,不让普通用户登录,不设置应该也可以)
vi /etc/pam.d/system-auth
auth sufficient pam_winbind.so //增加这一行
account sufficient pam_winbind.so //增加这一行,注意这两行的位置
9. 建立相关用户文件
修改完毕后,根据上面smb.conf文件的配置,我们就可以实现用户的登陆了,不过还有一点要说明,就是在用户登陆前,必须手动创建他们的登陆主目录,并且赋予他们完全控制的权限.
比如,我想让administrator用户登陆Linux,实现步骤如下:
cd /home
mkdir A
cd A mkdir administrator
chown administrator: administrators administrator //在home目录下创建YANCHUN域目录,并在该目
录下创建要登陆用户administrator的目录,更改目录权限.
这样在终端上就可以实现域用户账户的登陆了.
做到这里,恭喜你Linux和Windows的整合已经完成。
小提示:Linux做文件服务器,没必要让域用户在Linux本地登录。所有[homes]字段可以没有,家目录也可以没有。
此文档由 秘飞虎 (qq:815889476 mail:[email protected]) 花了很长时间,查了好多资料才完成的,如果转载,请保留作者,及联系方式。