歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

巧用Winbind服務來使Window200xPDC為你做認證

  也許你公司的服務器大多是windows200x的,而且已經建了WIN200x的域來對公司的所有機器及用戶做管理,而且這個域工作得很不錯,所有用戶的權限設置的也已經十分的合理。這時你想加一台Linux或BSD的機器進去,來為公司的用戶提供如FTP、samba等服務,因為在linux及BSD下的這些軟件比在windows下的工作效率更高,更安全。你也許會碰到的一個問題是,在每台新架的linux及BSD服務器上都得重新加入很多用戶,設置這些用戶的權限、密碼,如果你公司的員工很多的話,這個活還是很累人的。    但既然已經在域中有了所有用戶的認證信息,為什麼不好好的利用它呢:)。SAMBA3中的winbind服務就為我們提供了這樣的一個途徑。首先你把這linux台服務器加到win200x域中,成為域中的成員服務器,然後用winbind服務把認證信息發給PDC,由PDC來做用戶的認證。只要適當的設置winbind服務、PAM,你就能通過PDC來為你linux或BSD服務器上的ftp、samba、ssh服務來做認證,是不是很不錯呢?  下面是我在redhat7.3上用winbind+PAM實現對sshd、samba服務PDC認證的過程:    1、使用的相關軟件:   samba-3.0.7 pam-0.75-32 (這些軟件的安裝過程我就不講了,參考CU上的相關文件吧.    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) vi /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)vi smb.conf ,在[global]設置中加入下面幾行  # separate domain and username with '/', like DOMAIN+username  winbind separator = /  # use uids from 10000 to 20000 for domain users  idmap uid = 10000-20000  # use gids from 10000 to 20000 for domain groups  idmap gid = 10000-20000  # allow enumeration of winbind users and groups  winbind enum users = yes  winbind enum groups = yes  # give winbind users a real shell (only needed if they have telnet Access)  template homedir = /home/%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,不錯吧。    5)用samba3的net join命令把這台機器加入到windows200x域中  /usr/local/samba/bin/net rpc join -S PDC -U Administrator  然後輸入域管理員密碼,administrator是域管理員帳號。PDC是你的域名,可以用NETBIOS名。    6)啟動winbindd服務  /usr/local/samba/sbin/winbindd    7)用wbinfo 命令查看你用winbindd服務連接PDC抓到的域內的用戶和組的信息。  引用:    [root@LogBack wy]# wbinfo -u  WY/Administrator  WY/Guest  WY/krBTgt  WY/wuying  WY/wy    其中’/’前的是域名,我這是WY,’/’後的是域用戶名。  引用:    [root@LogBack wy]# 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  WY/Domain Admins  WY/Domain Users  WY/Domain Guests  WY/Domain Computers  WY/Domain Controllers  WY/Cert Publishers  WY/Schema Admins  WY/Enterprise Admins  WY/Group Policy Creator Owners  WY/DnsUpdateProxy    其中’/’前的是域名,我這是WY,’/’後的是域組名。  用getnet passwd 和getnet group你可以看到本地服務器及域服務器上所有的用戶及組的信息。  到這兒,我們的工作已經完成一大半了。Winbindd服務已經可以正常工作了:)    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的配置文件:  引用:    [root@LogBack wy]# cat /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/WY/用戶名。/home/WY目錄要手動建,不然是登不進去的。我把這個目錄的權限設成 1777,好處是大家都能寫,但只有屬主可刪,就象/tmp目錄一樣。  再其它機器上用ssh 連看試一下:  引用:    [wy@wy1 RPMS]$ ssh wy/[email protected]  wy/[email protected]'s password:  Last login: Sat Oct 30 19:57:47 2004 from 172.16.130.36  [WY/wuying@LogBack wuying]$ id  uid=10003(WY/wuying) gid=10009(WY/Domain Users) groups=10009(WY/Domain Users)  [WY/wuying@LogBack wuying]$    OK,我們成功了。WY/wuying是“域名/用戶名”的行式,這個域用戶被map成為本地的uid號為1009的用戶。    下面是我的/etc/pam.d/samba的配置文件:  引用:    [root@LogBack wy]# cat /etc/pam.d/samba  #%PAM-1.0  auth required pam_stack.so service=system-auth  account required pam_stack.so service=system-auth    然後vi smb.conf文件,在最後加上  引用:    [ADMshare]  comment = admin dir  path = /home/WY/administrator  valid users = "WY+Domain Admins"  public = no  writable = yes  printable = no  create mask = 0775  Directory mask = 0775    這樣就只有WY域中的Domain Admins組的成員才可以往ADMshare共享中寫東西,是不是好管理多了呢。如果域用戶的密碼更改,我們也不用去每台linux服務器上改密碼了,用winbind去win200XPDC上做認證,他怎麼改都行,方便多了吧。    我這裡只進了winbind和PAM的配置方法,如果大家對其中的一些概念還不明白的話,可以參考一下SAMBA3源碼包samba-3.0.7.tar.gz解開後docs目錄中的pdf文檔。我講的部分都在smaba-HOWTO-collection.pdf文檔的第6及第20章中,相關的概念講解得也不錯,如果哪位高手有時間的話,把這些文檔翻成中文,那真是CU朋友之福了。晚上23:15了,回家喽。




Copyright © Linux教程網 All Rights Reserved