采用 active directory 进行 winbind 验证
1. 描述
这个提示会描述如何设置 CentOS 的验证设置,如让它能使用 Windows Server 来进行验证。我会描述如何在命令行中进项工作。这些命令行的内容可以行简单地改在图像版本中进行。我强烈推荐你阅读关於这方面的 samba 文档,好让你能理解 winbind 如何运作。
|
警告: 这里所提供的指令会重新设置验证的设置。在你未完全明白它们之先,请勿使用。如果你出错,你可能会不能登录你的系统! |
2. 首要条件
在使用 winbind 之先,你必须安装 samba-common 这个组件。
# yum install samba-common
要将 CentOS 这台计算机加入 Windows 的本地,你须要一个有效的本地管理员帐户。
3. 实践它
实际上真正要执行的是这样一个长指令(你须要取替以 $ 起首的符串来配合你的本地设置):
# authconfig \ --update \ --kickstart \ --enablewinbind \ --enablewinbindauth \ --smbsecurity=ads \ --smbworkgroup=$ADSWorkgroup \ --smbrealm=$ADSDomain \ --smbservers=$ADSServer \ --winbindjoin=$AdminUser \ --winbindtemplatehomedir=/home/%U \ --winbindtemplateshell=/bin/bash \ --enablewinbindusedefaultdomain \ --enablelocauthorize
这的确是为数不少的参数,让我们看看它们在做甚么:
- --kickstart 它告诉 authconfig 不要执行任何用户界面(文字界面 或 gtk)
- --enablewinbind 启用通过 winbind 进行 nss 的查询
- --enablewinbindauth 启用通过 winbind 进行验证
- --smbsecurity=ads 设置 samba 的安全性模式为 active directory 模式
- --smbworkgroup= 传统(Windows 2003 Server 前)的域名
- --smbrealm= Active directory 本地(例如:yourcompany.com)
- --smbservers= 一个或多个要采用的 AD 服务器名称。请采用引号来列出多个服务器(例如:"server1 server2 *"),其实 winbind 应该能够自行通过 DNS 断定正确的服务器,但你或许会想设置它们。
- --winbindjoin= 用来验证机器加入本地时用的本地管理员帐户名称。
- --winbindtemplatehomedir=/home/%U 用户的主目录的路径范本。(%U 是 smb.conf 里代表用户名称的符号)
- --winbindtemplateshell=/bin/bash 为用户缺省的指令壳。
--enablelocauthorize 亦会启用对照 /etc/passwd 的本地验证。 重要!
4. 额外参数
- --enablewinbindusedefaultdomain 如果你不加入这个设置,用户名称的格式将会是 WORKGROUPNAME\username。如果你启用它,用户名称将会是较为普遍的 username 格式。
- --enablemkhomedir(只适用於 CentOS 5) 启用 pam_mkhomedir,它会自动在首次登录时创建主目录。这个只会当你使用网络存储器上的中央主目录时才会有用。在 CentOS 4 上你可以手动地修改 pam 的 system-auth 设置,藉以启用 pam_mkhomedirs,但这个文件会在每次执行 authconfig 后重新被创建。
CentOS 内的 pam 采用堆栈方式,因此你可以在这里放置其它验证方法,有关各选项的详情请参阅
# authconfig --help
或者 authconfig 的图像界面。
5. 接著……
当你执行了那个指令后,它会重新写入 pam 的 system-auth 设置,为你进行 net join ads,并要求你提供 --winbindjoin 所指定的本地管理员的口令。之后,它会停用 nscd 及启用 winbindd。如果成功的话,你可以利用 wbinfo 工具来检查 winbind 的现况。要显示用户清单,执行
# wbinfo -u
详情请参阅 wbinfo --help
6. 额外事项
6.1. kerberos 的 keytab
假如你的服务采用 kerberos keytab 档(例如:httpd kerberos 验证),你可以利用 net 这个指令来管理它。要创建一个 keytab 档,你只需执行
# net ads keytab create
要将一个服务加进本地内(例如:HTTP)
# net ads keytab add HTTP
6.2. 限制访问权至某个群组
在 /etc/security/pam_winbind.conf 内,你可以通过 require_membership_of 这个参数来指定某个 windows 组别。一经设置,只有这个组别内的用户才能验证。如果你有其它方法(例如:kerberos 或 ldap)可以成功地验证这些用户,这个限制将不会生效。
6.3. 预定的 userid/groupid 对照
在上述/缺省的设置下,winbind 会在每台机器上以动态形式进行 ActiveDirectory SID 到 unix UID/GID 的对照。当你需要在不同机器上有相同的 UID 时,这样没有帮助。典型的例子就是 NFS。winbind 提供了一个方法利用运算的方式来对照 UID/GID 及 SID。这是通过 idmap 的 rid 后端来达成的。要使用它,你必须以人手方式在 /etc/samba/smb.conf 内的 [global] 部份加入下列数行:
idmap domains = DOMAIN idmap config DOMAIN:backend = rid idmap config DOMAIN:base_rid = 0 idmap config DOMAIN:range = 20000 - 49999
当中 DOMAIN 是你的 ActiveDirectory 本地的 WINS 名称。你也可以将另一个获信任的本地内的用户对照对其它范围。详情请查考 idmap_rid 的文档:http://samba.org/samba/docs/man/manpages-3/idmap_rid.8.html。 在 CentOS 5 下,请确定你在采用以下方式置标的范围外加入上述内容:
#--authconfig--start-line-- .. #--authconfig--end-line--
以避免 authconfig 更改它。
Translation of revision 8