LDIF(5) فایلهای پیکربندی LDIF(5)

ldif - قالب تبادل داده برای سرویس دایرکتوری LDAP

قالب LDIF (قالب تبادل داده LDAP) قالبی متنی و استاندارد برای توصیف ورودیهای دایرکتوری و اعمال تغییرات روی آنها است. ابزارهای LDAP، مانند ldapadd(1) و ldapsearch(1)، رکوردهای ورودی LDIF را خوانده و می‌نویسند. ldapmodify(1) رکوردهای تغییرات LDIF را می‌خواند.

این صفحه راهنما توصیفی پایه‌ای از LDIF ارائه می‌دهد. مشخصات رسمی LDIF در RFC 2849 منتشر شده است.

رکوردهای ورودی LDIF برای نمایش مدخل‌های دایرکتوری استفاده می‌شوند. فرم پایه یک رکورد ورودی به این صورت است:

dn: <distinguished name>
<attrdesc>: <attrvalue>
<attrdesc>: <attrvalue>
<attrdesc>:: <base64-encoded-value>
<attrdesc>:< <URL>
...

مقدار ممکن است به‌صورت متن UTF-8 یا داده کدگذاری‌شده با base64 مشخص شود، یا یک URI برای مشخص کردن مکان مقدار مشخصه (attribute) ارائه گردد.

یک خط می‌تواند با شروع خط بعدی با یک فاصله (space) یا تب (tab) تکی ادامه یابد، به عنوان مثال:

dn: cn=Barbara J Jensen,dc=exam
 ple,dc=com

خطوطی که با علامت شارپ ('#') آغاز می‌شوند نادیده گرفته می‌شوند.

مقادیر چندگانه یک مشخصه در خطوط جداگانه مشخص می‌شوند، مانند:

cn: Barbara J Jensen
cn: Babs Jensen

اگر مقداری حاوی نویسه غیرقابل‌چاپ باشد، یا با یک فاصله یا دونقطه ':' شروع شود، پس از <attrtype> دو دونقطه (::) قرار گرفته و مقدار با نشانه‌گذاری پایه ۶۴ (base64) کدگذاری می‌شود؛ مثلاً مقدار " begins with a space" به این شکل کدگذاری خواهد شد:

cn:: IGJlZ2lucyB3aXRoIGEgc3BhY2U=

اگر مقدار مشخصه در یک فایل قرار داشته باشد، پس از <attrtype> عبارت ':<' و سپس یک URI از نوع file: می‌آید. برای مثال، مقداری که در فایل /tmp/value قرار دارد به این شکل فهرست می‌شود:

cn:< file:///tmp/value
سایر طرح‌های URI (مانند ftp و http) نیز ممکن است پشتیبانی شوند.

مدخل‌های چندگانه در یک فایل LDIF با خطوط خالی از یکدیگر جدا می‌شوند.

در ادامه نمونه‌ای از یک فایل LDIF حاوی سه مدخل آورده شده است:

dn: cn=Barbara J Jensen,dc=example,dc=com
cn: Barbara J Jensen
cn: Babs Jensen
objectclass: person
description:< file:///tmp/babs
sn: Jensen
dn: cn=Bjorn J Jensen,dc=example,dc=com
cn: Bjorn J Jensen
cn: Bjorn Jensen
objectclass: person
sn: Jensen
dn: cn=Jennifer J Jensen,dc=example,dc=com
cn: Jennifer J Jensen
cn: Jennifer Jensen
objectclass: person
sn: Jensen
jpegPhoto:: /9j/4AAQSkZJRgABAAAAAQABAAD/2wBDABALD
 A4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQ
 ERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVG
...

توجه داشته باشید که description در مدخل Barbara Jensen از file:///tmp/babs خوانده می‌شود و jpegPhoto در مدخل Jennifer Jensen با استفاده از base64 کدگذاری شده است.

رکوردهای تغییرات LDIF برای نمایش درخواست‌های تغییر دایرکتوری استفاده می‌شوند. هر رکورد تغییر با خطی شامل نام متمایز (DN) ورودی در حال تغییر آغاز می‌شود:

dn: <distinguishedname>
changetype: <[modify|add|delete|modrdn]>

در نهایت، اطلاعات خودِ تغییر داده می‌شود که فرمت آن بستگی به نوع تغییر مشخص‌شده در بالا دارد. برای یک changetype از نوع modify، فرمت به یک یا چند مورد از شکل‌های زیر است:

