Tuesday, October 18, 2005

FreeBSD + MS Windows Active Directory 合體技

1. FreeBSD 不能被 AD Server 用 Group Policy 管理
2. FreeBSD 不能用 Group Policy 去管理 AD Client
所以... 這應該不是某些人想像的那種合體 ... (羞~)

FreeBSD (或是其他的 unix 或是那一狗票 linux distributions) 透過 samba 內的 winbind 套件幫忙, 可以把認證的工作交給 AD Server 做. 以往要靠 LDAP Auth 去達成的事情, 現在只要簡單的設定一下 samba config 就可以讓 winbind 執行 Windows RPC call 來達成了.

下面是流程的範例, DOMAIN 就是這個 FreeBSD Server 要加入的 AD 網域 (死微軟, 幹麻用 "domain" 這個會讓人誤解的字...)

# cd /usr/ports/net/samba3 && make config && make all install clean
選 ADS, WINBIND, SYSLOG, UTMP, EXP, POPT.

# cat > /usr/local/etc/smb.conf
[global]
workgroup = DOMAIN
server string = This is a FreeBSD Server not a Windows PC
security = ads
password server = pdc.DOMAIN.local
realm = DOMAIN.LOCAL
socket options = TCP_NODELAY
local master = no
domain master = no
preferred master = no
domain logons = no
wins support = no
dns proxy = no
allow trusted domains = No
idmap backend = idmap_rid:DOMAIN=2000-100000
idmap uid = 2000-100000
idmap gid = 2000-100000
template homedir = /home/%U
template shell = /sbin/nologin
winbind cache time = 3600
winbind nested groups = Yes
winbind use default domain = Yes
^D

# cat >> /etc/rc.conf
winbindd_enable="YES"
^D

# net ads join -U administrator -S pdc.DOMAIN.local
輸入 domain 的 administrator 密碼後會出現下面兩行,
Using short domain name -- DOMAIN
Joined 'FBSD' to realm 'DOMAIN.LOCAL'
且在 AD 中會出現 FBSD 這台電腦.

# cat > /etc/krb5.conf
[realms]
DOMAIN.LOCAL = {
kdc = pdc.DOMAIN.local
}
^D

# /usr/local/etc/rc.d/samba.sh start

測試一下, 看看 winbind 能不能正確 Check shared secret,
# wbinfo -t
如果出現 checking the trust secret via RPC calls succeeded 就表示成功了.

然後看看 winbind 能不能列出 DOMAIN 裡面的群組 (先不要列出 users, 如果很多人會列到睡著),
# wbinfo -g

往下就是要設定 FreeBSD Server 的認證等等透過 winbind 轉去問 AD 的資料, 下次再說囉.

No comments: