
私は、Ubuntu サーバー 10.04 上の samba に Linux ユーザーのパスワードをコピーするスクリプトを作成しています。tdbsam バックエンドで samba 3 を使用しています。
1) シェル スクリプトを使用して 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
将来のインストールのために、上記の質問に対する回答がまだ知りたいので、最も適した回答を受け入れます。