茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1734140 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_0146.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2009/1/8 8:05:25

從Windows到Linux遷移之文件服務器(Samba和AD完美結合)

經過在網上查找好多資料,現在終於搞定了Samba的用戶管理由AD 域控制器來執行,也就是說把samba 服務器加入到AD 域中,使之成為AD中的member server,這樣就可以逐步把Windows的文件服務器向linux的(samba)文件服務器進行遷移,(我的目的就是要把WIN往linux上面遷移!呵呵,這樣就是提高服務器的安全性和穩定性,在前期我做過使用desktop OS也換成linux,但是對我來說是可以的,而對大多數非專業人員、或者說企業內部人員,這是很難做到,所以最終可以在資金和安全方面考慮,把企業裡面的服務器換成linux OS,這樣是可以做到的,當然,有人也會說,把AD也換成Samba,不過我還沒有去試過,以後再去試,再說,現在大多數企業環境還是離不開回win吧,呵呵,所以我認為把Samba加入到域是最好的一種方式,以後可以把ISA換成squid,exchange換成sendmail或是qmail等,最終還是要用AD來實現全網統一用戶管理,所以我們要走的路還很長!在chinaunix 上面的已經有高手這樣做到了,看來我要加油)

Samba有兩種方法來動態增加系統用戶帳號

一、添加用戶腳本

使用添加用戶腳本可能是兩種方法裡面最簡單的一種,因為它只需要一個配置選項。

添加用戶腳本這個Samba配置選項可以在/etc/samba/smb.conf文件的[global]項裡使用。

下面是一個示例:

# if you only want the accounts created but do not want the users to have a real

# login shell or their own home directory on the server, use something like this:

# add user script = /usr/sbin/useradd -g smbusers -s /bin/false -d /dev/null -M %u


# if you want to the domain users to have a real login shell and a home directory

# on the server, use something like this instead:

add user script = /usr/sbin/useradd -g smbusers -s /bin/bash %u

對一個連接用戶,如果他成功通過身份認證,並且帳戶在/etc/passwd裡並不存在,添加用戶腳本將為其創建一個系統帳戶。除非被配置成其他的目錄名,用戶主目錄將被創建成/home/<username>。

二、使用Windbind

 詳情參看 《Samba有兩種方法來動態增加系統用戶帳號》

我的實際例:可以參看 http://romexp.blog.163.com/blog/static/3610065200762614516829

1.        實現環境

Fedora 7 + Squid 2.6 + Samba 3.0 + Krb5

2.        軟件包安裝

Samba及Krb5均通過yum安裝最新版本。

3.        Kerberos配置

Win2003系統默認通過Kerberos做身份驗證,Kerberos驗證需要安裝Krb5軟件包。配置文件及測試都很簡單。Krb5的配置文件為/etc/krb5.conf,配置如下

[logging]


 default = FILE:/var/log/krb5libs.log

 kdc = FILE:/var/log/krb5kdc.log

 admin_server = FILE:/var/log/kadmind.log

[libdefaults]

 default_realm = TEST.COM

 dns_lookup_realm = false

 dns_lookup_kdc = false

 ticket_lifetime = 24h

 forwardable = yes

[realms]

 TEST.COM = {

  kdc = 192.168.1.200:88

  admin_server = 192.168.1.200:749

  default_domain = TEST.COM

 }

[domain_realm]

.test.com = TEST.COM

test.com = TEST.COM

[appdefaults]

 pam = {

   debug = false

   ticket_lifetime = 36000

   renew_lifetime = 36000

   forwardable = true

   krb4_convert = false

 }

我使用winbind方法同步AD帳號:

samba.conf配置如下:

[global]:

         workgroup = TEST


         netbios name = fedora

         server string = Samba Server

         security = domain

         password server = win2k3.test.com

         preferred master = no

         domain master = no

         domain logons = no

   idmap uid = 15000-20000

   idmap gid = 15000-20000

   winbind enum groups = yes

   winbind enum users = yes

註:此二行表示為是否在linux下添加AD帳號,只有加了此二行,在使用getent passwd和gentent group才能顯示AD上面的帳號和組

   winbind separator = \

   winbind use default domain = yes  //注意:不要這項就會顯示為AD賬號為 LIONKING/user1,LIONKING/group1 ,用了這個就只顯示user1 group1


   template homedir = /homes/%D/%U 註: 此處為homes而不是home,我在此處就走了很多彎路,當然也可以自己設定在/home/%D/%U

   template shell = /bin/bash

