debian wheezyでsambaがunixパスワードとパスワードを同期する


11

サーバーに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

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

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


パスワードはのデータベース内に保存されています。パスワードは含まれている/var/lib/samba/と思いますが、secrets.tdb確かではありません。前の質問については、簡単な方法はないと思います。
Zoredache 2012

回答:


10

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

 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
リンクが壊れているため、貴重な情報を回答に入れました:/
ubiquibacon 14

@ubiquibacon私はこの回答を編集して、リンクがWayback Machineからのアーカイブされたバージョンを指すようにしました(インターネットアーカイブの人々によるすばらしい仕事のおかげです)。
Anthony Geoghegan

1
pam_smbpassは廃止されたようです
alex.forencich '18

はい、libpam-smbpassDebian 9.1システムではもう見つけることができません。また、私にとっても機能しません。この単純な質問が何度も尋ねられ、それでも答えがないのはどうしてでしょうか?
フランクブライトリング、2017年

@ Oz123 CentOS7ではどちらもlibpam-winbind見つかりません。
チェンジャン

3

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

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の "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を使用してログインすると、Added userというメッセージが表示されます。

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

/etc/samba/smb.conf:

invalid users = root

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

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

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

pam_smbpassは廃止されたようです
alex.forencich '18

@Joru CentOS7でのsamba 4.9.1のソースコンパイルでは、のファイルはありませんpam_smbpass.so。手伝って頂けますか?リンク:stackoverflow.com/questions/52932070/...
CHENJIAN

@CHENJIAN SAMBA.ORGは、SAMBA 4を使用してソースからpam_smbpass.soを削除しました。したがって、最後のSambaバージョンは、それがsamba 3.9.16であることがわかりました
Axel Werner
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.