OpenLDAPを使用したSamba - NT_STATUS_NO_SUCH_USER

OpenLDAPを使用したSamba - NT_STATUS_NO_SUCH_USER
  1. OpenLDAP(ldapsearchおよびPHPスクリプトを使用)
  2. LDAPなしでSambaを使用する

これが私がaccess.log言うことです(私のすべてのSMBデータがダンプされます)。

[2013/02/10 19:41:25, 2] passdb/init_sam_from_ldap(545): Entry found for user: ***<username>***
[2013/02/10 19:41:25, 0] passdb/pdb_get_group_sid: Failed to find Unix account for ***<username>***
[2013/02/10 19:41:25, 1] auth/make_server_info_sam(589):  User ***<username>*** in passdb, but getpwnam() fails!
[2013/02/10 19:41:25, 0] auth/check_sam_security: make_server_info_sam() failed with 'NT_STATUS_NO_SUCH_USER'
[2013/02/10 19:41:25, 2] auth/check_ntlm_password:  Authentication for user [***<username>***] -> [***<username>***] FAILED with error NT_STATUS_NO_SUCH_USER

これは、OpenLDAPデータベースのパスワードハッシュがSambaが受信する必要があると仮定するパスワードハッシュと一致しない場合と同じです。 メモ:間違ったパスワードを入力すると、無効なパスワードと表示されます。このログは、正しい資格情報を使用した完全な認証のためのものです。または少なくともそれが私がしようとしているものです(gnome filebrowser、ユーザー名:ユーザー名、ワークグループ:WORKGROUP、パスワード:プレーンテキストパスワード)

これは私のsmb.confです。

[global]
        unix charset = LOCALE
        netbios name = test
        server string = test
        passdb backend = ldapsam:"ldap://<ip>"
        username map = "/etc/samba/smbusers"
        log level = 2
        syslog = 0
        log file = /var/log/samba/access.log
        max log size = 0
        name resolve order = hosts dns
        load printers = No
        add user script = /usr/bin/smbldap-useradd -m '%u'
        delete user script = /usr/bin/smbldap-userdel '%u'
        add group script = /usr/bin/smbldap-groupadd -p '%g'
        delete group script = /usr/bin/smbldap-groupdel '%g'
        add user to group script = /usr/bin/smbldap-groupmod -m '%g' '%u'
        delete user from group script = /usr/bin/smbldap-groupmod -x '%g' '%u'
        add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
        set primary group script = /usr/bin/smbldap-usermod -g '%g' '%u'
        domain logons = Yes
        domain master = Yes
        wins support = Yes

        ldap admin dn = cn=admin,dc=test,dc=local
        ldap group suffix = ou=Groups
        ldap user suffix = ou=People
        ldap suffix = dc=test,dc=local
        ldap ssl = no
        ldap passwd sync = yes

これは私のldap.confです。

**サーバーがダウンしているためATMがありません**

Wiresharkによると、OpenLDAPは検索時に正しい情報を送信しますが、uid実際にログインすると考えるサンバは何かを言う「単層」私はこれが関連していると思いましたが、これが失敗し、「間違った」データがSambaに再送信される場所です。

Sambaは単にLDAPログインの使用を拒否します。

共有する:

LDAPなしで動作するので、共有に問題はありません! (非LDAP認証を使用している場合でも)


Unixユーザーの追加

これはうまくいきます...共有にアクセスできますが、Sambaに明示的に指示しました。いいえローカル認証を使用してLDAP?を選択しました。

答え1

同様の問題がありました。 sambaはLDAPをバックエンドとして使用しましたが、ドメインログインを許可するにはまだユーザーのローカルUnixアカウントが必要です。

私にとって問題は、/etc/nsswitch.confユーザーアカウントやグループなどを照会するために使用されるデータベースをリストしたファイルでした。使用しているLinuxオペレーティングシステムを指定していないので、Ubuntuがこの問題を解決するために使用した手順を提供します。

まずパッケージをインストールする必要がありますlibnss-ldap

sudo apt-get install libnss-ldap

いくつかの依存関係があり、そのうちの1つは、OpenLDAPサーバーのACLが匿名検索をブロックしている場合は、このパッケージの構成中にLDAPデータベースにアクセスできるアカウントなどのLDAPアカウントを指定する必要がldap-auth-configあります。cn=admin,dc=example,dc=com

次に/etc/nsswitch.confファイルを編集します。以下のように、パスワード、グループ、シャドウの3つの項目に「ldap」を追加します。一部のシステムは「compat」を使用し、他のシステムは「file」を使用するため、最初のビットを維持するだけです。

passwd: compat ldap
group: compat ldap
shadow: compat ldap

変更はすぐに適用されます。次のコマンドを実行して機能していることを確認できますgetent

getent passwd

すべてのローカルおよびLDAPユーザーアカウントを一覧表示する必要があります。

関連情報