add: <attributetype>
<attrdesc>: <value1>
<attrdesc>: <value2>
...
-

یا، برای تغییر از نوع جایگزینی (replace):

replace: <attributetype>
<attrdesc>: <value1>
<attrdesc>: <value2>
...
-

اگر هیچ خط attributetype برای جایگزینی داده نشود، کل مشخصه (در صورت وجود) حذف خواهد شد.

یا، برای تغییر از نوع حذف (delete):

delete: <attributetype>
<attrdesc>: <value1>
<attrdesc>: <value2>
...
-

اگر هیچ خط attributetype برای حذف داده نشود، کل مشخصه حذف خواهد شد.

برای changetype از نوع add، فرمت به صورت زیر است:

<attrdesc1>: <value1>
<attrdesc1>: <value2>
...
<attrdescN>: <value1>
<attrdescN>: <value2>

برای changetype از نوع modrdn یا moddn، فرمت به صورت زیر است:

newrdn: <newrdn>
deleteoldrdn: 0 | 1
newsuperior: <DN>

که در آن مقدار 1 برای deleteoldrdn به معنای حذف مقادیر تشکیل‌دهنده rdn قدیمی از مدخل است، و مقدار 0 به معنای رها کردن مقادیر به عنوان مشخصه‌های غیرمتمایز در مدخل می‌باشد. خط newsuperior اختیاری است و در صورت وجود، والد جدید (superior) را برای انتقال مدخل به آن مشخص می‌کند.

برای changetype از نوع delete، اطلاعات دیگری در رکورد لازم نیست.

توجه داشته باشید که مقادیر مشخصه ممکن است با base64 یا در فایل‌ها همان‌طور که برای رکوردهای ورودی شرح داده شد مشخص شوند. خطوط در رکوردهای تغییرات نیز می‌توانند به شیوه‌ای که برای رکوردهای ورودی ذکر شد ادامه یابند.

فایل نمونه LDIF زیر حاوی یک رکورد تغییر از هر نوع است:

dn: cn=Babs Jensen,dc=example,dc=com
changetype: add
objectclass: person
objectclass: extensibleObject
cn: babs
cn: babs jensen
sn: jensen
dn: cn=Babs Jensen,dc=example,dc=com
changetype: modify
add: givenName
givenName: Barbara
givenName: babs
-
replace: description
description: the fabulous babs
-
delete: sn
sn: jensen
-
dn: cn=Babs Jensen,dc=example,dc=com
changetype: modrdn
newrdn: cn=Barbara J Jensen
deleteoldrdn: 0
newsuperior: ou=People,dc=example,dc=com
dn: cn=Barbara J Jensen,ou=People,dc=example,dc=com
changetype: delete

تحلیل‌گر LDIF گسترش یافته است تا از دستور include برای ارجاع به سایر فایل‌های LDIF پشتیبانی کند. دستور include باید توسط یک خط خالی از سایر رکوردها جدا شود. فایل ارجاع داده‌شده با یک URI از نوع file: مشخص می‌شود و تمام محتویات آن به گونه‌ای الحاق می‌شوند که گویی بخشی از فایل LDIF اصلی بوده‌اند. همانند قبل، سایر طرح‌های URI نیز ممکن است پشتیبانی شوند. برای مثال:

dn: dc=example,dc=com
objectclass: domain
dc: example
include: file:///tmp/example.com.ldif
dn: dc=example,dc=org
objectclass: domain
dc: example
این قابلیت بخشی از مشخصات LDIF در RFC 2849 نیست اما انتظار می‌رود در ویرایش‌های بعدی این استاندارد گنجانده شود. این ویژگی توسط دستورات ldapadd(1)، ldapmodify(1) و slapadd(8) پشتیبانی می‌شود.

ldap(3)، ldapsearch(1)، ldapadd(1)، ldapmodify(1)، slapadd(8)، slapcat(8)، slapd-ldif(5).

"LDAP Data Interchange Format," Good, G., RFC 2849.

نرم‌افزار OpenLDAP توسط پروژه OpenLDAP در http://www.openldap.org توسعه یافته و نگهداری می‌شود. نرم‌افزار OpenLDAP از نسخه 3.3 LDAP دانشگاه میشیگان برگرفته شده است.

مه ۲۰۲۵ OpenLDAP