Skip to content

Instantly share code, notes, and snippets.

@osamu
Created March 6, 2014 13:03
Show Gist options
  • Save osamu/9389100 to your computer and use it in GitHub Desktop.
Save osamu/9389100 to your computer and use it in GitHub Desktop.
fedora17のpam_ldapでpam_filterが動かないのを調べている
pam_ldap.c
rc = ldap_search_s (session->ld, ssd->base, ssd->scope,
filter, _pam_ldap_attrs, 0, &res);
filter=cn=hogeってすると、以下のようなldapのログがでる
put_filter: "(&(cn=hoge)(cn=hoge)(uid=osamu.matsumoto))"
put_filter: AND
put_filter_list "(cn=hoge)(cn=hoge)(uid=osamu.matsumoto)"
put_filter: "(cn=hoge)"
put_filter: simple
put_simple_filter: "cn=hoge"
put_filter: "(cn=hoge)"
put_filter: simple
put_simple_filter: "cn=hoge"
put_filter: "(uid=osamu.matsumoto)"
put_filter: simple
put_simple_filter: "uid=osamu.matsumoto"
@osamu
Copy link
Author

osamu commented Mar 7, 2014

問題のfilterのところのパースは 設定値を&で2つ追加してしまうという無害な問題はあるけど、
うまくいっていた。

結果、pam_filterでユーザをみつけられていない。

ところが認証が通ってしまう理由は、accountフェーズでのunkown userを許可しているからだった。

pam.d/password-auth

auth        required      pam_ldap.so use_first_pass
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
password    sufficient    pam_ldap.so use_authtok
session     required      pam_ldap.so

user_unkown=bad としておかないと、pam_filterする意味がない。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment