■ Solaris10 LDAPクライアントの設定 2010/02/19 更新
Solaris10に標準実装されたLDAPクライアントによる、ユーザ認証を構成する。
設定手順
  1. LDAPクライアントの状態確認。
    # svcs \*ldap\*
    STATE STIME FMRI
    online 14:37:33 svc:/network/ldap/client:default

    # svcs -l network/ldap/client:default
    fmri svc:/network/ldap/client:default
    name LDAP client
    有効 true
    状態 online
    next_state none
    state_time 2010年01月22日 (金) 19時37分33秒
    logfile /var/svc/log/network-ldap-client:default.log
    リスタータ svc:/system/svc/restarter:default
    contract_id 144
    dependency require_all/none svc:/system/filesystem/minimal (online)
    dependency require_all/none svc:/network/initial (online)
    #
      
  2. LDAPクライアントの設定シェルを作成。 (こっちのほうが楽なので・・・)
    # vi ldap-cl_setup.sh
    緑:デフォルト、オレンジ:変更箇所
     
    #!/bin/sh
    #
    ldapclient manual \
    -a credentialLevel=proxy \
    -a authenticationMethod=simple \
    -a proxyDN=cn=aaa,dc=bbbb,dc=or,dc=jp \ ※1
    -a proxyPassword=DNpassword \ ※2
    -a defaultSearchBase=dc=bbbb,dc=or,dc=jp \ ※3
    -a defaultSearchScope=sub \
    -a domainName=dc=bbbb,dc=or,dc=jp \ ※4
    -a "defaultServerList=192.168.100.10 192.168.100.20" \ ※5
    -a bindTimeLimit=1 \ ※6
    -a serviceSearchDescriptor=passwd:ou=Users,dc=bbbb,dc=or,dc=jp \ ※7
    -a serviceSearchDescriptor=group:ou=Groups,dc=bbbb,dc=or,dc=jp ※7
    # chmod 700 ldap-cl_setup.sh
    ※1 バインドDNを指定。
    ※2 バインドDNのパスワード (暗号化されて保存される)
    ※3 検索する場所
    ※4 ドメイン名を指定
    ※5 LDAPサーバが2台あるときは、アドレスをスペース区切りで記述しダブルクォーテーションでくくる。
    ※6 LDAPサーバへの接続タイムアウト値を設定、冗長構成の場合は短めに設定する。
    ※7 ユーザ、グループの情報を検索する場所を指定する。 これは、LDAPサーバ側のディレクトリツリー構造に合わせて、
    調整が必要となります。 簡単に言うと、ローカルユーザ情報が書かれている /etc/passwd に相当する、LDAP側の
    情報 (posixAccount) は、このコンテナにありますよ。 また、/etc/group に相当する、LDAP側の情報 (posixGroup) は、
    このコンテナにありますよ。 という感じかな?
     ちなみに、この "serviceSearchDescriptor" を記述しない場合、id -a を実行すると、gid番号は表示されますが、
    所属している他のグループのgid番号やグループ名の情報は表示されません。 特定のグループに属するユーザは
    ssh が 使えるといった仕組みが必要な場合は、考慮するポイントになります。
     
  3. シェルを実行し設定を行う
    # ./ldap-cl_setup.sh
    システムは正常に構成されました ※1

    # ldapclient list
    NS_LDAP_FILE_VERSION= 2.0
    NS_LDAP_BINDDN= cn=aaa,dc=bbbb,dc=or,dc=jp
    NS_LDAP_BINDPASSWD= {NS1}342375afeb345a561cf4049
    NS_LDAP_SERVERS= 192.168.100.10, 192.168.100.20
    NS_LDAP_SEARCH_BASEDN= dc=bbbb,dc=or,dc=jp
    NS_LDAP_AUTH= simple
    NS_LDAP_CACHETTL= 0
    NS_LDAP_CREDENTIAL_LEVEL= proxy
    NS_LDAP_SERVICE_SEARCH_DESC= passwd:ou=Users,dc=bbbb,dc=or,dc=jp
    NS_LDAP_SERVICE_SEARCH_DESC= group:ou=Groups,dc=bbbb,dc=or,dc=jp
    NS_LDAP_BIND_TIME= 1
    #
    ※1 初めて実行する場合は数十秒かかる場合がある。
     
  4. nsswitch.conf の内容を修正する。
    # cp -rp /etc/nsswitch.files /etc/nsswitch.conf
    # vi /etc/nsswitch.conf
    緑:デフォルト、オレンジ:変更箇所
     
    #
    # Copyright 2006 Sun Microsystems, Inc. All rights reserved.
    # Use is subject to license terms.
     :
    省略
     :
    passwd:       files ldap ※1
    group:        files ldap ※1
    hosts:        files dns ※2
     :
    省略
     :
     ldapclientコマンドにより、nsswitch.ldap ファイルが nsswitch.conf に置き換えられます。 nsswitch.conf に記載された全ての情報をLDAPが持っていない場合、不具合が発生する可能性があるので、nsswitch.files を元に必要な部分だけ修正を加えることにします。
    ※1 ログイン認証に使うのであれば、passwd と group に ldap を追加すれば十分。
    ※2 DNS を忘れずに追加しておく。 nsswitch.ldap にある、"ldap [NOTFOUND・・・" のままだと名前解決に問題が・・・。
     
  5. PAMを設定する。
    # vi /etc/pam.conf
    緑:デフォルト、オレンジ:変更箇所
     
    #
    #ident "@(#)pam.conf 1.31 07/12/07 SMI"
    #
    # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
    # Use is subject to license terms.
    #
    # PAM configuration
      :
      省略
      :
    #
    # login service (explicit because of pam_dial_auth)
    #
    login auth requisite pam_authtok_get.so.1
    login auth required pam_dhkeys.so.1
    login auth required pam_unix_cred.so.1
    #login auth required pam_unix_auth.so.1
    login auth sufficient pam_unix_auth.so.1
    login auth required pam_ldap.so.1

    #login auth required pam_dial_auth.so.1
      :
      省略
      :
    #
    # Default definitions for Authentication management
    # Used when service name is not explicitly mentioned for authentication
    #
    other auth requisite pam_authtok_get.so.1
    other auth required pam_dhkeys.so.1
    other auth required pam_unix_cred.so.1
    #other auth required pam_unix_auth.so.1
    other auth sufficient pam_unix_auth.so.1
    other auth required pam_ldap.so.1

    #
    # passwd command (explicit because of a different authentication module)
    #
    #passwd auth required pam_passwd_auth.so.1
    passwd auth sufficient pam_passwd_auth.so.1
    passwd auth required pam_ldap.so.1

      :
      省略
      :
     
  6. 設定の反映と動作確認
    # svcadm refresh svc:/network/ldap/client ※1

    # getent passwd ※2
    root:x:0:0:Super-User:/:/sbin/sh
    daemon:x:1:1::/:
      :
      省略
      :
    userA:x:1000:1000::/home/userA:/bin/bash ※2

    # getent group ※3
    root::0:
    other::1:root
      :
      省略
      :
    userA::1000:
    sales::2000:userA ※3

    # id -a userA ※4
    uid=1000(userA) gid=1000(userA) groups=2000(sales) ※4
    ※1 kill -HUP と同じ動きです。
    ※2 /etc/passwd ファイルの内容+LDAPユーザが表示されていればOK。
    ※3 /etc/group ファイルの内容+LDAPグループが表示されていればOK。
    ※4 そのユーザが所属する全てのグループの gid番号 と グループ名 が表示されていればOK。

その他、コマンド
# ldapclient mod -a "defaultServerList=192.168.10.10" ※1

# ldapclient list ※2

# ldapclient uninit ※3
※1 設定した定義を変更する
※2 設定した定義の一覧を表示する
※3 設定を元に戻す (nsswitch.conf も元の定義に戻る)