windows网络

使用 Winbind 将 Linux 加入 Windows 域环境

 
标签:
 
 
 
一、介绍
二、NSS
NSS 是 Sun 公司开发用于定义系统中配置文件查找顺序的工具。他的配置文件在 /etc/nsswitch.conf 。通过他我们可以定义系统在登录时通过 Winbind 来获取用户信息,而不只是本地配置文件:/etc/passwd 。
以下是可能出现在 /etc/nsswitch.conf 中的项目:
aliases 邮件别名;
passwd
系统用户;
group
用户组;
shadow
隐蔽口令;
hosts
主机名和 I P 地址;
networks
网络名和号;
protocols
网络协议;
services
端口号和服务名称;
ethers
以太网号;
rpc
远程进程调用的名称和号
netgroup
网内组
在本文中,我们需要修改的是:
passwd 系统用户;
group
用户组;
您需要将这两项修改为:
passwd: files winbind
group: files winbind
个别参考资料将 shadow 也添加了 winbind 参数,我觉得没有必要。
files 表示将从本地文件读取用户、组信息,而 winbind 参数则表示经过 winbind 从域读取用户信息。
三、安装 Samba 配置 Winbind
1. 通过 yum 安装 samba
[root@localhost etc]# yum install samba samba-common
Setting up Install Process
Setting up repositories
update 100% |=========================| 951 B 00:00
base 100% |=========================| 1.1 kB 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for samba-common to pack into transaction set.
samba-common-3.0.10-1.4E. 100% |=========================| 38 kB 00:01
—> Package samba-common.i386 0:3.0.10-1.4E.12.2 set to be updated
—> Downloading header for samba to pack into transaction set.
samba-3.0.10-1.4E.12.2.i3 100% |=========================| 101 kB 00:02
—> Package samba.i386 0:3.0.10-1.4E.12.2 set to be updated
–> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
samba i386 3.0.10-1.4E.12.2 update 13 M
samba-common i386 3.0.10-1.4E.12.2 update 5.0 M
Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 18 M
Is this ok [y/N]: y
2. 检查 Winbind 库文件。
确保系统 lib 目录下已经包含 libnss_winbind.so 库文件。
[root@localhost etc]# ls /usr/lib | grep winbind
libnss_winbind.so
[root@localhost etc]#
3. 配置 Samba
打开 samba 配置文件,/etc/samba/smb.conf 。
vi /etc/samba/smb.conf
我们对 [global] 标签下的内容进行配置:
workgroup = ABC # 你的域名 比如完整域名为:linuxblog.cn ,则 ABC 写 LINUXBLOG。
wins support = yes #开启 wins 服务器支持。
wins server = 192.168.0.1 192.168.0.1 #这里填写你的域控服务器地址,中间以空格分隔。
wins proxy = yes
security = ADS #关于 security level 的详细资料你可以查看 Samba 官方资料。这个选项我见过使用 Domain 的,也见过使用 AD 的。我使用 ADS也是成功的,暂时未搞懂他们的区别。
添加以下内容:
acl compatibility = win2k
idmap uid = 16777216-33554431 #idmap uid
和 idmap gid是设置winbind把win200x域用户、组map成本地用户、组所使用的ID号范围,如果你的用户很多,可以加大这两个值之间的差。
idmap gid = 16777216-33554431
password server = 192.168.0.14 192.168.0.13 192.168.0.23 #解析用户密码的服务器,自然是 DC
map to guest = bad user
guest ok = no
realm = CN.MOBINEX.COM # realm 有域的含义,可能是指定完整域名。
encrypt psswords=cyes
winbind use default domain = yes
template homedir = /home/%D/%U 指定用户目录格式 /home/域名/用户名请手动创建域名目录,并且将其设置为 777。不然域用户无法正常登入主机。
template shell = /bin/bash #指定登入用户使用的 shell
4. 配置 Kerbers
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 = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com:88
admin_server = kerberos.example.com:749
default_domain = example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
最简单的配置方法,就是将 EXAMPLE.COM 全部替换成你的域名(大小写需要保持一致),必要的地方写上IP:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = LINUXBLOG.CN
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
LINUXBLOG.CN = {
kdc = 172.16.89.3:88
admin_server = 172.16.89.3:749
default_domain = linuxblog.cn
}
[domain_realm]
.example.com = LINUXBLOG.CN
example.com = LINUXBLOG.CN
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
5. 加域
在加域之前,一定要将 samba 服务以及 winbind 服务重新启动一下,以便能够加载配置好的参数。
[root@localhost init.d]# service smb restart
Shutting down SMB services: [FAILED]
Shutting down NMB services: [FAILED]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@localhost init.d]# service winbind restart
Shutting down Winbind services: [FAILED]
Starting Winbind services: [ OK ]
(1) 使用 net join 命令加域
net rpc join -S PDC -U Administrator
这只是一个大致的格式,PDC 为域名:LINUXBLOG。net join 的用法很多地方都可以找到,我感兴趣的是另外一款小工具。
(2) 使用 authconfig 将机器加域
执行 authconfig 命令,可以看到如下界面:
 
选择使用 Winbind,使用 MD5 口令,使用 Kerberos,使用 SMB 验证,使用 Winbind 验证。
 
按下一步查看kerberos设置:
 
查看 Winbind 设置,选择加入域,输入帐号密码,按确定。
 
最后点击 Join Domain。
提示你保存配置文件,我们选择“是”。
 
提示输入管理员用户名以及密码:
 
完成加域之后会返回上一层界面,我们点击OK。这时系统会自动重启 Winbind 服务。
 
这时就可以看到域用户的信息了,比如:
[root@localhost init.d]# id Administrator
uid=16777216(administrator) gid=16777216(Domain Users) groups=16777216(Domain Users),16777217,16777218,16777219(Domain Admins),16777220(Enterprise Admins),16777221(Schema Admins),16777222(Group Policy Creator Owners)
[root@localhost init.d]# wbinfo -g
BUILTIN/System Operators
BUILTIN/Replicators
BUILTIN/Guests
BUILTIN/Power Users
BUILTIN/Print Operators
BUILTIN/Administrators
BUILTIN/Account Operators
BUILTIN/Backup Operators
BUILTIN/Users
Domain Computers
Domain Controllers
Schema Admins
Enterprise Admins
Domain Admins
Domain Users
Domain Guests
Group Policy Creator Owners
DnsUpdateProxy
四、配置 PAM
在贴出 PAM 的配置前,先简单说一下为什么要配置 PAM,PAM 到底是干嘛用的。
比如 ssh 默认是读取本地的 passwd 文件来判断用户信息的,但是要让他通过 samba 来获取用户信息,我们怎么做呢?修改 sshd 的源代码?显然这是一个很繁琐的方式。
PAM 解决了这个问题。众多应用程序都提供了和 PAM 的接口。如此一来应用程序便可以不管用户验证方式,而交给 PAM 处理,即 sshd 只认识 PAM 不认识 Winbind,当然可以不认识 passwd 。而具体如何验证,这交给 PAM 去控制了。我们通过修改 PAM 的配置文件达到改变验证模式的目的。
我们通过编辑 /etc/pam.d/sshd 文件来改变 sshd 的用户验证模式,典型的配置文件如下:
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account sufficient /lib/security/pam_winbind.so
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_limits.so
session required /lib/security/pam_mkhomedir.so
session optional /lib/security/pam_console.so
关于配置文件,很多地方都可以找到,或许各个版本有些不同。其实最重要的也就是加入 pam_winbind.so 模块验证方式。
好了,现在你可以通过 ssh 登录域用户了。记住!一定要手动创建 /home/域名且权限为777。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值