0

nss_ldap を使用して Samba + OpenLDAP をセットアップしようとしています。

Windows7 を Samba スタンドアロン PDC に参加させた後、ドメイン アカウントも /etc/passwd ファイルに追加しないとログインできません。

私は得ます: passdb のユーザーですが、getpwnam() は失敗します!

私が読んだすべてのものはまだ NSS_LDAP の問題を指摘しています。

さらに、/etc/passwd ファイルをクラックして開き、問題のユーザーの行を追加すると、ログインできます。

私はPAMを使用していません。Samba.org サイトごとに必要な 2 つの Windows7 レジストリ アップデートを追加しました。

ソフトウェア スタックは次のとおりです。 Samba 3.5.3 OpenLDAP 2.4.21 nss_ldap 264

考え/提案?

- - - - - - - - - - - - - - - - - アップデート - - - - - - - - -----------------

近くなってる!私の nsswitch.conf にはファイル ldap があったので、順序を逆にすると (現在は ldap ファイル)、奇妙なことが起こりました。前に、SSH でログインできると言いましたが、getent passwd は LDAP とファイルの両方にユーザーをダンプしました。nsswitch.conf の変更、ファイルの前の ldap を行った後、ls などの単純なコマンドに長い時間がかかりました。さらに、次のような nss_ldap エラーを観察しました。

ls: nss_ldap: LDAP サーバーを検索できませんでした - サーバーが利用できません

ls: nss_ldap: LDAP サーバーへのバインドに失敗しました ldap://tsrvr.example.corp: 資格情報が無効です

ldap.conf の rootbinddn 行をコメントアウトすると、これらのエラーはなくなり、getent passwd はすぐに再び機能し始めました。出力の順序も変更されました。ファイル エントリの前に ldap エントリがリストされます。

それでも、私の Windows7 クライアントはドメインにログインせず、同じ Samba エラー メッセージが引き続き表示されます。

passdb でユーザー テストを行うが、getpwnam() が失敗する!

私の smb.conf で、ldapsam:trusted = yes 行を削除しようとしましたが、そうすると、ドメイン認証エラーが発生します。

OpenLDAP で SSL/TLS を使用しておらず、SSL = no 設定を使用しています。ldap.secret ファイル セットもあります。root アカウントで slapd を実行しています。私の rootbinddn は、コメント アウトする前に、uid=root,ou=Users,dc=example,dc=corp の LDAP ルート ユーザーを参照していました。CRYPT を使用する root の userPassword は、bindpw および /etc/shadow のものと一致します。

Samba エラーが発生したときの LDAP ログ アクティビティを見ると、LDAP が Samba クエリに対して正しい結果を返しているように見えます。

6 月 19 日 14:20:14 tsrvr slapd[3803]: conn=1025 op=15 SRCH base="dc=example,dc=corp" scope=2 deref=0 filter="(&(uid=test)(objectClass= sambaSamAccount))" Jun 19 14:20:14 tsrvr slapd[3803]: conn=1025 op=15 SRCH attr=uid uidNumber gidNumber homeDirectory sambaPwdLastSet sambaPwdCanChange sambaPwdMustChange sambaLogonTime sambaLogoffTime sambaKickoffTime cn sn displayName sambaHomeDrive sambaHomePath sambaLogonScript sambaProfilePath description sambaUserWorkstations sambaSID sambaPrimaryGroupSID sambaLMPassword sam baNTPassword sambaDomainName objectClass sambaAcctFlags sambaMungedDial sambaBadPasswordCount sambaBadPasswordTime sambaPasswordHistory modifyTimestamp sambaLogonHours modifyTimestam p uidNumber gidNumber homeDirectory loginShell gecos Jun 19 14:20:14 tsrvr slapd[3803]:conn=1025 op=15 SEARCH RESULT tag=101 err=0 nentries=1 text=

他の提案はありますか?

とても有難い

4

2 に答える 2

2

の問題のようですね/etc/nsswitch.conf。具体的には、passwdおよびgroup行は、compat または file の前に ldap を参照する必要があります。このSamba wiki エントリを見たことがありますか?

于 2010-06-19T02:38:37.933 に答える
0

解決済み!!!!!!!!!!!!

Samba (NMBD、SMBD) と OpenLDAP (SLAPD) を開始するスクリプトがあります。これは、ファイルから構成データを読み取って、特にどのプロセスが既に実行されているか、依存プロセスの開始に失敗したかなどを判断する RC スクリプトです。スクリプトの関連部分のスニペットを次に示します。最後の行は、nsswitch.conf のバージョンを、LDAP ルックアップの使用を指定する場所にコピーします。

while [ $i -lt $MAXPROCS ];
  do
   PID=${PROC[$i]}
   StartProc $PID

   if test $? != 0; then
    echo "!!! Aborting Any Remaining Start-up Processes !!!"
    exit 1
   fi

  i=$(($i+1))
done

 cp /etc/rc.d/pozix/nsswitch.conf.ldap /etc/nsswitch.conf

そして、シャットダウン時に私は次のことをしていました。「noldap」エントリを含む nsswitch.conf ファイルをコピーしたことに注意してください。

while [ $i -lt $MAXPROCS ];
do
  PID=${PROC[$i]}
  StopProc $PID
  i=$(($i+1))
done

cp /etc/rc.d/pozix/nsswitch.conf.noldap /etc/nsswitch.conf

起動シナリオでは、samba は起動前に nsswtich.conf コンテンツに ldap エントリを含める必要があることがわかりました。問題を解決するために私がしたことは次のとおりです。

cp /etc/rc.d/pozix/nsswitch.conf.ldap /etc/nsswitch.conf

while [ $i -lt $MAXPROCS ];
  do
   PID=${PROC[$i]}
   StartProc $PID

   if test $? != 0; then
    cp /etc/rc.d/pozix/nsswitch.conf.noldap /etc/nsswitch.conf
    echo "!!! Aborting Any Remaining Start-up Processes !!!"
    exit 1
   fi

  i=$(($i+1))
done

要約すると、SMBD を開始する方法は、いつ開始するかと同じくらい重要であると思われます。nsswitch.conf に LDAP エントリがないときに SMBD を開始すると、nss_ldap.so にリンクされたバージョンの smbd が実行され、/etc/passwd のみに依存する必要があると考えられます (nsswitch.conf ファイルにそれがすべてである場合)。 SMBD の実行後に nsswitch.conf の内容を変更しても効果はありません。

これが他のシステムビルダーに役立つことを願っています....

于 2010-06-28T18:59:44.470 に答える