woff 發表於 2009-10-2 12:42:29

設定 Samba 認證

 上一小節由於是採取最寬鬆的等級,所以 everybody 都可以存取 Samba。如果您所分享的目錄是希望使用者需經認證程序方能存取,那麼就需做一些調整才行。以下是筆者對整個 samba 認證的設定步驟: [*]建立分享目錄

suse:~ # mkdir /home/authdir 
# 建立認證目錄。

suse:~ # cp /etc/passwd /home/authdir/file 
# 複製 passwd 至 /home/authdir/file 。

suse:~ # chmod 1777 /home/authdir 
# 讓所有人對 authdir 具所有權限,且讓 authdir 有 Sticky bit 的屬性。

suse:~ # chmod 666 /home/authdir/file 
# 讓所有人皆可修改 file 檔案。
[*]設定 smb.conf

suse:~ # vi /etc/samba/smb.conf


   workgroup = workgroup
   server string = Samba Server
   security = user 
    # 使用者在存取 SAMBA 時,需輸入帳號密碼,且是透過此台 SAMBA 做認證。

   netbios name = suse
    encrypt passwords = yes 
    # 在 SAMBA 與 Client 端之間,是以加密方式來傳送密碼。

    smb passwd file = /etc/samba/smbpasswd 
    # 使用者認證時所依據的檔案。
   # 以上兩個參數為預設,所以也可以不做設定。

   hosts allow = 192.168.1.0/24 192.168.5. 
    # 設定允許存取的來源端。


   comment = Authentication
   public = no 
    # 因為要做認證,所以這裡設定為不公開分享。這是預設值。

   path = /home/authdir
    # 分享目錄的實際路徑。

   browseable = yes 
    # 在網芳中,允許看到 Auth 這個分享目錄名稱。這是預設值。

   write list = barry,tina  
    # 設定擁有寫入權限的使用者或群組名單。
      
   valid users = barry,tina
   # 設定能存取此目錄的有效使用者及群組名單。

   create mask = 0600 
    # 設定使用者在該目錄下新增檔案時的預設權限為 600。

   directory mask = 0700 
    # 設定使用者在該目錄下新增目錄時的預設權限為 700。

suse:~ # rcsmb restart
 針對這個範例,稍微補充幾個參數的詳細用法:

http://www.suse.url.tw/picture/icon.jpghosts allow、hosts deny當您只想允許少數來源端做存取時,設定 hosts allow 即可 ﹔若只想拒絕少數來源端做存取,則設定 hosts deny 就行了。如 hosts allow 及 hosts deny 同時做設定時,則會先 allow 再 deny。當來源端符合 hosts allow 的設定,就不再往下比對,否則繼續比對 hosts deny,若是兩者都不符合時,則結果是會被 allow 的。建議您在對來源端做控管時,只設定這兩個參數中的其中一個就行了,這樣也才不容易搞混。
再來就是其設定格式可以使用主機名稱或 IP 位址,之間可用「, 」或空白字元做區隔,比如:
hosts allow = 192.168.10.0/255.255.255.0 , .paching.com.tw http://www.suse.url.tw/picture/icon.jpgbrowseable是否可以在網芳中看到此分享目錄的名稱。若設定成 No,則使用者無法看見此目錄,就好像被隱藏起來一樣。不過如果 Client 事先已經知道此分享目錄名稱時,則可藉由 [開始] → [執行],然後輸入「\\suse\auth」來作存取:
http://www.suse.url.tw/picture/samba7.pnghttp://www.suse.url.tw/picture/icon.jpgwrite list這個參數需要在預設「read-only = yes」的情況下才有效。假使您同時設定了「writable = yes」與「write list」時,那麼當本身具有寫入權限的使用者,其雖未被列在「write list」的名單之中,但這個使用者還是具有寫入權限的。
另外也可以針對群組來設限,只要在群組名稱之前加上「@」即可。比如:
write list = barry,mary,@group01,@group02
而名稱與名稱之間可用「 ,」或空白字元做區隔。http://www.suse.url.tw/picture/icon.jpgvalid users當某個目錄設定此參數時,則只有在列表之中的使用者或群組成員,才可存取這個目錄。至於其設定格式與「write list」相同,不再贅述。
 設定完成後,請重新啟動 SAMBA:

suse:~ # rcsmb restart[*]建立使用者認證資料

 待會兒所建立的認證帳號,必須已經存在於 /etc/passwd 之中才行。至於密碼部分,可設定成與 Linux 系統上的密碼 ( /etc/shadow ) 相同或不同,但不管如何設定,使用者最終還是要以這裡所設定的 Samba 密碼為主。

 建立 Samba 認證資料的指令為 smbpasswd,至於所建立完成後的帳號密碼,則會產生在 /etc/samba/smbpasswd 檔案內,也就是說使用者在做認證時,所依據的就是這個檔案啦。



suse:~ # smbpasswd -a barry
New SMB password :
Retype new SMB password :
Added user barry.

suse:~ # cat /etc/samba/smbpasswd
barry:1000:2A89DBF8EE6DF912AAD3B435B51404EE:782E8614AE676814F2C0A1E5994E09E8:CT-436E9104:
 第一次建立該使用者認證資料時,需加上 -a ( add 之意 ) 參數,爾後想要修改這個使用者的 Samba 密碼,則執行「smbpasswd barry」即可。而當您想把某個使用者從認證檔案中移除時,可執行「smbpasswd -x username」,不然也可以用 vi 進去編輯,直接將該帳號刪除就行了。http://www.suse.url.tw/picture/1775.gif [ homes ] 區段說明

 在 smb.conf 裡,會看到一個 homes 的 section,此乃一個特殊的區段設計,其主要作用是為了讓每個認證進來的使用者都能存取自己的家目錄。請注意,homes 這個名稱請勿隨意更改。至於其它相關說明,請參考以下:
 
   comment = Home Directories
   valid users = %S
   browseable = No
   read only = No
   inherit acls = Yes
 「valid users = %S」,是表示認證進來的使用者會被當成有效的使用者,且在使用者連線成功後,SAMBA 會以使用者的登入帳號名稱作為分享目錄名稱,比如使用者 barry 登入後,就會看到 barry這個分享目錄,因為那個 homes 已經被 barry 名稱取代掉了。

 另外在 區段中,並沒有使用 path 去指定路徑,這沒關係啦,因為系統會自動幫您指定到預設的家目錄位置,當然您也可以改變這個預設的路徑,例如當設定成「path = /userdir/%S」時,則在 barry 登入後,對於 barry 這個分享目錄的實際存取路徑為 /userdir/barry。

 再來是「browseable = No」,這可不是說使用者看不到自己的家目錄噢,因為這裡的 browseable 是繼承 global 裡的設定值 ( global 預設是 browseable = Yes ),也就是說每個使用者都能看到自己的家目錄,但對其它 user 來說,您的家目錄是會被隱藏起來的。

 最後是「inherit acls = Yes」,這是說如果目前的目錄有設定 default acl 的話,則將來在此目錄下所新增的子目錄,其權限會繼承這個目錄的 default acl 設定。另外把這個參數設定成 yes 時,會凌駕在 create mask 及 directory mask 之上,但如果該目錄沒設定 default acl 的話,則不受影響。
http://www.suse.url.tw/picture/1775.gif Client 端測試

 打開網路芳鄰並點選 Suse 主機,此時會出現要求您輸入帳號密碼的對話視窗:http://www.suse.url.tw/picture/samba5.png 認證通過後,就可以看到 Suse 主機所分享的目錄:http://www.suse.url.tw/picture/samba6.png 有留意到多一個 barry 的分享目錄嗎 ? 這就是 區段所帶來的效果。

 另外可嘗試在 Auth 目錄中去新增檔案目錄,並檢視這些檔案目錄的預設權限是不是與 "create mask" 與 "directory mask" 所指定的相同 ? 再來去修改 Auth 目錄下的 file 檔案,看能否成功寫入 ? 萬一練習過程發生問題的話,請再好好檢查一下您相關權限的設定。

steven791014 發表於 2011-8-21 00:53:55

慢慢來,呵呵

yahoopopo 發表於 2011-11-25 00:52:28

謝謝大大的分享啊!

abc18818165 發表於 2011-11-25 00:40:44

我在努力中
頁: [1]
查看完整版本: 設定 Samba 認證