SLAPD(8C) SLAPD(8C)

slapd - سرویس دیمن مستقل پروتکل LDAP

/usr/lib/slapd [-V[V[V]] [-4|-6] [-T {acl|a[dd]|auth|c[at]| d[n]|i[ndex]|m[odify]|p[asswd]|s[chema]|t[est]}] [-d debug-level] [-f slapd-config-file] [-F slapd-config-directory] [-h URLs] [-n service-name] [-s syslog-level] [-l syslog-local-user] [-o option[=value]] [-r directory] [-u user] [-g group] [-c cookie]

Slapd یک دیمن مستقل پروتکل LDAP است. این دیمن به اتصالات LDAP روی هر تعداد درگاه (پیش‌فرض 389) گوش فرا می‌دهد و به عملیات‌های LDAP دریافتی از طریق این اتصالات پاسخ می‌دهد. slapd به‌طور معمول هنگام راه‌اندازی سیستم، معمولاً از طریق /etc/rc.local فراخوانی می‌شود. پس از راه‌اندازی، slapd به طور معمول منشعب (fork) شده و خود را از tty فراخواننده جدا می‌کند. در صورت پیکربندی در فایل پیکربندی (یا دایرکتوری پیکربندی)، فرآیند slapd شناسه فرآیند خود (نگاه کنید به getpid(2)) را در یک فایل .pid و همچنین گزینه‌های خط فرمان هنگام فراخوانی را در یک فایل .args ثبت می‌کند (نگاه کنید به slapd.conf(5)). اگر فلگ -d مشخص شود، حتی با آرگومان صفر، slapd منشعب نشده و از tty فراخواننده جدا نخواهد شد.

برای جزئیات بیشتر درباره slapd به "OpenLDAP Administrator's Guide" مراجعه کنید.

چاپ اطلاعات نسخه و ادامه روند راه‌اندازی. اگر -VV مشخص شود، پس از ارائه اطلاعات نسخه خارج می‌شود. اگر -VVV مشخص شود، علاوه بر آن اطلاعاتی درباره اورلی‌ها و بک‌اندهای ایستا نیز ارائه می‌دهد.
-4
تنها روی آدرس‌های IPv4 گوش می‌دهد.
-6
تنها روی آدرس‌های IPv6 گوش می‌دهد.
اجرا در حالت ابزار (Tool mode). آرگومان tool مشخص می‌کند که برنامه به عنوان کدام ابزار اجرا شود: slapadd، slapcat، slapdn، slapindex، slapmodify، slappasswd، slapschema یا slaptest (برای slapacl و slapauth باید کل مقدار گزینه یعنی acl و auth به طور کامل مشخص شوند، زیرا a برای slapadd رزرو شده است). این گزینه در صورت استفاده باید نخستین گزینه مشخص‌شده باشد؛ هر گزینه باقی‌مانده دیگر توسط برنامه ابزار slap مربوطه، طبق صفحات راهنمای مربوطه‌اش تفسیر خواهد شد. توجه داشته باشید که این برنامه‌های ابزار معمولاً پیوندهای نمادین به slapd هستند. این گزینه برای شرایطی ارائه شده است که پیوندهای نمادین ارائه نشده یا قابل استفاده نیستند.
فعال‌سازی اشکال‌زدایی طبق آنچه توسط debug-level تعریف شده است. اگر این گزینه مشخص شود، حتی با یک آرگومان صفر، slapd منشعب نخواهد شد و از ترمینال فراخواننده جدا نمی‌شود. برخی پیام‌های عمومی عملیات و وضعیت برای هر مقداری از debug-level چاپ می‌شوند. مقدار debug-level به عنوان یک رشته بیتی در نظر گرفته می‌شود که هر بیت متناظر با نوع متفاوتی از اطلاعات اشکال‌زدایی است. برای جزئیات به <ldap_log.h> مراجعه کنید. می‌توان آرایه‌ای از نام‌های خوانا را که با کاما از هم جدا شده‌اند برای انتخاب خروجی اشکال‌زدایی اطلاعات متناظر مشخص کرد. تمامی نام‌های شناخته‌شده توسط دستورالعمل loglevel شرح‌داده‌شده در slapd.conf(5) پشتیبانی می‌شوند. اگر debug-level برابر ? باشد، فهرستی از سطوح اشکال‌زدایی نصب‌شده چاپ می‌شود و slapd خارج خواهد شد.

به یاد داشته باشید که اگر ثبت بسته‌ها (packet logging) را فعال کنید، بسته‌های حاوی گذرواژه‌های بایند (bind passwords) در خروجی چاپ می‌شوند؛ بنابراین اگر گزارش را به یک فایل لاگ هدایت می‌کنید، آن فایل باید در برابر خواندن محافظت شود.

این گزینه به slapd می‌گوید که دستورات اشکال‌زدایی در چه سطح اشکال‌زدایی باید در سرویس syslog(8) ثبت شوند. مقدار syslog-level می‌تواند روی هر مقدار یا ترکیبی که توسط سوییچ -d مجاز است تنظیم شود. دیمن Slapd تمامی پیام‌های انتخاب‌شده توسط syslog-level را با سطح شدت syslog(3) معادل DEBUG، روی واحد مشخص‌شده با -l ثبت می‌کند.
نام سرویس را برای ثبت گزارش و مقاصد دیگر مشخص می‌کند. مقدار پیش‌فرض برابر با basename در argv[0]، یعنی "slapd" است.
کاربر محلی سرویس syslog(8) را انتخاب می‌کند. مقدار می‌تواند LOCAL0 تا LOCAL7، و همچنین USER و DAEMON باشد. مقدار پیش‌فرض LOCAL4 است. با این حال، این گزینه تنها روی سیستم‌هایی مجاز است که از کاربران محلی در سرویس syslog(8) پشتیبانی می‌کنند. ثبت گزارش در syslog(8) در سطح شدت "DEBUG" انجام می‌شود.
فایل پیکربندی slapd را مشخص می‌کند. مقدار پیش‌فرض /etc/openldap/slapd.conf است.
دایرکتوری پیکربندی slapd را مشخص می‌کند. مقدار پیش‌فرض /etc/openldap/slapd.d است. اگر هر دو گزینه -f و -F مشخص شوند، فایل پیکربندی خوانده شده و به قالب دایرکتوری پیکربندی تبدیل می‌شود و در دایرکتوری مشخص‌شده نوشته خواهد شد. اگر هیچ‌کدام مشخص نشوند، slapd پیش از تلاش برای استفاده از فایل پیکربندی پیش‌فرض، تلاش می‌کند دایرکتوری پیکربندی پیش‌فرض را بخواند. اگر یک دایرکتوری پیکربندی معتبر وجود داشته باشد، فایل پیکربندی پیش‌فرض نادیده گرفته می‌شود. تمامی ابزارهای slap که از گزینه‌های پیکربندی استفاده می‌کنند همین رفتار را رعایت می‌کنند.
slapd به‌طور پیش‌فرض به ldap:/// (پروتکل LDAP از طریق TCP روی تمامی رابط‌ها در درگاه پیش‌فرض LDAP) سرویس می‌دهد. یعنی با استفاده از INADDR_ANY و درگاه 389 متصل می‌شود. گزینه -h می‌تواند برای تعیین URLهای LDAP (و سایر طرح‌ها) جهت سرویس‌دهی استفاده شود. برای مثال، اگر به slapd گزینه -h "ldap://127.0.0.1:9009/ ldaps:/// ldapi:///" داده شود، روی 127.0.0.1:9009 برای LDAP، روی 0.0.0.0:636 برای LDAP از طریق TLS، و برای LDAP از طریق IPC (سوکت‌های دامنه یونیکس) گوش خواهد داد. میزبان 0.0.0.0 نمایانگر INADDR_ANY (هر رابطی) است. فهرستی از URLها که با فاصله جدا شده‌اند مورد انتظار است. این URLها باید از طرح‌های LDAP، PLDAP، LDAPS، PLDAPS یا LDAPI باشند و عموماً بدون DN یا سایر پارامترهای اختیاری (به جز مواردی که در ادامه توضیح داده شده است) باشند. پشتیبانی از سه طرح اخیر به گزینه‌های پیکربندی انتخاب‌شده بستگی دارد. میزبان‌ها می‌توانند با نام یا قالب‌های آدرس IPv4 و IPv6 مشخص شوند. درگاه‌ها در صورت تعیین باید عددی باشند. درگاه پیش‌فرض ldap:// برابر 389 و درگاه پیش‌فرض ldaps:// برابر 636 است؛ همین موضوع برای انواع فعال‌شده با پروکسی نیز صادق است.

طرح‌های URL به نام PLDAP و PLDAPS پشتیبانی از پروتکل پروکسی HAProxy نسخه ۲ را فراهم می‌کنند، که به یک توزیع‌کننده بار (load balancer) یا سرور پروکسی اجازه می‌دهد آدرس IP کلاینت راه دور را به slapd ارائه کند تا برای کنترل دسترسی یا ثبت وقایع استفاده شود. درگاه‌های پیکربندی‌شده برای PLDAP یا PLDAPS تنها اتصالاتی را می‌پذیرند که شامل هدر ضروری پروتکل پروکسی باشند. اتصالات به این درگاه‌ها باید در سطح شبکه تنها به توزیع‌کننده‌های بار یا پروکسی‌های مورد اعتماد محدود شوند تا از جعل آدرس‌های IP کلاینت توسط اشخاص ثالث جلوگیری شود.

برای LDAP از طریق IPC، مقدار name نام سوکت است و هیچ درگاهی (port) مورد نیاز نبوده و مجاز هم نیست؛ توجه داشته باشید که جداکننده‌های دایرکتوری باید مانند هر نویسه خاص دیگری در URLها، به صورت کدگذاری URL (URL-encoded) باشند؛ بنابراین سوکت

/usr/local/var/ldapi

باید به این صورت مشخص شود:

ldapi://%2Fusr%2Flocal%2Fvar%2Fldapi

مسیر پیش‌فرض برای سوکت IPC برابر /var/lib/openldap/run/ldapi است.

مجوزهای شنونده با "x-mod=-rwxrwxrwx"، "x-mod=0777" یا "x-mod=777" مشخص می‌شوند، که در آن هر یک از "rwx" می‌تواند برای لغو مجوز مربوطه به صورت "-" باشد، در حالی که هر یک از "7" می‌تواند هر رقم هشت‌هشتی مجاز طبق chmod(1) باشد. شنوندگان می‌توانند از افزونه "x-mod" برای اعمال محدودیت‌های تقریبی روی عملیات بهره ببرند؛ به عنوان مثال اجازه عملیات خواندن ("r" که به search و compare اعمال می‌شود)، عملیات نوشتن ("w" که به add، delete، modify و modrdn اعمال می‌شود) و عملیات اجرا ("x" که به معنای لزوم bind است). مجوزهای "User" به کاربران احرازهویت‌شده اعمال می‌شوند، در حالی که "other" به کاربران ناشناس اعمال می‌گردد؛ مجوزهای "group" نادیده گرفته می‌شوند. برای مثال، "ldap:///????x-mod=-rw-------" به این معناست که خواندن و نوشتن تنها برای اتصالات احرازهویت‌شده مجاز است و برای تمامی عملیات، bind الزامی است. این قابلیت آزمایشی است و نیازمند فعال‌سازی دستی در زمان پیکربندی و کامپایل است.

دایرکتوری‌ای را برای تبدیل شدن به دایرکتوری ریشه مشخص می‌کند. دیمن slapd دایرکتوری کاری فعلی را به این دایرکتوری تغییر داده و سپس با chroot(2) به این دایرکتوری منتقل می‌شود. این کار پس از باز کردن شنوندگان اما پیش از خواندن هرگونه فایل پیکربندی یا راه‌اندازی هر بک‌اندی انجام می‌شود. در صورت استفاده به عنوان یک سازوکار امنیتی، باید همراه با گزینه‌های -u و -g استفاده شود.
سرویس slapd را با نام کاربری یا شناسه کاربری (UID) مشخص‌شده، و فهرست دسترسی گروه‌های تکمیلی آن کاربر طبق آنچه توسط initgroups(3) تنظیم شده اجرا می‌کند. شناسه گروه (GID) نیز به gid این کاربر تغییر می‌یابد، مگر اینکه از گزینه -g برای جایگزینی آن استفاده شود. توجه داشته باشید که هنگام استفاده همراه با -r، دیمن slapd از پایگاه‌داده کاربران درون محیط ریشه تغییریافته (chroot) استفاده خواهد کرد.

توجه داشته باشید که در برخی سیستم‌ها، اجرا به عنوان کاربر غیرممتاز مانع از دسترسی بک‌اندهای passwd به گذرواژه‌های رمزنگاری‌شده خواهد شد. همچنین توجه داشته باشید که هر بک‌اند پوسته (shell) به عنوان کاربر غیرممتاز مشخص‌شده اجرا خواهد شد.

سرویس slapd را با نام یا شناسه گروه (GID) مشخص‌شده اجرا می‌کند. توجه داشته باشید که هنگام استفاده همراه با -r، دیمن slapd از پایگاه‌داده گروه‌ها درون محیط ریشه تغییریافته (chroot) استفاده خواهد کرد.
این گزینه یک کوکی برای مصرف‌کننده رونوشت‌برداری (syncrepl replication consumer) فراهم می‌کند. این کوکی فهرستی از جفت‌های name=value است که با کاما از هم جدا شده‌اند. فیلدهای کوکی syncrepl که در حال حاضر پشتیبانی می‌شوند عبارتند از rid، sid و csn. شناسه rid یک رشته رونوشت‌برداری را درون سرور مصرف‌کننده مشخص می‌کند و برای یافتن مشخصات syncrepl در slapd.conf(5) یا slapd-config(5) که شناسه رونوشت‌برداری منطبق در تعریف آن وجود دارد، استفاده می‌شود. شناسه rid باید ارائه شود تا سایر مقادیر مشخص‌شده مورد استفاده قرار گیرند. مقدار sid شناسه سرور در یک پیکربندی چند ارائه‌دهنده‌ای (multi-provider) است. مقدار csn شماره توالی ثبت (commit sequence number) دریافت شده توسط یک همگام‌سازی قبلی است و نمایانگر وضعیت محتوای مصرف‌کننده است که موتور syncrepl آن را با محتوای ارائه‌دهنده فعلی همگام خواهد کرد. در صورت وجود توافق رونوشت‌برداری چند ارائه‌دهنده‌ای (multi-provider)، مقادیر متعدد csn می‌توانند ظاهر شوند که با نقطه ویرگول (semicolon) از هم جدا می‌شوند. تنها از بخش rid برای وادار کردن به بارگذاری کامل مجدد (full reload) استفاده کنید.
این گزینه روشی عمومی برای تعیین گزینه‌ها بدون نیاز به اختصاص یک حرف جداگانه برای آن‌ها فراهم می‌کند.

این بخش از گزینه‌های زیر پشتیبانی می‌کند:

هنگامی که پشتیبانی از SLP در slapd کامپایل شده باشد، آن را غیرفعال می‌کند (off)، با ثبت در DAهای پروتکل SLP بدون ویژگی‌های خاص SLP آن را فعال می‌کند (on)، یا با ویژگی‌های خاص SLP به صورت slp-attrs که باید طبق استاندارد SLP تعریفی از فهرست ویژگی‌های SLP باشد فعال می‌کند.

برای مثال، "slp=(tree=production),(server-type=OpenLDAP),(server-version=2.4.15)" با سه ویژگی SLP شامل tree، server-type و server-version که دارای مقادیر ارائه‌شده در بالا هستند، در DAهای پروتکل SLP ثبت‌نام می‌کند. این امر امکان پرس‌وجوی مشخص در DAهای پروتکل SLP را برای سرورهای LDAP دارنده درخت production در صورت وجود چندین درخت فراهم می‌سازد.

برای شروع slapd و انشعاب (fork) و جدا شدن آن از ترمینال و آغاز سرویس‌دهی به پایگاه‌های داده LDAP تعریف‌شده در فایل پیکربندی پیش‌فرض، کافی است وارد کنید:

/usr/lib/slapd

برای شروع slapd با یک فایل پیکربندی جایگزین، و فعال‌سازی اشکال‌زدایی پرحجم که روی خطای استاندارد چاپ خواهد شد، وارد کنید:

/usr/lib/slapd -f /var/tmp/slapd.conf -d 255

برای آزمایش اینکه آیا فایل پیکربندی صحیح است یا خیر، وارد کنید:

/usr/lib/slapd -Tt

ldap(3), slapd.conf(5), slapd-config(5), slapd.access(5), slapacl(8), slapadd(8), slapauth(8), slapcat(8), slapdn(8), slapindex(8), slapmodify(8), slappasswd(8), slapschema(8), slaptest(8).

"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin)

به http://www.openldap.org/its مراجعه کنید.

OpenLDAP Software توسط پروژه OpenLDAP توسعه یافته و نگهداری می‌شود http://www.openldap.org. OpenLDAP Software از انتشار ال‌دپ ۳.۳ دانشگاه میشیگان مشتق شده است.

2026/03/09 OpenLDAP 2.6.13