web-dev-qa-db-ja.com

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 manページが表示されます。

   -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.

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パスワードはどこに保存されますか?

誰かが私を啓発するのを手伝ってくれる?

11
Oz123

さて...ミッシングリンクは:

 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

10
Oz123

以前の回答についてコメントしたかったが、評判の点でコメントできなかった。この回答に完全なコンテンツを載せようとしましたが、スパムのように見えたため、できませんでした。 ここ はウェイバックマシン上の完全なコンテンツへのアクセスであり、以下は主なポイントの簡単なバージョンです。

Debian EtchでのUnixとSambaのパスワード同期

次のパッケージをインストールします。

# apt-get install libpam-smbpass smbclient

Unix-> Samba

ユーザーが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ユーザーがまだ存在しない場合は作成され、ユーザーがデフォルトのシステム(common-auth)認証を使用するSSHまたはその他のサービスを使用してログインするたびに、そのパスワードがUnixパスワードに変更されます。

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

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

/etc/samba/smb.conf:

invalid users = root

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

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

Samba-> 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を構成します。

/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
3
Joru