Samba: 新しいバージョンの Ubuntu サーバーで /etc/passwd を Samba パスワードにコピーする方法

Samba: 新しいバージョンの Ubuntu サーバーで /etc/passwd を Samba パスワードにコピーする方法

私は、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

将来のインストールのために、上記の質問に対する回答がまだ知りたいので、最も適した回答を受け入れます。

関連情報