我在伺服器上安裝了 samba,我正在嘗試編寫一個腳本來省去新增使用者的兩個步驟,例如:
adduser username
smbpasswd -a username
我的smb.conf
狀態:
# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
unix password sync = yes
進一步閱讀使我看到pdbedit
手冊頁,其中指出:
-a This option is used to add a user into the database. This com-
mand needs a user name specified with the -u switch. When adding
a new user, pdbedit will also ask for the password to be used.
Example: pdbedit -a -u sorce
new password:
retype new password
Note
pdbedit does not call the unix password syncronisation script if
unix password sync has been set. It only updates the data in the
Samba user database.
If you wish to add a user and synchronise the password that im-
mediately, use smbpasswd’s -a option.
所以...現在我決定嘗試新增用戶smbpasswd
:
第一次嘗試,unix 用戶仍然不存在:
root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.
第二次嘗試,unix 使用者存在:
root@raspberrypi:/home/pi# useradd mag
root@raspberrypi:/home/pi# smbpasswd -a mag
New SMB password:
Retype new SMB password:
Added user mag.
# switch to user pi, and try to switch to mag
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag
Password:
su: Authentication failure
所以,現在我問自己:
- 如何使 samba 密碼與 unix 密碼同步?
- samba 密碼儲存在哪裡?
有人可以幫助啟發我嗎?
答案1
嗯...缺少的連結是:
libpam-smbpass
因此,安裝此軟體包後,它會按預期工作。網路的長期記憶有時只帶來部分資訊。因此,為了解決這個問題,我在這裡發布正確的連結如何將 samba 密碼與 unix 密碼同步,還有我自己的測試。
root@raspberrypi:/home/pi# passwd mag2
passwd: user 'mag2' does not exist
root@raspberrypi:/home/pi# useradd mag2
root@raspberrypi:/home/pi# echo "mag2:12345" | chpasswd
root@raspberrypi:/home/pi# smbclient -L localhost -U mag2
Enter mag2's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (raspberrypi server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]
Server Comment
--------- -------
RASPBERRYPI raspberrypi server
Workgroup Master
--------- -------
WORKGROUP
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag2
Password:
Added user mag2.
mag2@raspberrypi:/home/pi$
我希望這對其他人有幫助。
2017年更新:
libpam-smbpass
已棄用。看來取代它的是pam_winbindd
。您可以安裝該套件libpam-winbind
來獲取它。然而,這仍然不會將 samba 密碼與您的 UNIX 密碼同步。相反,它允許您使用 Windows 驗證伺服器 (AD) 對 Unix 進行身份驗證。您可以在這裡找到相關資訊:https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
答案2
想要對先前的答案發表評論,但由於缺乏聲譽點而無法評論。試圖將完整內容放在這個答案上,但不能,因為它看起來像垃圾郵件。這裡是回程機上存取完整內容的途徑,以下是要點的簡要版本:
Debian Etch 上的 Unix 和 Samba 密碼同步
安裝以下軟體包:
# apt-get install libpam-smbpass smbclient
Unix -> 桑巴
為了在使用者更改 Unix 密碼時更新 Samba 密碼,請更改
/etc/pam.d/common-password:來自
password required pam_unix.so nullok obscure min=4 max=8 md5
到
password requisite** pam_unix.so nullok obscure min=4 max=8 md5
password required pam_smbpass.so nullok use_authtok try_first_pass
將 pam_unix 的「必要」變更為「必要」將確保如果 Unix 密碼變更失敗,插件的執行會立即結束。
為了使其工作,用戶必須已經擁有 Samba 帳戶,並且他們的 Samba 密碼必須與其 Unix 密碼相符。因為情況不一定如此,所以我們必須改變
/etc/pam.d/common-auth:來自
auth required pam_unix.so nullok_secure
到
auth requisite pam_unix.so nullok_secure
auth optional pam_smbpass.so migrate
這將建立一個 Samba 使用者(如果尚不存在),並在使用者使用 SSH 或使用預設系統(公共驗證)驗證的任何其他服務登入時將其密碼變更為 Unix 密碼。
使用尚未擁有 Samba 帳戶的帳戶使用 SSH 登入時,您應該會看到一條訊息「已新增使用者」。
因為這也會為 root 建立 Samba 帳戶,所以您可能需要在 Samba 中停用 root 存取權(Debian Etch 預設為停用它):
/etc/samba/smb.conf:
invalid users = root
警告:如果使用者在不使用密碼的情況下透過 SSH 或其他服務登入(例如使用公鑰/私鑰身份驗證),這將無法運作。在這種情況下,PAM 將沒有建立 Samba 密碼所需的純文字密碼。
注意:當您修改 common-password 以同時要求更新 Samba 密碼時,任何目前登入的使用者在重新登入之前將無法使用「passwd」更改其密碼,除非他們已經擁有密碼等於的現有 Samba 帳戶他們的 Unix 密碼。
桑巴 -> Unix
我們指示 Samba 在更改密碼時使用 PAM:
/etc/samba/smb.conf:
unix password sync = yes
pam password change = yes
使用 /etc/init.d/samba restart 重新啟動 Samba。
透過新增 @include common-password 設定 PAM 以支援 Samba 變更密碼:
/etc/pam.d/samba:
@include common-auth
@include common-account
@include common-session
@include common-password
當使用 Samba 時,這將使用與使用「passwd」時相同的機制來變更密碼。這表示在嘗試變更 Samba 密碼之前需要更新 Unix 密碼。
建立新用戶
使用 chpasswd 以避免錯誤:
# useradd test
# echo “test:newpass” | chpasswd