[homes]

         comment = User's Home Directories

        path = /homes/%D/%U   和上面 template homedir的值一樣

        browseable = no

        valid users = %U

特別注意:此二處為一定要是%U,而不能使用%S ,%U 需要的客戶端用戶名即登錄用戶名,而%S是 當前共享名

         writable = yes

這些設置的一個簡單的說明如下:

- idmap uid - 指定一個uid範圍,該範圍內的uid被用來映射UNIX用戶到windows用戶SID,而且要確保這個id範圍內沒有被本地或者NIS用戶佔用,winbind啟動以後,也不能在該ID範圍內添加用戶。

- idmap gid - 指定一個gid範圍,該範圍內的gid被用來映射UNIX用戶到windows的組SID,而且要確保這個id範圍內沒有被本地或者NIS組佔用,winbind啟動以後,也不能在該ID範圍內添加新組。


- winbind enum groups和winbind enum users - 指定winbind是否在系統上創建域的組/用戶,一般情況下都要設置為yes,除非你處於某種原因希望關閉該功能。

- template homedir - 用來指定為域用戶產生主目錄。上面的示例中使用了變量替換,將使得winbind把用戶主目錄設置為/homes/MYDOMAIN/username。

需要注意的是如果希望特定域或者所有域用戶在samba目錄有主目錄,那麼管理員必須手工創建,雖然template homedir控制samba在哪裡尋找域用戶的主目錄,但是不會自動創建,所以要自己手動創建,並設定權限。

然後,管理員需要手工編輯/etc/nsswitch.conf文件,這樣winbind能實現使用域上的用戶。在紅帽知識庫中有其他文章討論該問題。 http://www.redhat.com.cn/kbase/4760.php

使用 net rpc join -S win2k3.test.com -U administrator 把linux主機加入到域中

重新啟動samba

       service smb restart

同時winbind也要重新啟動。

service winbind restart

 確認Samba主機帳號在AD中正確註冊

root# wbinfo –t

checking the trust secret via RPC calls succeeded

說明主機信任已成功建立

使用wbinfo -u 可以列出AD中註冊的帳號信息。Wbinfo –g可以返回AD中的組信息。

配製NSS

Nss為Name Service Switch,控制帳號的驗證。編輯/etc/nsswitch.conf,如下


     passwd: files winbind

    group: files winbind

檢查PDC用戶(組)轉換為本地用戶(組)UID和GIU情況:

      getent passwd

顯示將PDC用戶轉換成系統用戶的GID情況,顯示最後類似如下信息:

      getent group

此時可以看到AD帳號已經加到linux的系統用戶列表中 uid和gid

總結:到目前為止,現在可以用AD的用戶進行samba ,並且home目錄也都可以訪問自己的家目錄了!比如:現在我在AD上新增user2 ,並設定

了password,能後需要在linux下面 mkdir /home/TEST/user2 再使用

# chown 'TEST\user2':'TEST\domain users'  /home/TEST/user2  改變目錄所有者,就可以登錄使用了。

要設定share folds 就可以使用以下代碼:

[user2' Directory]

        comment = user2's Directory

        path = /homes/TEST/user2

        ;browseable = no

        valid users = TEST/user2

        writable = yes


        create mode = 0777

        directory mode = 0777  這二種方式還是需要合用chown 來改變目錄所有者才可以,還要研究!

以上為我使用 samba的winbind來對AD和samba的完美整合,使用用戶腳本方式,我還沒有去研究測試,我是在借鑒別人很多技術分享才得以成功的,當然可能還會有很多紕漏,還請大家多多指正,這也是我要把服務器逐步換為linux OS的第一步!請關注我的blog ( http://romexp.blog.163.com)後續還會有我的第二步。

我的MSN: rome_xp@msn.com

=================================================================================

以下是網友找到的: 批量添加域帳號的文件夾shell腳本
[root@linux2 ~]# vi mknthome.awk
#!/bin/awk
BEGIN {
FS = 「:」
uidmin = 16777000
uidmax = 33550000
}
{
if ($3 >= uidmin && $3 <= uidmax ) {
print 「\nmake directory 「 $6 「\nchown 「 $3 「.」 $4 「 「 S6
system ( 「mkdir -p 「 $6 「 ;chown 「 $3 「.」 $4 「 「 $6 )
}
}

(2) 開始建立家目錄了

[root@linux2 ~]# getent passwd | awk -f mknthome.awk


原文出處: 從Windows到Linux遷移之文件服務器(Samba和AD完美結合) - 深呼吸只為你的日誌 - 網易博客
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|