LDAPのdnの指定方法について

このQ&Aのポイント
  • LDAPのdnの指定方法について調査した結果、dc属性とc属性のどちらを使用するか迷っている場合があります。
  • 例1ではdc属性を使用し、例2ではc属性を使用することが一般的ですが、どちらを選ぶべきか悩んでいます。
  • また、inetOrgPersonとcountryを併記するldifの記述方法があるか知りたいと思っています。
回答を見る
  • ベストアンサー

LDAPのdnの指定方法について

LDAPを始めて構築している者です。 ユーザ情報を管理するために、openLDAPをインストールしました。 インターネット上にa-company.co.jpというドメインを持っているとします。 dnの指定に、以下の例1ように"dc"属性を用いるのでしょうか。それとも、例2のように"c"属性を用いるのが一般てきなのでしょうか?  例1 dn: ou=people,dc=a-company,dc=co,dc=jp  例2 dn: ou=people,o=a-comapny,c=jp またユーザ情報の管理にinetOrgPersonというObjectClassを使用したいと考えています。 そのため、私自身は、例1を採用したいと思っています。 例1では何かデメリットはありますでしょか? もし例2が一般的な場合、"c"属性を利用するためには、 countryという別のOjectClassを継承する必要があるようです。 以下のように記述するとldapaddする際に異なった種類のオブジェクトを追加できませんというようなエラーが出てしまいます。  dn: uid=xx,ou=people,dc=a-company,dc=co,dc=jp  ClassObect: inetOrgPerson  ClassObect: country  uid: xx 例2が一般的な場合inetOrgPersonとcountry を併記するldifの記述方法はあるのでしょうか? もしあれば教えて頂けると幸いです。 LDAPの構築経験がある方、ぜひご教授お願いいたします。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • aid-u
  • ベストアンサー率75% (22/29)
回答No.1

下記のURLはMIRACLE LINUXの技術情報です。 http://www.miraclelinux.com/technet/document/linux/training/2_7_8.html ここの情報では、例1で示された使い方に近いものとなっているようです。

niko_farm
質問者

お礼

大変参考になりました。 ご回答ありがとうございました。

