| SLAPD-SOCK(5) | File Formats Manual | SLAPD-SOCK(5) |
نام (NAME)
slapd-sock - بکاند یا روکش سوکت IPC/شبکه برای slapd
خلاصه دستور (SYNOPSIS)
/etc/openldap/slapd.conf
توضیحات (DESCRIPTION)
بکاند سوکت (Socket) برای slapd(8) جهت مدیریت پرسوجوها از یک برنامه خارجی استفاده میکند که به یک سوکت دامنه یونیکس (Unix domain socket) گوش میدهد. این امر امکان داشتن یک استخر (pool) از فرآیندها را فراهم میسازد که بین درخواستها پایدار میمانند. این موضوع امکان عملیات چندنخی (multithreaded) و سطح بالایی از کارایی را فراهم میکند. برنامه خارجی باید بهطور مستقل راهاندازی شده باشد؛ slapd(8) خودش آن را راهاندازی نخواهد کرد.
این ماژول همچنین میتواند به عنوان یک روکش (overlay) بر روی پایگاههای داده دیگر استفاده شود. استفاده به عنوان روکش اجازه میدهد اقدامات خارجی در پاسخ به عملیاتهای پایگاه داده اصلی آغاز (trigger) شوند.
پیکربندی (CONFIGURATION)
این گزینههای slapd.conf برای پایگاه داده بکاند SOCK اعمال میشوند. به این معنا که آنها باید پس از یک خط "database sock" و قبل از هر خط "backend" یا "database" بعدی قرار گیرند. سایر گزینههای پایگاه داده در صفحه راهنمای slapd.conf(5) توضیح داده شدهاند.
همچنین، برای استفاده از این ماژول به عنوان یک روکش (overlay)، این دستورالعملها باید پس از یک خط "overlay sock" در تعریف یک پایگاه داده موجود قرار گیرند.
- extensions [ binddn | peername | ssf | connid ]*
- ارسال
ویژگیهای
فراداده (meta-attributes)
اضافی را با
هر درخواست
فعال
میکند.
binddn: <bound DN> peername: IP=<address>:<port> ssf: <SSF value> connid: <connection ID>
- socketpath <pathname>
- مسیر یک سوکت دامنه یونیکس را مشخص میکند که دستورات به آن ارسال میشوند و پاسخها از آن دریافت میگردند.
هنگامی که به عنوان روکش استفاده میشود، این دستورالعملهای اضافی تعریف میشوند:
- sockops [ bind | unbind | search | compare | modify | modrdn | add | delete | extended ]*
- مشخص میکند کدام انواع درخواست به برنامه خارجی ارسال شوند. حالت پیشفرض خالی است (هیچ درخواستی ارسال نمیشود).
- sockresps [ result | search ]*
- مشخص میکند کدام انواع پاسخ به برنامه خارجی ارسال شوند. گزینه "result" تنها نتایج یک عملیات را ارسال میکند. گزینه "search" تمام مدخلهایی را که پایگاه داده برای یک درخواست جستجو بازگردانده ارسال میکند. حالت پیشفرض خالی است (هیچ پاسخی ارسال نمیشود).
- sockdnpat <regexp>
- الگوهای DN را مشخص میکند که روکش برای آنها عمل خواهد کرد. تنها عملیات روی DNهایی که با عبارت باقاعده (regular expression) مشخصشده مطابقت داشته باشند پردازش خواهند شد. حالت پیشفرض خالی است (تمام DNها پردازش میشوند).
پروتکل (PROTOCOL)
این پروتکل از یک خط جدید (newline) برای خاتمه دادن به پارامترهای دستور استفاده میکند. دستورات زیر ارسال میشوند:
ADD
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
<entry in LDIF format>
<blank line>
BIND
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
dn: <DN>
method: <method number>
credlen: <length of <credentials>>
cred: <credentials>
<blank line>
COMPARE
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
dn: <DN>
<attribute>: <value>
<blank line>
DELETE
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
dn: <DN>
<blank line>
EXTENDED
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
oid: <OID>
value: <base64-value>
<blank line>
MODIFY
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
dn: <DN>
<repeat {
<"add"/"delete"/"replace">: <attribute>
<repeat { <attribute>: <value> }>
-
}>
<blank line>
MODRDN
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
dn: <DN>
newrdn: <new RDN>
deleteoldrdn: <0 or 1>
<if new superior is specified: "newSuperior: <DN>">
<blank line>
SEARCH
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
base: <base DN>
scope: <0-2, see ldap.h>
deref: <0-3, see ldap.h>
sizelimit: <size limit>
timelimit: <time limit>
filter: <filter>
attrsonly: <0 or 1>
attrs: <"all" or space-separated attribute list>
<blank line>
UNBIND
msgid: <message id>
<repeat { "suffix:" <database suffix DN> }>
<blank line>
دستورات - به جز unbind - باید خروجی زیر را داشته باشند:
RESULT code: <integer> matched: <matched DN> info: <text>
هنگامی که به عنوان روکش استفاده میشود، برنامه خارجی در صورتی که پردازش درخواست باید بهطور عادی ادامه یابد، باید پاسخ CONTINUE بازگرداند، یا اگر برنامه خارجی بخواهد پایگاه داده زیرین را دور بزند (بایپس کند)، یک پاسخ عادی RESULT برگرداند.
اگر sockresps شامل result یا search باشد، روکش همچنین پیامهای پاسخ را به برنامه خارجی ارسال خواهد کرد (همچنین بخش محدودیتهای شناختهشده را ببینید). این پیامها به ترتیب به شکل یک پیام گسترشیافته RESULT یا یک پیام ENTRY ظاهر خواهند شد؛ هر دو در زیر تعریف شدهاند و انتظار نمیرود برنامه به این پیامها پاسخ دهد.
پیام گسترشیافته RESULT مشابه پیام بالا است، اما همچنین شامل msgid و هرگونه اکستنشن (extension) پیکربندیشده میباشد:
RESULT msgid: <message id> code: <integer> matched: <matched DN> info: <text> <blank line>
معمولاً هم به msgid و هم به connid برای تطبیق پیام نتیجه با یک درخواست نیاز خواهد بود. پیام ENTRY به این شکل است:
ENTRY msgid: <message id> <entry in LDIF format> <blank line>
محدودیتهای شناختهشده (KNOWN LIMITATIONS)
بکاند sock نتایج عملیاتهای گسترشیافته (extended operations) از یک برنامه خارجی را پردازش نمیکند.
اگر sockresps پیکربندی شده باشد، روکش sock برای تصمیمگیری درباره اینکه کدام پاسخها به برنامه خارجی فرستاده شوند، sockops یا sockdnpat را در نظر نمیگیرد؛ در عوض در حال حاضر همه پاسخها ارسال میشوند.
کنترل دسترسی (ACCESS CONTROL)
بکاند sock تمام قواعد معنایی ACL را همانطور که در slapd.access(5) توصیف شده رعایت نمیکند. بهطور کلی، دسترسی به اشیاء با استفاده از یک شیء ساختگی (dummy) که فقط شامل DN است بررسی میشود؛ بنابراین قواعد دسترسی که به محتوای شیء متکی هستند رعایت نمیشوند. بهطور دقیق:
عملیات add نیازی به دسترسی write (=w) به شبهویژگی (pseudo-attribute) children مدخل والد ندارد.
عملیات bind نیازمند دسترسی auth (=x) به شبهویژگی entry مدخلی است که هویت آن در حال ارزیابی است؛ دسترسی auth (=x) به اعتبارنامهها (credentials) بررسی نمیشود، بلکه به برنامه زیرین واگذار میگردد.
عملیات compare نیازمند دسترسی compare (=c) به شبهویژگی entry شیئی است که مقدار آن در حال بررسی است؛ دسترسی compare (=c) به ویژگیای که مقدار آن بررسی میشود چک نمیگردد.
عملیات delete نیازی به دسترسی write (=w) به شبهویژگی children مدخل والد ندارد.
عملیات modify نیازمند دسترسی write (=w) به شبهویژگی entry است؛ دسترسی write (=w) به ویژگیهای خاصی که تغییر مییابند بررسی نمیشود.
عملیات modrdn نیازی به دسترسی write (=w) به شبهویژگی children مدخل والد، یا والد جدید در صورت تفاوت ندارد؛ دسترسی write (=w) به مقادیر متمایز ویژگیهای نامگذاری بررسی نمیشود.
عملیات search نیازی به دسترسی search (=s) به شبهویژگی entry از searchBase ندارد؛ دسترسی search (=s) به ویژگیها و مقادیر استفادهشده در فیلتر بررسی نمیشود.
عملیات extended به هیچ حق دسترسی ویژهای نیاز ندارد. برنامه خارجی باید هرگونه کنترل دسترسی را خود پیادهسازی کند.
مثال (EXAMPLE)
یک اسکریپت نمونه در دایرکتوری slapd/back-sock/ در درخت سورسکد OpenLDAP وجود دارد.
فایلها (FILES)
- /etc/openldap/slapd.conf
- فایل پیکربندی پیشفرض slapd
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
Brian Candler، همراه با بهبودهایی توسط Howard Chu
| 2026/03/09 | OpenLDAP 2.6.13 |