Mac OS X 10.6以降でLDAP認証

LDAPサーバを構築してあるので、Macのアカウント管理もLDAPで行うことにした。
その為の設定が以下の通り。

  1. ドックまたはりんごメニューから「システム環境設定」を開く
  2. ユーザとグループのアイコンをクリック
  3. 左下の方にある「ログインオプション」をクリック
  4. 右下の方にある「ネットワークアカウントサーバ」の欄の「接続」(既に他の設定がされている場合は「編集」)をクリック
  5. ディレクトリユーティリティー」ボタンをクリックして「ディレクトリユーティリティー」を開く
    1. 左下鍵マークアイコンをクリックしてロック解除
    2. 管理者アカウントのパスワード入力
    3. 「サービス」内にある一覧から「LDAPv3」を選択して鉛筆アイコンをクリック
      1. 「新規」ボタンをクリック
        1. 「サーバ名またはIPアドレス」項目にLDAPサーバを入力 (ex:ldap.your-domain.com)
        2. 「認証に使用」をチェック
        3. 「続ける」をクリック
      2. 登録したサーバが一覧に表示されるので、選択して「編集」ボタンをクリック
        1. 「接続」タブ内の「設定名」を好きな名称に変更し、必要に応じてSSLを設定
        2. 「検索とマッピング」タブの「このLDAPv3にアクセスする時に使用」を「WFC2307(Unix)」に変更
        3. 「セキュリティ」タブの「クリア・テキスト・パスワードを使用不可にする」をチェック
        4. 「OK」ボタンをクリックして反映させる
      3. 「OK」ボタンをクリックして閉じる
    4. LION以降の場合は「ディレクトリエディタ」アイコンをクリック
    5. 「ノード」を「/LDAPv3/ldap.your-domain.com」に変更し、「表示」を「Users」に変更して登録済みのアカウントが表示されれば設定おk
  6. 「ネットワークアカウントサーバ」が緑ランプになっていればサーバ接続ができている
  7. 「ネットワークユーザにログインウインドウでログインする事を許可」をチェックして有功にする

コンソールでもユーザ検索を行うことでLDAPユーザ情報が取得可能か判定できる。
dscl(ディレクトリクライアント??)コマンドを起動して対話的にコマンドを入力して進める。

# dscl
> ls
> cd LDAPv3/ldap.your-domain.local/Users
> ls
> read ldapuser
  • ls、cdコマンドはbashのコマンドと同様のコマンド
  • read コマンドにアカウント名を渡すと、アカウント情報が表示される

ログオフすれば、LDAPユーザでログイン可能となる。

LION以降で認証できない問題

Reopard(スペルあってるっけ?)では問題無いんだけど・・・
山LionにアップグレードしたらLDAPユーザではログイン出来なくなった。
Lion以降はSambaを実装しないで、Apple独自のアプリを実装した事が原因っぽい。
いろいろ調べていくと、「クリア・テキスト・パスワードを使用不可にする」の設定に関わらず、SASL認証を行ってしまうらしい。
サーバ側がSASL認証に対応しているんだが、APPLE側のバグ??で関係ない箇所でもSASLを実行してしまうとか何とか。(詳しくは不明)

なので、Macでサーバが対応しているSASLの認証プロトコルを無効にする事が必要。
まずはサーバが対応しているSASLを取得

dapsearch -x -h ldap.your-domain.local -b "" -s base "(objectclass=*)" supportedSASLMechanisms

このコマンドでDIGEST-MD5・GSSAPI・CRAM-MD5が返ってきたので、これらを除外する設定をMacに施す。

sudo /usr/libexec/PlistBuddy -c "add ':module operations:ldap:Denied SASL Methods:' string DIGSET-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.your-domain.local.plist
sudo /usr/libexec/PlistBuddy -c "add ':module operations:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.your-domain.local.plist
sudo /usr/libexec/PlistBuddy -c "add ':module operations:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.your-domain.local.plist

このplistファイルはバイナリ形式でテキストエディターでは編集が困難なので、コマンドを使って編集する。
Xcodeがあればopenコマンドで編集する事が可能なのだが、パーミッションの関係で開けない。
sudoコマンド使っても開けないのでchmodコマンドでパーミッション変更しなければならないっぽい。
編集が終わったら元のパーミッションに戻したりでめんどいし、忘れたらセキュリティ的にあれなのでコマンドで実行した。