passdb backend就是用戶后台的意思。目前有三種后台:smbpasswd、tdbsam和ldapsam。sam應該是security account manager(安全賬戶管理)的簡寫。
1.smbpasswd
passdb backend = smbpasswd
該方式是使用smb自己的工具smbpasswd來給系統用戶(真實用戶或者虛擬用戶)設置一個Samba密碼,客戶端就用這個密碼來訪問Samba的資源。smbpasswd文件默認在/etc/samba目錄下,不過有時候要手工建立該文件。
smbpasswd -a 用戶名 #添加一個samba用戶
smbpasswd -d 用戶名 #禁用一個samba用戶
smbpasswd -e 用戶名 #恢復一個samba用戶
smbpasswd -x 用戶名 #刪除一個samba用戶
2.tdbsam
passdb backend = tdbsam
該方式則是使用一個數據庫文件來建立用戶數據庫。數據庫文件叫passdb.tdb,默認在/etc/samba目錄下。passdb.tdb 用戶數據庫可以使用smbpasswd –a來建立Samba用戶,不過要建立的Samba用戶必須先是系統用戶。我們也可以使用pdbedit命令來建立Samba賬戶並由其pdbedit管 理。
用戶的建立可以先用mksmbpasswd建立一個smppasswd文件,然后用pdbedit將文件里的用戶導入數據庫。
cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd
pdbedit命令的參數很多,我們列出幾個主要的:
pdbedit -i smbpasswd:/etc/samba/smbpasswd
pdbedit -a username:新建Samba賬戶。
pdbedit -x username:刪除Samba賬戶。
pdbedit -L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。
pdbedit -Lv:列出Samba用戶列表的詳細信息。
pdbedit -c “[D]” –u username:暫停該Samba用戶的賬號。
pdbedit -c “[]” –u username:恢復該Samba用戶的賬號。
3.ldapsam
passdb backend = smbpasswd
該方式則是基於LDAP的賬戶管理方式來驗證用戶。首先要建立LDAP服務,然后設置“passdb backend = ldapsam:ldap://LDAP Server”。
注:samba3.x的早期版本默認使用tdb庫也就是smb.conf默認設定為passdb backend = tdbsam,只需要注釋掉該行添加smb passwd file = /etec/samba/smbpasswd即可使用smbpasswd存儲加密密鑰。samba3.5.6更加規范了passdb backend參數的使用,取消了smb passwd file設定,如果簡單注釋掉passdb backend參數,密鑰文件也不會被存儲到smbpasswd。所以很多人說怎么修改smb.conf的配置,smbpasswd文件都無法生成,就算 手工創建,內容也是0字節。
這里只能說samba版本升級了,規則也變化了。現在無論是使用tdb數據庫存儲密鑰還是smbpasswd文本存儲密鑰都要設定相對應的 passdb backend參數。要用傳統的文本方式存儲只需這樣設定passdb backend = smbpasswd:/etc/samba/smbpasswd(后面跟的是絕對路徑)>,不要再畫蛇添足的寫上smb passwd file = /etec/samba/smbpasswd,該參數已經不適用於新版本的samba了。
注意,這里的用戶名必須是linux中存在的用戶,可以使用useradd命令在系統中添加一個用戶,然后再增加一個對應的samba用戶,也 就是一個用戶名使用的是兩套密碼。一個是系統用戶密碼,另一個密碼存儲在/etc/samba/smbpasswd文件中的samba密碼,這樣可以防止 系統用戶密鑰外泄帶來的安全隱患。
除了上面的措施外,samba還提供了一個更安全的方法,用戶名映射功能,這樣做的好處是防止系統內的真實用戶名暴露,在smb.conf中增 加username map = /etc/samba/smbuser設定,再手工建立該文件。username map參數詳解,比如有一個系統用戶名為zyhyt.org,同時我們也設定其為samba的登錄名,雖然是兩套獨立的密碼,但依然告訴了用戶,我系統內 也存在zyhyt.org這個用戶。嚴格的說這也是違背系統安全規則的,不法人士可能會利用該用戶名暴力猜解獲得系統內帳戶權限。samba提供的用戶名 映射功能,只需編輯smbuser文>件,格式為:真實的用戶名 = 映射出的用戶名(隨便自定義);zyhyt.org = nas_guest nas_nobody(可以映射出多個用戶名,注意中間的空格)。設定完成后,我們只需將nas_guest告訴用戶即可,無須擔心真實的 zyhyt.org用戶名暴露。
