- OpenLDAP(ldapsearchおよびPHPスクリプトを使用)
- 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ユーザーアカウントを一覧表示する必要があります。