歡迎您光臨本站 註冊首頁

用winbind實現用WIN2003 PDC作SAMBA認證

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

用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)

[火星人 ] 用winbind實現用WIN2003 PDC作SAMBA認證已經有458次圍觀

http://coctec.com/docs/service/show-post-32953.html