Debian wheezy で samba のパスワードを UNIX のパスワードと同期する

Debian wheezy で samba のパスワードを UNIX のパスワードと同期する

サーバーに samba をインストールし、ユーザーを追加する 2 つの手順を省略するスクリプトを作成しようとしています。例:

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:

1 回目の試行では、UNIX ユーザーはまだ存在しません。

root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.

2 回目の試行、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

そこで、私は今自分自身に問いかけています。

  1. samba パスワードを UNIX パスワードと同期させるにはどうすればよいですか?
  2. 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 の「required」を「requisite」に変更すると、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 またはデフォルトのシステム (common-auth) 認証を使用するその他のサービスを使用してログインするたびに、そのパスワードが Unix パスワードに変更されます。

Samba アカウントをまだ持っていないアカウントで SSH を使用してログインすると、「ユーザーが追加されました」というメッセージが表示されます。

これにより、root 用の Samba アカウントも作成されるため、Samba で root アクセスを無効にする必要がある場合があります (Debian Etch ではデフォルトで無効になっています)。

/etc/samba/smb.conf:

invalid users = root

警告: ユーザーがパスワードを使用せずに SSH またはその他のサービス経由でログインする場合 (たとえば、公開/秘密キー認証を使用する場合)、これは機能しません。この場合、PAM には Samba パスワードを作成するために必要なプレーンテキスト パスワードがありません。

知らせ: common-password を変更して Samba パスワードの更新も要求すると、Unix パスワードと同じパスワードを持つ既存の Samba アカウントがない限り、現在ログインしているユーザーは、再ログインするまで「passwd」を使用してパスワードを変更できなくなります。

サンバ -> Unix

パスワードを変更するときに PAM を使用するように Samba に指示します。

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

/etc/init.d/samba restart を使用して Samba を再起動します。

@include common-password を追加して、Samba によるパスワード変更をサポートするように PAM を設定します。

samba のディレクトリ

@include common-auth
@include common-account
@include common-session
@include common-password

これは、Samba を使用するときに、"passwd" を使用する場合と同じメカニズムを使用してパスワードを変更します。つまり、Samba パスワードを変更する前に、Unix パスワードを更新する必要があります。

新しいユーザーの作成

エラーを回避するには chpasswd を使用します。

# useradd test
# echo “test:newpass” | chpasswd

関連情報