8.3. Get Effective Rights 検索の一般的なシナリオ
次の例は、Get Effective Rights 検索をいつ、どのように使用できるかの一般的なシナリオを示しています。
8.3.1. Get Effective Rights 検索の一般的な例 リンクのコピーリンクがクリップボードにコピーされました!
以下は、Get Effective Rights (GER) 検索を使用する必要がある最も一般的なシナリオです。
個人の権利を確認します。ユーザー A が個人エントリーの権限を確認します。たとえば、Ted Morris は自分のエントリーに対して自分が持つ権限を確認します。
例8.1 個人の権限の確認 (ユーザー A からユーザー A)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
-b
オプションにはリクエスターの DN も含まれています。別のユーザーに対する権限を確認します。たとえば、Ted Morris はマネージャーであり、部下の 1 人である Dave Miller のエントリーを確認する必要があります。
例8.2 別のユーザーに対する権限の確認 (ユーザー A からユーザー B)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、Ted Morris は Dave Miller のエントリーに対して、すべての属性の読み取り、検索、比較、変更、削除を実行するための権限を持っています。
ディレクトリーマネージャーとして、あるユーザーが別のユーザーのエントリーに対してす持つ権限を確認します。たとえば、ディレクトリーマネージャーは、Jane Smith がマネージャーとして部下である Ted Morris のエントリーに対して持つ権限を確認します。
例8.3 ディレクトリーマネージャーとして、あるユーザーが別のユーザーに対して持つ権限を確認
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーが権限を持っていない場合、結果には不十分なアクセス権を示すエラーが表示されます。
例8.4 エントリーに対する権限がない場合
ldapsearch -p 389 -h server.example.com -D "uid=dmiller,ou=people,dc=example,dc=com" -W -b "uid=tmorris,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=tmorris,ou=people,dc=example,dc=com' "(objectClass=*)"
# ldapsearch -p 389 -h server.example.com -D "uid=dmiller,ou=people,dc=example,dc=com" -W -b "uid=tmorris,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=tmorris,ou=people,dc=example,dc=com' "(objectClass=*)" ldap_search: Insufficient access ldap_search: additional info: get-effective-rights: requester has no g permission on the entry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自分以外のユーザーが自分のエントリーに対して持つ権限を確認します。たとえば Ted Morris は、Dave Miller が Ted Morris のエントリーに対して持つ権限を確認します。
例8.5 自分以外のユーザーが自分のエントリーに対して持つ権限を確認する場合
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、Dave Miller は、エントリーの DN を表示し、
ou
、givenName
、l
、およびその他の属性の読み取り、検索、比較を実行する権限を持っています。userPassword
属性に対する権限はありません。
8.3.2. 存在しない属性に対する Get Effective Rights 検索の例 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、エントリーの属性には値がありません。Get Effective Rights (GER) 検索でアスタリスク (*
) を使用すると、そのエントリーで使用できるすべての属性が、エントリーに設定されていない属性も含めて返されます。
例8.6 エントリーのすべての属性に対する権限の確認
この例では、secretary
属性は設定されていませんが、それでも GER 検索結果で確認できます。
8.3.3. 特定の属性またはオブジェクトクラスに対する Get Effective Rights 検索の例 リンクのコピーリンクがクリップボードにコピーされました!
このセクションの例は、エントリーのオブジェクトクラスに属する特定の属性、属性セット、およびすべての属性に対する権限を検索する方法を示しています。
Get Effective Rights (GER) 検索結果に、エントリーの特定の属性が一覧表示されます。以下に例を示します。
例8.7 特定の属性の Get Effective Rights 検索結果
Copy to Clipboard Copied! Toggle word wrap Toggle overflow attribute@objectClass 形式を使用した、エントリーのオブジェクトクラスにおける特定の属性の GER 検索。リクエスターは、ディレクトリーマネージャーである必要があります。
例8.8 オブジェクトクラスの特定の属性に対する Get Effective Rights 検索結果
Copy to Clipboard Copied! Toggle word wrap Toggle overflow *@objectClass の形式でアスタリスク (
*
) を使用して、オブジェクトクラスのすべての属性を返すことができます。検索結果には、存在しない属性も含まれます。
8.3.4. 存在しないエントリーの Get Effective Rights 検索の例 リンクのコピーリンクがクリップボードにコピーされました!
この例は、ユーザーのまだ存在しないエントリーに対して、特定のユーザーが持つ権限を確認する方法を示しています。この場合、サーバーによりサブツリー内にテンプレートエントリーが生成され、それに対して Get Effective Rights (GER) を使用できます。存在しないエントリーをチェックする場合、Get Effective Rights (GER) 検索は、指定したオブジェクトクラスを使用して、エントリーのすべての属性を持つテンプレートエントリーを生成することができます。
サーバーがテンプレートエントリーを作成すると、オブジェクトクラス定義の最初の MUST 属性を使用して RDN 属性を作成します。MUST 属性が存在しない場合、サーバーは MAY 属性を使用します。@objectclass:rdn_attribute の形式で RDN 値をオブジェクトクラスに渡して指定します。
たとえば、RDN として uidNumber
を持つ、存在しない POSIX エントリーの scarter
の権利を確認するには、以下を実行します。
例8.9 存在しないエントリーに対する権限の確認
ldapsearch -D "cn=Directory Manager" -W -b "ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" @posixaccount:uidnumber
# ldapsearch -D "cn=Directory Manager" -W -b "ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" @posixaccount:uidnumber
dn: uidNumber=template_posixaccount_objectclass,ou=people,dc=example,dc=com
entryLevelRights: v
attributeLevelRights: description:rsc, gecos:rsc, loginShell:rsc, userPassword:rsc, objectClass:rsc, homeDirectory:rsc, gidNumber:rsc, uidNumber:rsc, uid:rsc, cn:rsc
8.3.5. 操作属性の Get Effective Rights 検索の例 リンクのコピーリンクがクリップボードにコピーされました!
ldapsearch
コマンドは操作属性を返しません。検索するには、プラス記号 (+
) を使用します。+
を使用すると、エントリーに対して使用できる操作属性のみが返されます。
例8.10 操作属性の検索
ldapsearch -D "cn=Directory Manager" -W -x -b "uid=scarter,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" "+"
# ldapsearch -D "cn=Directory Manager" -W -x -b "uid=scarter,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" "+"
dn: uid=scarter,ou=People,dc=example,dc=com
entryLevelRights: vadn
attributeLevelRights: nsICQStatusText:rscwo, passwordGraceUserTime:rscwo, pwdGraceUserTime:rscwo, nsYIMStatusText:rscwo, modifyTimestamp:rscwo, passwordExpWarned:rscwo, pwdExpirationWarned:rscwo, entrydn:rscwo, aci:rscwo, nsSizeLimit:rscwo, nsAccountLock:rscwo, passwordExpirationTime:rscwo, entryid:rscwo, nsSchemaCSN:rscwo, nsRole:rscwo, retryCountResetTime:rscwo, ldapSchemas:rscwo, nsAIMStatusText:rscwo, copiedFrom:rscwo, nsICQStatusGraphic:rscwo, nsUniqueId:rscwo, creatorsName:rscwo, passwordRetryCount:rscwo, dncomp:rscwo, nsTimeLimit:rscwo, passwordHistory:rscwo, pwdHistory:rscwo, nscpEntryDN:rscwo, subschemaSubentry:rscwo, nsYIMStatusGraphic:rscwo, hasSubordinates:rscwo, pwdpolicysubentry:rscwo, nsAIMStatusGraphic:rscwo, nsRoleDN:rscwo, createTimestamp:rscwo, accountUnlockTime:rscwo, copyingFrom:rscwo, nsLookThroughLimit:rscwo, nsds5ReplConflict:rscwo, modifiersName:rscwo, parentid:rscwo, passwordAllowChangeTime:rscwo, nsBackendSuffix:rscwo, nsIdleTimeout:rscwo, ldapSyntaxes:rscwo, numSubordinates:rscwo
8.3.6. Get Effective Rights 結果とアクセス制御ルールの例 リンクのコピーリンクがクリップボードにコピーされました!
有効なアクセス制御リスト (ACL) は、ユーザーが持つ Get Access Rights (GER) を定義します。
例8.11 アクセス制御リスト
この例では、ACL に dc=example,dc=com
サブツリーは含まれていません。そのため、GER 検索結果には、ユーザーが dc=example,dc=com
エントリーに対する権限を持っていないことが示されます。
例8.12 ACL が設定されていない場合の GER 検索結果
結果を表示するには、Directory Manager である必要があります。それ以外の場合、結果は空白になります。