
我正在編寫一個腳本來將 linux 使用者密碼複製到 ubuntu 伺服器 10.04 上的 samba。我正在使用帶有 tdbsam 後端的 samba 3。
1) 如何(如果可能)使用 shell 腳本將帳戶(使用者/密碼)從 linux 複製到 samba?
2)如何在我的腳本中找出某個使用者是否在 samba 用戶資料庫中並且有密碼並且被啟動?我需要這個,因為我的腳本運行得更頻繁,並且在後續運行中我需要找出使用者是否已經存在。如果沒有必要,我不會複製或設定密碼或啟動。
這是我的配置的頭部:
[global]
workgroup = WORKGROUP
server string = %h server
security = SHARE
obey pam restrictions = Yes
pam password change = no
passdb backend = tdbsam
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
invalid users = root
hosts allow = 192.168.0.1/24
答案1
samba 密碼檔案和系統影子檔案具有不同的雜湊方案。我相信它們都不是可逆的,因此無法在其中之一之間進行轉換。同步密碼的唯一方法是在密碼更改時根據使用者的輸入同時更新兩個檔案。這就是 unix 密碼同步設定的全部意義。
答案2
我決定暫時切換回 smbpasswd。我決定不同步密碼。我需要一個現在就可以使用的簡單解決方案。
現在這是配置的頭部:
[global]
workgroup = WORKGROUP
security = SHARE
passdb backend = smbpasswd:/etc/samba/smbpasswd
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
這是我將在初始安裝時不時運行的腳本:
USER=samwin
cat /etc/samba/smbpasswd | grep -e "^$USER:"
if [ $? -ne 0 ]; then
echo "Adding Samba user USER:"
smbpasswd -a $USER
else
echo "Samba user $USER already present."
fi
我仍然對上述問題的答案感到好奇,以便將來安裝,我會接受最適合的答案。