Mac OS X 10.6以降でLDAP認証
LDAPサーバを構築してあるので、Macのアカウント管理もLDAPで行うことにした。
その為の設定が以下の通り。
- ドックまたはりんごメニューから「システム環境設定」を開く
- ユーザとグループのアイコンをクリック
- 左下の方にある「ログインオプション」をクリック
- 右下の方にある「ネットワークアカウントサーバ」の欄の「接続」(既に他の設定がされている場合は「編集」)をクリック
- 「ディレクトリユーティリティー」ボタンをクリックして「ディレクトリユーティリティー」を開く
- 「ネットワークアカウントサーバ」が緑ランプになっていればサーバ接続ができている
- 「ネットワークユーザにログインウインドウでログインする事を許可」をチェックして有功にする
コンソールでもユーザ検索を行うことで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コマンドでパーミッション変更しなければならないっぽい。
編集が終わったら元のパーミッションに戻したりでめんどいし、忘れたらセキュリティ的にあれなのでコマンドで実行した。