用winbind實現用WIN2003 PDC作SAMBA認證
1、使用的相關軟體:
samba
Krb
openldap
2、實現方法:
1) 在samba安裝完成後,考貝libnss_winbind.so庫到/lib目錄下
cp ../samba/source/nsswitch/libnss_winbind.so /lib
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
2) 對/etc/nsswitch.conf 做如下修改,使winbind成為passwd及group的認證信息源
passwd: files winbind
shadow: files
group: files winbind
3)用ldconfig命令來使winbind使用libnss_winbind.so庫,這樣就不用重啟機器了,如果不行,就重啟一下機器 。
/sbin/ldconfig -v | grep winbind
4)修改smb.conf ,在設置中加入下面幾行
idmap uid = 15000-20000
idmap gid = 15000-20000
winbind enum groups = yes
winbind enum users = yes
winbind separator = +
winbind use default domain = no
template homedir = /homes/%D/%U
template shell = /bin/bash
winbind separator是域名與用戶名和組名之間的分隔符,我設成』/』, idmap uid 和 idmap gid是設置winbind把win200x域用戶、組map成本地用戶、組所使用的ID號範圍,如果你的用戶很多,可以加大這兩個值之間的差。Template homedir是用戶登錄后的主目錄,我設置成/home/域名/用戶名。Template shell是用戶登錄后的shell,如果你想用PDC給你的sshd做認證,就可以加上這個,給用戶一個shell,不錯吧。
然後再配置 /etc/krb5.conf
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
ticket_lifetime = 24000
default_realm =WIN2K.COM \\域名按按自身需求配置
dns_lookup_realm = false
dns_lookup_kdc = false
WIN2K.COM = {
kdc = 192.168.1.1:88 \\伺服器IP地址按自身需求配置
admin_server = 192.168.1.1:749
default_domain = WIN2K.COM
}
.example.com = WIN2K.COM
example.com = WIN2K.COM
profile = /var/kerberos/krb5kdc/kdc.conf \\將該文件域名配置成你的域名
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
配置samba
修改/etc/samba/smb.conf如下幾行
workgroup = WIN2K.COM
netbios name = linux
server string = linux
realm = WIN2K.COM // 活動目錄伺服器域名
security = ADS // 採用活動目錄認證方式
encrypt passwords = yes // 採用加密的口令
5)修改 PAM認證配置文件/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 /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
auth sufficient /lib/security/$ISA/pam_winbind.so use_first_pass
auth required /lib/security/$ISA/pam_deny.so
account required /lib/security/$ISA/pam_unix.so broken_shadow
account /lib/security/$ISA/pam_winbind.so
account required /lib/security/$ISA/pam_permit.so
password required /lib/security/$ISA/pam_cracklib.so retry=3 type=
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password sufficient /lib/security/$ISA/pam_winbind.so use_authtok
password required /lib/security/$ISA/pam_deny.so
session required /lib/security/$ISA/pam_limits.so
session required /lib/security/$ISA/pam_unix.so
在smb.conf中,winbind已經定義了winbind 分割符,再設置winbind use default domain=no
6)啟動winbindd服務
/usr/local/samba/sbin/winbindd
7)用wbinfo 命令查看你用winbindd服務連接PDC抓到的域內的用戶和組的信息。
用getnet passwd 和getnet group命令你可以看到本地伺服器及域伺服器上所有的用戶及組的信息。
8)到samba-3.0.7的源碼目錄source下,編譯pam_winbind.so認證模塊,CP到/lib/security下:
make nsswitch/pam_winbind.so
cp ../samba/source/nsswitch/pam_winbind.so /lib/security
9)下面是設置PAM了,在設置前請先備份你的/etc/pam.d目錄。如果是設sshd等關建登入服務的PAM,改錯了,可能ssh就登不進去,所以要小心操作。
下面去修改/etc/pam.d/sshd的配置文件:
#%PAM-1.0
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的行是這加進去的,用來做winbind的認證。
含有pam_mkhomedir.so的行也是要加進去的,用來在域用戶登錄時自動給他建立主目錄和登錄腳本,不然你一登錄就會在發現自己在根目錄下。注意,主目錄的路徑是你在smb.conf文件中指定的Template shell變數,我這是/home/域名/用戶名。/home/域名/這個目錄要手動建,不然是登不進去的。把這個目錄的許可權設成 1777,好處是大家都能寫,但只有屬主可刪,就象/tmp目錄一樣。
再其它機器上用ssh 連看試一下:
:
# ssh 域名/用戶名@172.16.130.35
wy/wuying@172.16.130.35's password:
Last login: Sat Oct 30 19:57:47 2004 from 172.16.130.36
$ id
uid=10003(WY/wuying) gid=10009(WY/Domain Users) groups=10009(WY/Domain Users)
OK,我們成功了。WY/wuying是「域名/用戶名」的行式,這個域用戶被map成為本地的uid號為1009的用戶。
再修改/etc/pam.d/samba的配置文件為如下:
# cat /etc/pam.d/samba
#%PAM-1.0
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
這裡只談winbind和PAM的配置方法,可參考SAMBA安裝包中docs目錄中的pdf幫助文檔。
要修改的配置文件有如下幾個:
a. /etc/samba/smb.conf
b. /etc/krb5.conf
c. /var/kerberos/krb5kdc/kdc.conf
d. /etc/nssswitch.conf
e. /etc/pam.d/*
完成後用service smb restart 和service winbind restart 命令重新啟動服務看是否成功。
經過測試我已經成功地用WIN2003的域認證實現到LINUX下的SAMBA認證中。
我是第一次寫文檔的。一定會有些錯漏的地方。希望大家幫忙指正。在配置的過程中我也得到了CU里一些好朋友的大力幫助。才能使我配置成功。。謝謝大家。。公司今天開始放假了。期待過完年後與大家再討論LINUX的相關問題。。
我的MSN是 skygdipwa@hotmail.com
《解決方案》
不知道樓主的方式在freeBSD6下能不能通用.
《解決方案》
請問該如何限制某個組的成員才可以訪問文件共享?
我知道在system-auth可以添加一下一行:
session sufficient pam_succeed_if.so gid=10003
假設AD有一個組: VPN_user, winbind會自動從id range中分配一個空閑的gid給他,
我想知道什麼命令可以查看VPN_user和gid的綁定關係, 另外winbind是不是每次重啟
之後都是動態分配gid的, 能否將該組和某一個gid綁定死? 這樣我才能針對該gid做
限制.
《解決方案》
限制特定AD用戶組訪問共享
很久前的帖子別我翻出來了,呵呵,正好最近也在折騰這些東西。樓上的問題可能早已解決了,關於如何限制某個組的成員可以訪問文件共享的問題,我搜到一些相關的東西:
http://wiki.samba.org/index.php/Samba_%26_Active_Directory
其中這一段:
Authenticating share users and groups against active directory
Yeah, this one took me about a day too.
comment = Directory for storing pictures by jims users
path= /usr/local/pictures
Valid Users =@NETWORK+archival NETWORK+billybob NETWORK+jane
; public=no
writable=yes
browseable=yes
So what has this done? @NETWORK+archival gives any member of the archival group on NETWORK access to this share. NETWORK+billybob NETWORK+jane gives billybob and jane, both single user members of NETWORK, access to this share.
--Nimbius 13:11, 31 October 2006 (CST)