関連するQ&A

  • ldapのdnについて

    ldapについて勉強を始めたのですが、 基本的な概念のところでつまづいてしまっています。 基本的な内容で恐縮ですが、下記内容についてご教授頂けると助かります。 下記内容のLDIFファイルでldapにエントリを追加するとします。 ------------------- dn: uid=centuser,ou=People,dc=example,dc=com objectClass: person objectClass: organizaitonalPerson objectClass: inetOrgPerson cn: Centuser sn: Centos o: Centos Div. telepohneNumber: 00-1111-2222 mail: centuser@example.com uid: centuser ------------------- ここで何点か質問なのですが、 ■質問1 dnの部分を 「dn: uid=centuser,ou=People,dc=example,dc=com」ではなく、 「dn: cn=Centuser,ou=People,dc=example,dc=com」に変更して 登録することは可能なのでしょうか? ※uid以外の属性もdnに指定できる? ■質問2(質問1がyesの場合) 「dn: uid=centuser,ou=People,dc=example,dc=com」と 「dn: cn=Centuser,ou=People,dc=example,dc=com」の2つを 登録することは可能なのでしょうか? ※dn以外の情報はまったく同じとします 別エントリとして登録可能なのか、重複エラーで登録不可なのか、 どちらになりますでしょうか? ■質問3(質問1がnoの場合) この種類のエントリであれば、この属性(この場合、uid)をdnに指定しなければならない、 といった情報はどこで定義されているのでしょうか? よろしくお願い致します。

  • DirectoryEntryでのLDAP認証

    下記環境で、LDAP認証アプリを作成しております。 LDAPサーバ:Windows 2003R2サーバ クライアント:Windows 7 Pro VB.net 2010 Pro Apache Directory Studio(以降、ADS) を使用し、LDAPサーバに、添付した資料のように uid を追加。 LDAP認証した際に、登録したuidにも関わらず、 「ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。」 となってしまい困っております。 VB.netのソースを下記に記載します。 -------------------- Try drEntry = New DirectoryEntry("LDAP://(LDAPサーバ名):389/uid=hoge,ou=People,dc=maxcrc,dc=com", "ou=People,dc=maxcrc,dc=com","hogepassword", AuthenticationTypes.FastBind) Dim drSearch As New DirectorySearcher() drSearch.ServerTimeLimit = New System.TimeSpan(0, 0, 1000) drSearch.ClientTimeout = New System.TimeSpan(0, 0, 1000) drSearch.SearchRoot = drEntry drSearch.SearchScope = SearchScope.Subtree sResult = drSearch.FindOne MsgBox("ログイン成功") Catch ex As Exception MsgBox("ログイン失敗") End Try ---------------------- drEntry = New DirectoryEntry("LDAP://(LDAPサーバ名):389/uid=hoge,ou=People,dc=maxcrc,dc=com", "cn=manager,dc=maxcrc,dc=com","hogepassword", AuthenticationTypes.FastBind) ou=Peopleを、LDAPサーバー構築時に管理者で作成した cn=manager と変更すると、 ログインできるのですが。。。 DirectoryEntryへの接続文字列の指定の仕方が間違っているのか?はたまた?うーん。。。 そもそもLDAPへの理解がまだ全然足りていない部分もあり、時間も押し迫っていることから 質問させていただくこととなりました。 ADSでみたLDAPの構成と、VBのソースで何か気づかれた点、アドバイス等ありましたら ご指摘のほど、よろしくお願いいたします。

  • LDAP-OS認証 グループによる制限

    LDAP認証の設定がされているLinuxサーバ(CentOS 5.1)へログインする 際に、特定のグループに所属しているユーザのみ許可するにはどうすれ ばよいのでしょうか? ・grp1のldif dn: cn=grp1,ou=Group,ou=People,dc=abc,dc=jp objectClass: posixGroup cn: grp1 gidNumber: 603 memberUid: user1 memberUid: user3 ユーザはuser1、user2、user3の3人がLDAPへ登録されています。 現在は3人ともログインできてしまう。 user1、user3のみログインできるようにしたい。 /etc/ldap.conf のpam_groupdnおよびpam_member_attributeを修正して みましたが挙動は変わりません。 pam_groupdn cn=grp1,ou=Group,ou=People,dc=abc,dc=jp pam_member_attribute memberUid どなたかお知恵をお貸しください。

  • LDAP+Postfix(VirtualDomain)

    いつもお世話になっております。 今回、LDAP+postfix(VirtualDomain)の環境を作成しました。 作成後、Win端末のOutlook2003 でアカウント設定のテストで送受信OKを確認しているのですが、送信されたテストメールがpostfix上で、仮想ユーザー(irina)のメールボックスに振り分け作業の際に最後のパーミッションエラーでこけています。 環境は以下のとおりになります。 <OS> debian Etch <syslog> Aug 14 21:59:58 brownair postfix/virtual[4649]: D0E8715C0AB: to=<irina@test.net>, relay=virtual, delay=0.09, delays=0.07/0/0/0.02, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /home/mail/irina/Maildir/tmp/1218718798.P4649.xxx: Permission denied) <postfixバーチャル設定> virtual_mailbox_domains = test.net virtual_mailbox_base = /home/mail virtual_mailbox_maps = ldap:/etc/postfix/ldap-account.cf virtual_uid_maps = static:510 virtual_gid_maps = static:510 </etc/postfix/ldap-account.cf> server_host = smtp.test.net server_port = 389 timeout = 10 bind = yes bind_dn= cn=Manager,dc=test,dc=net bind_pw = secret search_base = ou=People,dc=test,dc=net query_filter = (mail=%s) result_attribute = uid result_format = %s/Maildir/ scope= sub <irinaユーザ LDAP:DN> dn: uid=irina,ou=People,dc=test,dc=net objectClass: inetOrgPerson uid: irina sn: irina cn: test userPassword: test mail:irina@test.net <ユーザー作成> groupadd -g 510 vmail useradd -u 510 -g vmail -d /home/mail -s /bin/false vmail =================================ここまで syslogを見る限りディレクトリの権限が足らないのだろうということで、 /home/mail/irina/Maildir/tmp/ に、irinaディレクトリより、 [chown -R irina:irina /home/mail/irina] を実行してみましたがだめでした。(postfixにもしてみました。) いろいろ調べてみましたが、ヒットしたページを参考にしましても やはり、該当ユーザーを所有者にするというぐらいしか見つけることが出来ませんでした。 どなたか、対応方法をご存知の方がいらっしゃいましたら ご教授お願いできませんでしょうか。 よろしくお願いします。

  • libpam-ldapについて

    denian(etch)libpam-ldapをapt-getでインストールし以下のように設定しました。 <mokeユーザ内容) dn: cn=moke,ou=People,dc=test,dc=net objectClass: posixAccount objectClass: posixGroup cn: moke uid: moke userPassword: abcdef uidNumber: 1111 gidNumber: 1111 loginShell: /bin/bash homeDirectory: /home/moke gecos: Sample User 設定後ログインの確認をしました。 ただ、そのログインしたユーザー(moke)でpasswdを実行すると 実行できないのです。authログには以下のようなものが計れていました。 <auth.log> pam_ldap: could not open secret file /etc/pam_ldap.secret ログと設定ファイル(pam_ldap.conf)を参考に、pam_ldap.secret作成したのですが、作成後、ログインすら出来なくなってしまいました。 多分このファイルパスワードファイルだと思うのですが、 書き方等がわからないで困っています。 どなたか参考になるページをご存知の方、 もしくは対応方法についてご存知の片が折られましたら ご教授のほうお願いできないでしょうか? よろしくお願いします。

  • Samba + LDAP サーバー構築

    Samba + LDAP サーバーの構築をしています。 Samba、OpenLDAPのインストールと設定が終わりました。 そして、SambaとOpenLDAPの連携設定の為にsmbldap-toolsをインストールして smbldap-populate コマンドを実行しましたがエラーが表示されてうまくいきません。 各設定ファイルを見直しましたが間違いが見つけられずに困っている状況です。 私の知識不足からどの設定が間違っているか見当が付けられません。 『このファイルの設定が怪しい』など知識がある方がいらっしゃれば教えて頂ければ幸いです。 smbldap-populate 実行後に表示される内容は以下の通りです。 --------------------------------------------------------------- # smbldap-populate Populating LDAP directory for domain WORKGROUP (S-1-5-21-1051645101-82821258-4286778913) (using builtin directory structure) entry dc=mesv,dc=hogehoge,dc=jp already exist. adding new entry: ou=,dc=mesv,dc=hogehoge,dc=jp failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 498, <GEN1> line 3. adding new entry: ou=,dc=mesv,dc=hogehoge,dc=jp failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 498, <GEN1> line 4. entry ou=Machine,dc=mesv,dc=hogehoge,dc=jp already exist. entry ou=Idmap,dc=mesv,dc=hogehoge,dc=jp already exist. adding new entry: uid=root,ou=,dc=mesv,dc=hogehoge,dc=jp (長いので省略します) adding new entry: cn=Backup Operators,ou=,dc=mesv,dc=hogehoge,dc=jp failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 498, <GEN1> line 20. adding new entry: cn=Replicators,ou=,dc=mesv,dc=hogehoge,dc=jp failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 498, <GEN1> line 21. entry sambaDomainName=WORKGROUP,dc=mesv,dc=hogehoge,dc=jp already exist. Updating it... Please provide a password for the domain root: /usr/sbin/smbldap-passwd: user root doesn't exist --------------------------------------------------------------- ■ 環境 OS : CentOS

  • LDAP認証によるPfoftpdについて

    Solaris10で、OpenLDAPとProftpdとSun付属のLDAPクライアントで構成された環境で、Windowsから、FFFTPを使ってLDAP認証でログインさせようとしているんですが、うまく行きません。また、Proftpdをinetから起動させているんですが、再起動すると状態がメンテナンスの状態で、オンラインになりません。 Windowsから、SSHを使ってLDAPユーザでログインはできます。教えていたら幸いです。よろしくお願いします。 Proftpd.conf AuthPAM off LDAPServer "192.168.24.52" LDAPAuthBinds on LDAPDNInfo dc=solaristest,dc=com LDAPDoAuth on "ou=People,dc=solaristest,dc=com" LDAPDoGIDLookups on "ou=Group,dc=solaristest,dc=com" LDAPDoUIDLookups on "ou=People,dc=solaristest,dc=com" /etc/nsswitch.conf hosts files ldap svcs -a | grep ftp maintenance 2:09:32 svc:/network/ftp:default Proftpd.log Dec 25 02:07:44 solaris proftpd[1102] solaris (loghost[192.168.24.51]): FTP session opened. Dec 25 02:07:46 solaris proftpd[1102] solaris (loghost[192.168.24.51]): mod_ldap/2.8.20-20090124: pr_ldap_connect(): bind as cn=Manager,dc=solaristest,dc=com failed: Server is unwilling to perform Dec 25 02:07:46 solaris proftpd[1102] solaris (loghost[192.168.24.51]): mod_ldap/2.8.20-20090124: ldap_handle_getgroups(): LDAP search failed: Bad parameter to an ldap routine Dec 25 02:07:48 solaris proftpd[1102] solaris (loghost[192.168.24.51]): mod_ldap/2.8.20-20090124: pr_ldap_connect(): bind as cn=Manager,dc=solaristest,dc=com failed: Server is unwilling to perform Dec 25 02:07:48 solaris proftpd[1102] solaris (loghost[192.168.24.51]): mod_ldap/2.8.20-20090124: ldap_handle_getgroups(): LDAP search failed: Bad parameter to an ldap routine Dec 25 02:07:48 solaris proftpd[1102] solaris (loghost[192.168.24.51]): mod_ldap/2.8.20-20090124: pr_ldap_user_lookup(): LDAP search failed: Bad parameter to an ldap routine Dec 25 02:07:48 solaris proftpd[1102] solaris (loghost[192.168.24.51]): USER hoge: no such user found from loghost [192.168.24.51] to 192.168.24.52:21 Dec 25 02:07:49 solaris proftpd[1102] solaris (loghost[192.168.24.51]): FTP session closed

  • openldapサーバ設定で暗号化の役割

    dn: uid=testuser,ou=People,dc=negabaro,dc=com objectClass: account objectClass: posixAccount uid: testuser cn: testuser userPassword: xx(平文) にするとssh認証失敗 userPassword: {CRYPT}LOyTmj4Yn9D26 <<暗号化して設定するとssh接続可能 loginShell: /bin/bash uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/testuser dn: cn=testuser,ou=Group,dc=negabaro,dc=com objectClass: posixGroup cn: testuser gidNumber: 1000 memberUid: testuser 上記のようなldifファイルをldapサーバにいれてるのですが、 userPasswordの方を平文にするとteratermでssh接続ができません。 暗号化形式でするとteratermでssh接続できます。 というのはteraterm側で特定暗号形式ではないと 接続できないように設定してあるのでしょうか。 (ちなみにteratermでプレインテキストを使ってます。) もしくはldapサーバ側で暗号化関連の設定があるのでしょうか。 質問何用をまとめると、なぜ平文に書くと接続できないなの?です。 もしヒントになる情報がある方、教えていただければありがたいです。

  • perlでactive directoryに登録

    perlスクリプトを使いactive directoryにユーザを登録したいと思っております。 perlもactive directoryも初めてで理解していませんが 仕事でどうしてもやらなくてはならないためどなたかわかる方教えて頂けますと助かります。 環境: windows server 2008R2 active directory 2008 centos 6 やりたいことは、perlを使いactive directoryにユーザ登録をしたいのですが どうやっても登録することができません。 必要なperlモジュールはインストールしてるつもりです。 以下がスクリプトとなります。 =================ここから================== #!/usr/bin/perl use strict; use Net::LDAP; my $ldap_host = 'xxx.xxx.xxx.xxx'; my $bind_dn = 'cn=admin,o=example,c=com'; my $bind_pw = 'password'; my $ldap = Net::LDAP->new( $ldap_host ) or die "$@ $!"; $ldap->bind( $bind_dn, password => $bind_pw ) or die "$@ $!"; $uid = "localuser"; $suffix = ",ou=People,dc=example,dc=com"; $dn = "uid=" . $uid . $suffix; $addResult = $ldap->add( $dn, attr => [ 'cn' => $uid, 'sn' => $uid, 'mail' => $uid . '@example.com', 'uid' => $uid, 'objectClass' => [ 'top', 'person', 'organizationalPerson' ], ] ); if ( $addResult->code == 0 ) { print "added $dn\n"; } else { $ldap->unbind; warn "failed to add entry: ", $addResult->error, "\n"; exit( $addResult->code ); } =================ここまで=================== 上記を実行すると以下のエラーコードが返ってきます。 comment:AcceptSecurityContext error, このエラーについてとあるサイトをみると 「ユーザーは次回ログオン時にパスワード変更が必要」にチェックをいれていると 出力されてしまうとかかれていたのでチェックを外しているのですが結果は同じです。 上記のスクリプトは以下のサイトを参考にして作ったのですが わからない部分があります。 http://d.hatena.ne.jp/askadna/20080326 http://www.knowd.co.jp/yamazaki/index.php?q=node/134 $ldap->addのメソッド?に$dnとattr~~というパラメータを与えているのですが 配列の階層が異なっていますがaddメソッドはこれを認識することはできるのでしょうか。 例えば、 $ldap->addを部分を消して $addResult = ( $dn, attr => [ 'cn' => $uid,  ~以下省略~ 以下のようにprintで表示すると配列の階層はバラバラです。 これでaddは正常に階層をみて動作するのでしょうかということです。 print $addResult[0]・・・・uid=localuser,ou=People,dc=example,dc=com print $addResult[1]・・・・attr print $addResult[1]->[0]・・・・cn print $addResult[1]->[1]・・・・localuser print $addResult[1]->[2]・・・・sn ~~省略~~~ ちなみに、searchメソッドでldapの情報の取得はできています。 少し気になるのはActive directoryに必須項目があり それをattrに格納させていないことが原因だったりするのでしょうか。 Active Directoryの必須項目というのがわかりませんが基本的に例えばSIDなどは システム自動で入れてくれるとおもっていますが・・・ 上記のスクリプトでADにバインドできていることがAD側のログで確認できております。 addでこけているみたいなのですが、どうかよろしくお願い致します。

    • ベストアンサー
    • Perl
  • ldapaddコマンドでエラー

    OpenLDAPの設定をしているのですが、ldapaddコマンドで実行したら下記のエラーが表示されて、うまくいきません。色々、Googleで調べてやったのですが解決できなかったので、教えて頂けたら幸いです。 エラー解決で参考にしたURLhttp://arinux.jugem.jp/?eid=42 /usr/local/bin/ldapadd -f userlist.ldif -x -D "cn=Manager,dc=solaristest,dc=com " -W -h localhost Enter LDAP Password: adding new entry "cn=test,ou=People,dc=solaristest,dc=com" ldap_add: Invalid syntax (21) additional info: objectclass: value #1 invalid per syntax slapd.conf include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema pidfile /usr/local/var/run/slapd.pid argsfile /usr/local/var/run/slapd.args # Load dynamic backend modules: modulepath /usr/local/libexec/openldap moduleload back_bdb.la database bdb suffix "dc=solaristest,dc=com" rootdn "cn=Manager,dc=solaristest,dc=com" rootpw {SSHA}XXXXXXXXXXXXXXXXXXXXX directory /usr/local/var/openldap-data index objectClass eq 基本データベース新規作成 base.ldif dn: dc=solaristest,dc=com objectClass: dcObject objectclass: organization dc: solaristest o: solaristest Corporation dn: cn=Manager, dc=solaristest,dc=com objectClass: organizationalRole cn:Manager dn: ou=People,dc=solaristest,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=solaristest,dc=com objectClass: organizationalUnit ou: Group /usr/local/bin/ldapadd -f base.ldif -x -D "cn=Manager,dc=solaristest,dc=com" -W -h localhost こちらは、エラーなく通っています。 既存ユーザ情報をLDAPサーバーへ登録 MigrationTools使用 migrate_common.phパラーメータの変更 $DEFAULT_MAIL_DOMAIN = "solaristest.com"; $DEFAULT_BASE = "dc=solaristest,dc=com" 一般ユーザ情報抽出 ./migrate_passwd.pl userlist > userlist.ldif userlist.ldif dn: cn=test,ou=People,dc=solaristest,dc=com uid: test cn: test objectclass: inetOrgPerson objectclass: posixAccount objectClass: top objectClass: shadowAccount userPassword:XXXXXXXXXXXXX shadowLastChange: 14575 loginShell: /bin/sh uidNumber: 100 gidNumber: 1 homeDirectory: /export/home/test 以上、よろしくお願いします。