.\" Copyright 1988, 1994, 1998 The Open Group .\" .\" Permission to use, copy, modify, distribute, and sell this software and its .\" documentation for any purpose is hereby granted without fee, provided that .\" the above copyright notice appear in all copies and that both that .\" copyright notice and this permission notice appear in supporting .\" documentation. .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of The Open Group shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from The Open Group. .\" .\" .TH XDM 8 "xdm 1.1.17" "X Version 11" .SH "نام (NAME)" xdm \- مدیر نمایش اکس (X Display Manager) با پشتیبانی از XDMCP و انتخاب‌گر میزبان .SH "خلاصه دستور (SYNOPSIS)" .B xdm [ .B \-config .I configuration_file ] [ .B \-nodaemon ] [ .B \-debug .I debug_level ] [ .B \-error .I error_log_file ] [ .B \-resources .I resource_file ] [ .B \-server .I server_entry ] [ .B \-session .I session_program ] .SH "توضیحات (DESCRIPTION)" .I Xdm مجموعه‌ای از نمایشگرهای X را مدیریت می‌کند که می‌توانند روی میزبان محلی یا روی سرورهای راه دور قرار داشته باشند. طراحی .I xdm بر اساس نیازهای ترمینال‌های X و همچنین استاندارد The Open Group برای XDMCP (پروتکل کنترل مدیر نمایش اکس یا \fIX Display Manager Control Protocol\fP) انجام شده است. .I Xdm خدماتی مشابه با خدمات ارائه‌شده توسط \fIinit\fP، \fIgetty\fP و \fIlogin\fP در ترمینال‌های نویسه‌ای ارائه می‌دهد: درخواست نام کاربری و گذرواژه، احراز هویت کاربر و اجرای یک «نشست» (session). .PP یک «نشست» بر اساس طول عمر یک فرآیند خاص تعریف می‌شود؛ در دنیای سنتی ترمینال‌های مبتنی بر نویسه، این فرآیند همان شل ورود کاربر است. در زمینه .IR xdm ، این فرآیند یک مدیر نشست دلخواه است؛ زیرا در یک محیط پنجره‌ای، فرآیند شل ورود کاربر لزوماً رابطی مشابه ترمینال برای اتصال به آن ندارد. هنگامی که یک مدیر نشست واقعی در دسترس نیست، معمولاً از یک مدیر پنجره (window manager) یا شبیه‌ساز ترمینال به عنوان «مدیر نشست» استفاده می‌شود؛ به این معنی که پایان یافتن این فرآیند، موجب پایان یافتن نشست کاربر خواهد شد. .PP هنگامی که نشست به پایان می‌رسد، \fIxdm\fP سرور X را بازنشانی (reset) کرده و (در صورت تمایل) کل فرآیند را از نو آغاز می‌کند. .PP هنگامی که \fIxdm\fP یک پرس‌وجوی غیرمستقیم (Indirect query) را از طریق XDMCP دریافت می‌کند، می‌تواند یک فرآیند \fIchooser\fP (انتخاب‌گر) را اجرا کند تا از طرف نمایشگر، یک BroadcastQuery مبتنی بر XDMCP (یا یک پرس‌وجوی XDMCP به میزبان‌های مشخص‌شده) انجام دهد و منویی از میزبان‌های ممکنی که مدیریت نمایش XDMCP را ارائه می‌دهند، عرضه نماید. این ویژگی برای ترمینال‌های X که خودشان فاقد منوی انتخاب میزبان هستند، بسیار سودمند است. .PP می‌توان .I Xdm را به گونه‌ای پیکربندی کرد که پیام‌های BroadcastQuery را از میزبان‌های انتخابی نادیده بگیرد. این قابلیت زمانی مفید است که نمی‌خواهید این میزبان در منوهای ایجادشده توسط .I chooser یا خود ترمینال‌های X ظاهر شود. .PP از آنجا که .I xdm نخستین رابطی است که کاربران مشاهده می‌کنند، طوری طراحی شده است که استفاده از آن ساده بوده و سفارشی‌سازی آن برای نیازهای یک سیستم خاص آسان باشد. .I Xdm گزینه‌های متعددی دارد که اغلب آنها دارای مقادیر پیش‌فرض مناسبی هستند. بخش‌های مختلف این راهنما را مرور کنید و موارد مورد نیاز خود را برای تغییر انتخاب نمایید. به ویژه به بخش .B "برنامه نشست (SESSION PROGRAM)" توجه داشته باشید که نحوه راه‌اندازی و تنظیم سبک نشست مورد نظر را شرح می‌دهد. .SH "نمای کلی (OVERVIEW)" \fIxdm\fP بسیار منعطف و قابل پیکربندی است و بیشتر رفتارهای آن را می‌توان توسط فایل‌های منابع (resource files) و اسکریپت‌های شل کنترل کرد. نام‌های این فایل‌ها خود منابعی هستند که از فایل \fIxdm-config\fP یا فایل مشخص‌شده با گزینه \fB\-config\fP خوانده می‌شوند. .PP \fIxdm\fP مدیریت نمایشگرها را به دو روش مختلف ارائه می‌دهد: می‌تواند سرورهای X را که روی ماشین محلی اجرا می‌شوند و در \fIXservers\fP مشخص شده‌اند مدیریت کند، و همچنین می‌تواند سرورهای X راه دور (معمولاً ترمینال‌های X) را با استفاده از XDMCP (پروتکل کنترل XDM) مطابق آنچه در فایل \fIXaccess\fP مشخص شده است، مدیریت نماید. .PP منابع کلاینت‌های X که توسط \fIxdm\fP خارج از نشست کاربر اجرا می‌شوند، از جمله پنجره ورود اختصاصی خود \fIxdm\fP، را می‌توان با تنظیم منابع در فایل \fIXresources\fP تحت تأثیر قرار داد. .PP برای ترمینال‌های X که منویی از میزبان‌ها برای دریافت مدیریت نمایش ارائه نمی‌دهند، \fIxdm\fP می‌تواند میزبان‌های مایل به پذیرش را جمع‌آوری کرده و برنامه \fIchooser\fP را برای ارائه منو به کاربر اجرا کند. برای نمایشگرهای X متصل به یک میزبان، این مرحله معمولاً استفاده نمی‌شود، زیرا میزبان محلی خود مدیریت نمایش را بر عهده دارد. .PP پس از بازنشانی سرور X، دستور \fIxdm\fP اسکریپت \fIXsetup\fP را اجرا می‌کند تا به تنظیم صفحه‌ای که کاربر مشاهده می‌کند به همراه ویجت \fIxlogin\fP کمک کند. .PP ویجت \fIxlogin\fP که توسط \fIxdm\fP ارائه می‌شود، کادرهای نام‌آشنای درخواست نام کاربری و گذرواژه را به نمایش می‌گذارد. .PP پس از ورود کاربر، \fIxdm\fP اسکریپت \fIXstartup\fP را با دسترسی کاربر ریشه (root) اجرا می‌کند. .PP سپس \fIxdm\fP اسکریپت \fIXsession\fP را در قالب کاربر واردشده اجرا می‌کند. این فایل نشست سیستمی ممکن است کارهای مقدماتی بیشتری انجام دهد و معمولاً اسکریپت \fI.xsession\fP را در دایرکتوری خانگی کاربر اجرا می‌کند. هنگامی که اجرای اسکریپت \fIXsession\fP خاتمه یابد، نشست به پایان رسیده است. .PP در پایان نشست، اسکریپت \fIXreset\fP برای پاک‌سازی اجرا می‌شود، سرور X بازنشانی می‌گردد و این چرخه دوباره از ابتدا آغاز می‌شود. .PP فایل \fI/var/log/xdm.log\fP شامل پیام‌های خطای .I xdm و تمام خروجی‌های ارسال‌شده به خروجی خطای استاندارد (stderr) توسط \fIXsetup، Xstartup، Xsession\fP یا \fIXreset\fP خواهد بود. هنگامی که در راه‌اندازی یا اجرای مناسب .I xdm با مشکل مواجه شدید، این فایل را بررسی کنید تا ببینید آیا .I xdm سرنخی از علت مشکل ارائه کرده است یا خیر. .SH "گزینه‌ها (OPTIONS)" .PP تمام این گزینه‌ها، به جز خود \fB\-config\fP، مقدارهایی را تعیین می‌کنند که می‌توان آن‌ها را در فایل پیکربندی به عنوان منبع (resource) نیز مشخص کرد. .IP "\fB\-config\fP \fIconfiguration_file\fP" نام فایل پیکربندی را تعیین می‌کند که منابع را برای کنترل رفتار .I xdm مشخص می‌سازد. مقدار پیش‌فرض .I /etc/X11/xdm/xdm-config است. بخش \fBفایل پیکربندی (CONFIGURATION FILE)\fP را ببینید. .IP "\fB\-nodaemon\fP" مقدار «false» را برای منبع \fBDisplayManager.daemonMode\fP تعیین می‌کند. این گزینه از رفتار معمول دیمن جلوگیری می‌کند؛ رفتاری که در آن .I xdm هنگام آغاز به کار، تمام توصیف‌کننده‌های فایل را می‌بندد، خود را از ترمینال کنترل‌کننده جدا می‌کند و در پس‌زمینه قرار می‌گیرد. .IP "\fB\-debug\fP \fIdebug_level\fP" مقدار عددی منبع \fBDisplayManager.debugLevel\fP را تعیین می‌کند. یک مقدار غیرصفر باعث می‌شود .I xdm پیام‌های اشکال‌زدایی فراوانی را در ترمینال چاپ کند؛ همچنین منبع \fBDisplayManager.daemonMode\fP را غیرفعال کرده و .I xdm را مجبور به اجرای همگام (synchronous) می‌کند. برای تفسیر این پیام‌های اشکال‌زدایی، دسترسی به یک نسخه از کد منبع .I xdm تقریباً الزامی است. هیچ تلاشی برای منطقی‌سازی یا استانداردسازی این خروجی انجام نشده است. .IP "\fB\-error\fP \fIerror_log_file\fP" مقدار منبع \fBDisplayManager.errorLogFile\fP را تعیین می‌کند. این فایل شامل خطاهای .I xdm و همچنین هر متنی است که توسط اسکریپت‌ها و برنامه‌های مختلف در طول پیشرفت نشست به stderr ارسال شده باشد. .IP "\fB\-resources\fP \fIresource_file\fP" مقدار منبع \fBDisplayManager*resources\fP را تعیین می‌کند. این فایل با استفاده از .IR xrdb (1) بارگذاری می‌شود تا پارامترهای پیکربندی را برای ویجت احراز هویت تعیین کند. .IP "\fB\-server\fP \fIserver_entry\fP" مقدار منبع \fBDisplayManager.servers\fP را تعیین می‌کند. برای شرح این منبع، بخش .B "مشخص‌سازی سرور محلی (LOCAL SERVER SPECIFICATION)" را ببینید. .IP "\fB\-udpPort\fP \fIport_number\fP" مقدار منبع \fBDisplayManager.requestPort\fP را تعیین می‌کند. این منبع شماره درگاهی را تنظیم می‌کند که .I xdm در آن به درخواست‌های XDMCP گوش می‌دهد. اگر روی 0 تنظیم شود، xdm به درخواست‌های XDMCP یا Chooser گوش نخواهد داد. از آنجا که XDMCP از پورت شناخته‌شده و ثبت‌شده UDP شماره 177 استفاده می‌کند، این منبع نباید به مقداری جز 0 تغییر یابد، مگر به منظور اشکال‌زدایی. .IP "\fB\-session\fP \fIsession_program\fP" مقدار منبع \fBDisplayManager*session\fP را تعیین می‌کند. این گزینه برنامه‌ای را مشخص می‌کند که پس از ورود کاربر به عنوان نشست اجرا می‌شود. .IP "\fB\-xrm\fP \fIresource_specification\fP" امکان تعیین یک منبع دلخواه را فراهم می‌کند، همانند اکثر برنامه‌های X Toolkit. .SH "منابع و پیکربندی (RESOURCES)" در بسیاری از مراحل، اقدامات .I xdm را می‌توان با استفاده از فایل پیکربندی آن که در قالب منابع X (X resource) است کنترل کرد. برخی منابع رفتار .I xdm را روی تمام نمایشگرها تغییر می‌دهند، در حالی که برخی دیگر رفتار آن را روی یک نمایشگر خاص تغییر می‌دهند. در مواردی که اقدامات به یک نمایشگر خاص مربوط می‌شوند، نام نمایشگر در نام منبع بین «DisplayManager» و بخش پایانی نام منبع درج می‌شود. .PP برای نمایشگرهای محلی، نام و کلاس منبع همان مواردی است که از فایل \fIXservers\fP خوانده می‌شود. .PP برای نمایشگرهای راه دور، نام منبع همان چیزی است که آدرس شبکه نمایشگر به آن بازشناسی (resolve) می‌شود. منبع \fBremoveDomain\fP را ببینید. نام باید کاملاً مطابقت داشته باشد؛ \fIxdm\fP از تمام نام‌های مستعار شبکه‌ای که ممکن است به یک نمایشگر خاص برسند آگاه نیست. اگر بازشناسی نام ناموفق باشد، از آدرس استفاده می‌شود. کلاس منبع همان چیزی است که توسط نمایشگر در درخواست XDMCP Manage ارسال می‌شود. .PP از آنجا که مدیر منابع از دو‌نقطه (:) برای جدا کردن نام منبع از مقدار آن و از نقطه (.) برای جدا کردن بخش‌های نام منبع استفاده می‌کند، .I xdm هنگام تولید نام منبع، خط زیر (_) را جایگزین نقطه‌ها و دونقطه‌ها می‌کند. به عنوان مثال، \fBDisplayManager.expo_x_org_0.startup\fP نام منبعی است که فایل شل راه‌اندازی اولیه را برای نمایشگر «expo.x.org:0» تعیین می‌کند. .\" .IP "\fBDisplayManager.servers\fP" این منبع یا نام فایلی پر از ورودی‌های سرور (در هر سطر یک ورودی، اگر مقدار با اسلش شروع شود) را مشخص می‌کند، یا شامل یک تک‌ورودی سرور است. برای جزئیات، بخش \fBمشخص‌سازی سرور محلی (LOCAL SERVER SPECIFICATION)\fP را ببینید. .IP "\fBDisplayManager.requestPort\fP" این منبع شماره پورت UDP را نشان می‌دهد که .I xdm برای گوش دادن به درخواست‌های ورودی XDMCP استفاده می‌کند. مگر اینکه نیاز به اشکال‌زدایی سیستم داشته باشید، این مقدار را روی مقدار پیش‌فرض 177 رها کنید. .IP "\fBDisplayManager.errorLogFile\fP" خروجی خطا معمولاً به کنسول سیستم هدایت می‌شود. برای تغییر مسیر آن، این منبع را روی یک نام فایل تنظیم کنید. روشی برای ارسال این پیام‌ها به .I syslog باید برای سیستم‌هایی که از آن پشتیبانی می‌کنند توسعه داده شود؛ با این حال، تنوع گسترده رابط‌ها مانع از پیاده‌سازی مستقل از سیستم می‌شود. این فایل همچنین شامل هرگونه خروجی هدایت‌شده به stderr توسط فایل‌های \fIXsetup، Xstartup، Xsession\fP و \fIXreset\fP است، بنابراین شامل شرح مشکلات موجود در آن اسکریپت‌ها نیز خواهد بود. .IP "\fBDisplayManager.debugLevel\fP" اگر مقدار عددی صحیح این منبع بزرگتر از صفر باشد، حجم انبوهی از اطلاعات اشکال‌زدایی چاپ خواهد شد. همچنین حالت دیمن را غیرفعال می‌کند (حالتی که اطلاعات را روانه سطل زباله بیتی می‌کرد) و به کاربران غیر ریشه اجازه می‌دهد .I xdm را اجرا کنند که در حالت عادی چندان کاربردی نیست. .IP "\fBDisplayManager.daemonMode\fP" در حالت عادی، .I xdm تلاش می‌کند خود را به یک فرآیند دیمن بدون وابستگی به هیچ ترمینالی تبدیل کند. این کار با انشعاب (forking) و رها کردن فرآیند والد برای خروج انجام می‌شود؛ سپس بستن توصیف‌کننده‌های فایل و آزادسازی ترمینال کنترل‌کننده صورت می‌پذیرد. در برخی محیط‌ها این رفتار مطلوب نیست (به ویژه هنگام اشکال‌زدایی). تنظیم این منبع روی «false» این ویژگی را غیرفعال می‌کند. .IP "\fBDisplayManager.pidFile\fP" نام فایل مشخص‌شده ایجاد خواهد شد تا حاوی نمایش متنی ASCII از شناسه فرآیند (PID) فرآیند اصلی .I xdm باشد. .I Xdm همچنین از قفل‌گذاری فایل روی این فایل استفاده می‌کند تا از اجرای همزمان چند دیمن بر روی یک ماشین جلوگیری کند؛ اتفاقی که می‌توانست آشفتگی زیادی ایجاد نماید. .IP "\fBDisplayManager.lockPidFile\fP" این منبعی است که تعیین می‌کند آیا .I xdm از قفل‌گذاری فایل برای جلوگیری از تداخل و خارج از کنترل شدن چندین مدیر نمایش استفاده کند یا خیر. در System V، این قابلیت از فراخوانی کتابخانه‌ای \fIlockf\fP استفاده می‌کند، در حالی که در BSD از \fIflock\fP بهره می‌برد. .IP "\fBDisplayManager.authDir\fP" این منبع دایرکتوری‌ای را نام می‌برد که .I xdm فایل‌های مجوز و احراز هویت را در حین راه‌اندازی نشست در آن ذخیره می‌کند. مقدار پیش‌فرض \fI/var/lib/xdm\fP است. می‌تواند برای نمایشگرهای خاص توسط DisplayManager.\fIDISPLAY\fP.authFile لغو شود. .IP \fBDisplayManager.autoRescan\fP این متغیر بولی مشخص می‌کند که آیا .I xdm پس از پایان یک نشست و در صورت تغییر فایل‌ها، فایل‌های پیکربندی، سرورها، کنترل دسترسی و کلیدهای احراز هویت را مجدداً بررسی و پویش کند یا خیر. به طور پیش‌فرض مقدار آن «true» است. می‌توانید با ارسال سیگنال SIGHUP به فرآیند اصلی، .I xdm را مجبور به خواندن مجدد این فایل‌ها کنید. .IP "\fBDisplayManager.removeDomainname\fP" هنگام محاسبه نام نمایشگر برای کلاینت‌های XDMCP، تحلیل‌گر نام (name resolver) معمولاً یک نام میزبان کاملاً واجد شرایط (FQDN) برای ترمینال ایجاد می‌کند. از آنجا که این موضوع گاهی گیج‌کننده است، در صورتی که این متغیر تنظیم شده باشد و نام دامنه ترمینال با نام دامنه میزبان محلی یکسان باشد، .I xdm بخش نام دامنه را از نام میزبان حذف می‌کند. به طور پیش‌فرض مقدار آن «true» است. .IP "\fBDisplayManager.keyFile\fP" احراز هویت XDMCP از نوع XDM-AUTHENTICATION-1 نیازمند آن است که یک کلید خصوصی میان .I xdm و ترمینال به اشتراک گذاشته شود. این منبع فایلی را مشخص می‌کند که حاوی این مقادیر است. هر ورودی در این فایل شامل یک نام نمایشگر و کلید مشترک است. .IP \fBDisplayManager.accessFile\fP برای جلوگیری از ارائه غیرمجاز سرویس XDMCP و امکان فوروارد درخواست‌های IndirectQuery در XDMCP، این فایل حاوی پایگاه داده‌ای از نام‌های میزبان است که یا دسترسی مستقیم به این ماشین به آن‌ها داده شده است، یا دارای فهرستی از میزبان‌ها هستند که پرس‌وجوها باید به آن‌ها هدایت شوند. قالب این فایل در بخش .B "کنترل دسترسی XDMCP (XDMCP ACCESS CONTROL)" شرح داده شده است. .IP \fBDisplayManager.exportList\fP فهرستی از متغیرهای محیطی اضافی که با فاصله از هم جدا شده‌اند، تا به برنامه‌های \fIXsetup\fP، \fIXstartup\fP، \fIXsession\fP و \fIXreset\fP منتقل شوند. .\" The command "if 'x.A'x' .ig" causes everything up to .. to be ignored .\" if A is replaced by an empty string in the sed processing, otherwise .\" it will be output as normal. .if !'x.yes'x.' .ig .IP \fBDisplayManager.randomFile\fP فایلی برای محاسبه چِک‌سام جهت تولید بذر (seed) کلیدهای احراز هویت. این فایل باید فایلی باشد که به طور مداوم تغییر می‌کند. مقدار پیش‌فرض \fI/dev/mem\fP است. .. .if 'x./dev/urandom'x.' .ig .IP \fBDisplayManager.randomDevice\fP فایلی برای خواندن ۸ بایت جهت تولید بذر کلیدهای احراز هویت. پیش‌فرض \fI/dev/urandom\fP است. اگر این فایل قابل خواندن نباشد، یا اگر یک عملیات خواندن بیش از ۵ ثانیه مسدود شود، xdm به استفاده از چِک‌سام \fBDisplayManager.randomFile\fP برای تولید بذر برمی‌گردد. .. .if !'x.yes'x.' .ig .IP \fBDisplayManager.prngdSocket\fP .IP \fBDisplayManager.prngPort\fP یک نام سوکت یونیکس (UNIX domain socket) یا شماره پورت سوکت TCP روی میزبان محلی که یک دیمن مولد اعداد شبه‌تصادفی مانند EGD (http://egd.sourceforge.net) روی آن گوش می‌دهد، به منظور تولید کلیدهای احراز هویت. باید یک پورت غیرصفر یا یک نام سوکت معتبر مشخص شود. پیش‌فرض استفاده از سوکت دامنه یونیکس \fI/tmp/entropy\fP است. .PP در سیستم‌هایی که فاقد چنین دیمنی هستند، یک سامانه جایگزین جمع‌آوری آنتروپی مبتنی بر محتوای فایل‌های مختلف گزارش هش‌شده با الگوریتم MD5 به جای آن استفاده می‌شود. .. .IP \fBDisplayManager.greeterLib\fP در سیستم‌هایی که از کتابخانه خوش‌آمدگویی با بارگذاری پویا پشتیبانی می‌کنند، نام کتابخانه را مشخص می‌کند. پیش‌فرض \fI/usr/lib/X11/xdm/libXdmGreet.so\fP است. .IP \fBDisplayManager.choiceTimeout\fP تعداد ثانیه‌هایی که باید پس از انتخاب یک میزبان از chooser توسط کاربر، منتظر پاسخ نمایشگر ماند. اگر نمایشگر یک XDMCP IndirectQuery در این بازه زمانی ارسال کند، درخواست به میزبان انتخاب‌شده هدایت می‌شود. در غیر این صورت، فرض می‌شود که مربوط به یک نشست جدید است و منوی chooser مجدداً ارائه می‌شود. پیش‌فرض 15 است. .IP \fBDisplayManager.sourceAddress\fP در میزبان‌های دارای چند رابط شبکه (multihomed)، از آدرس عددی IP اتصال ورودی به جای نام میزبان استفاده می‌کند. این کار برای جلوگیری از تلاش برای اتصال روی رابط شبکه اشتباهی است که ممکن است در آن زمان غیرفعال باشد. .IP \fBDisplayManager.willing\fP برنامه‌ای را مشخص می‌کند که با دسترسی کاربر ریشه در هنگام دریافت یک XDMCP BroadcastQuery اجرا می‌شود، در صورتی که این میزبان برای ارائه مدیریت نمایش XDMCP پیکربندی شده باشد. خروجی این برنامه ممکن است در پنجره انتخاب‌گر (chooser) نمایش داده شود. اگر برنامه‌ای مشخص نشده باشد، رشته \fIWilling to manage\fP ارسال می‌شود. .PP .\" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.resources\fP" این منبع نام فایلی را مشخص می‌کند که باید توسط \fIxrdb\fP به عنوان پایگاه داده منابع روی پنجره ریشه صفحه 0 نمایشگر بارگذاری شود. برنامه \fIXsetup\fP، ویجت ورود (Login) و \fIchooser\fP از منابع تعیین‌شده در این فایل استفاده خواهند کرد. این پایگاه داده منابع درست قبل از شروع فرآیند احراز هویت بارگذاری می‌شود، بنابراین می‌تواند ظاهر پنجره ورود را کنترل کند. بخش .B "ویجت احراز هویت (AUTHENTICATION WIDGET)" را ببینید که منابع مختلف مناسب برای قرار دادن در این فایل را شرح می‌دهد. هیچ مقدار پیش‌فرضی برای این منبع وجود ندارد، اما \fI/etc/X11/xdm/Xresources\fP نام مرسوم و استاندارد آن است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.chooser\fP" برنامه‌ای را تعیین می‌کند که برای ارائه منوی میزبان‌ها برای پرس‌وجوهای غیرمستقیم تغییرمسیریافته به نام میزبان ویژه CHOOSER اجرا می‌شود. پیش‌فرض \fI/usr/lib/X11/xdm/chooser\fP است. بخش‌های \fBکنترل دسترسی XDMCP (XDMCP ACCESS CONTROL)\fP و \fBانتخاب‌گر (CHOOSER)\fP را ببینید. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.xrdb\fP" برنامه مورد استفاده برای بارگذاری منابع را تعیین می‌کند. به طور پیش‌فرض، .I xdm از \fI/usr/bin/xrdb\fP استفاده می‌کند. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.setup\fP" برنامه‌ای را تعیین می‌کند که (با دسترسی root) پیش از ارائه پنجره ورود اجرا می‌شود. این برنامه می‌تواند برای تغییر ظاهر صفحه در اطراف پنجره ورود یا نمایش پنجره‌های دیگر استفاده شود (به عنوان مثال، شاید بخواهید \fIxconsole\fP را در اینجا اجرا کنید). به طور پیش‌فرض هیچ برنامه‌ای اجرا نمی‌شود. نام مرسوم برای فایل مورد استفاده در اینجا \fIXsetup\fP است. بخش \fBبرنامه راه‌اندازی (SETUP PROGRAM)\fP را ببینید. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.startup\fP" برنامه‌ای را مشخص می‌کند که (با دسترسی root) پس از موفقیت در فرآیند احراز هویت اجرا می‌شود. به طور پیش‌فرض هیچ برنامه‌ای اجرا نمی‌شود. نام مرسوم برای فایل مورد استفاده در اینجا \fIXstartup\fP است. بخش \fBبرنامه شروع اولیه (STARTUP PROGRAM)\fP را ببینید. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.session\fP" نشستی را که باید اجرا شود مشخص می‌کند (بدون دسترسی root اجرا می‌شود). به طور پیش‌فرض، \fI/usr/bin/xterm\fP اجرا می‌شود. نام مرسوم \fIXsession\fP است. بخش .B "برنامه نشست (SESSION PROGRAM)" را ببینید. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.reset\fP" برنامه‌ای را مشخص می‌کند که (با دسترسی root) پس از پایان نشست اجرا می‌شود. به طور پیش‌فرض، هیچ برنامه‌ای اجرا نمی‌شود. نام مرسوم \fIXreset\fP است. بخش .B "برنامه بازنشانی (RESET PROGRAM)" را ببینید. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.openDelay\fP" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.openRepeat\fP" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.openTimeout\fP" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.startAttempts\fP" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.reservAttempts\fP" این منابع عددی رفتار .I xdm را هنگام تلاش برای باز کردن سرورهای سرکش و ناسازگار کنترل می‌کنند. \fBopenDelay\fP طول مکث بر حسب ثانیه بین تلاش‌های متوالی است، \fBopenRepeat\fP تعداد تلاش‌های انجام‌شده است، \fBopenTimeout\fP مدت زمانی است که در هنگام تلاش واقعی برای باز کردن منتظر می‌ماند (یعنی حداکثر زمان سپری‌شده در فراخوانی سیستمی .IR connect (2)) و \fBstartAttempts\fP تعداد دفعاتی است که این کل فرآیند قبل از قطع امید از سرور انجام می‌شود. پس از اینکه \fBopenRepeat\fP تلاش انجام شد، یا اگر در هر تلاش خاص \fBopenTimeout\fP ثانیه سپری شود، .I xdm سرور را خاتمه داده و مجدداً راه‌اندازی می‌کند و برای اتصال دوباره تلاش می‌نماید. این فرآیند به تعداد \fBstartAttempts\fP بار تکرار می‌شود و در آن نقطه نمایشگر از کار افتاده تلقی شده و غیرفعال می‌گردد. اگرچه این رفتار ممکن است دلخواه به نظر برسد، اما به صورت تجربی ایجاد شده و روی بیشتر سیستم‌ها به خوبی کار می‌کند. کران \fBreservAttempts\fP تعداد دفعاتی است که یک اتصال موفق مجاز است به دنبال یک خطای مهلک رخ دهد. هنگامی که به این حد برسد، نمایشگر غیرفعال می‌شود. مقادیر پیش‌فرض عبارتند از: \fBopenDelay\fP: 15، \fBopenRepeat\fP: 5، \fBopenTimeout\fP: 120، \fBstartAttempts\fP: 4 و \fBreservAttempts\fP: 2. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.pingInterval\fP" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.pingTimeout\fP" برای کشف زمان ناپدید شدن نمایشگرهای راه دور، .I xdm گاه‌به‌گاه آن‌ها را با استفاده از اتصال X و فراخوانی‌های \fIXSync\fP پینگ می‌کند. \fBpingInterval\fP زمان (بر حسب دقیقه) بین هر تلاش پینگ را مشخص می‌کند، \fBpingTimeout\fP حداکثر زمان (بر حسب دقیقه) را برای منتظر ماندن جهت پاسخگویی ترمینال به درخواست تعیین می‌نماید. اگر ترمینال پاسخ ندهد، نشست از بین رفته تلقی شده و خاتمه می‌یابد. به طور پیش‌فرض، هر دو روی 5 دقیقه تنظیم شده‌اند. اگر مکرراً از ترمینال‌های X استفاده می‌کنید که ممکن است ارتباطشان با میزبان مدیریت‌کننده قطع شود، شاید بخواهید این مقدار را افزایش دهید. تنها نگرانی این است که نشست‌ها پس از غیرفعال شدن تصادفی ترمینال همچنان به حیات خود ادامه دهند. .I xdm نمایشگرهای محلی را پینگ نمی‌کند. اگرچه این کار بی‌ضرر به نظر می‌رسد، اما زمانی که نشست ایستگاه کاری در نتیجه معلق ماندن سرور برای سرویس NFS و عدم پاسخگویی به پینگ خاتمه یابد، بسیار ناخوشایند است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.terminateServer\fP" این منبع بولی مشخص می‌کند که آیا سرور X هنگام خاتمه یافتن نشست باید متوقف شود (به جای بازنشانی آن). این گزینه می‌تواند زمانی استفاده شود که سرور در طول زمان تمایل به رشد بی‌رویه مصرف حافظه دارد، تا مدت زمان اجرای سرور محدود گردد. مقدار پیش‌فرض «false» است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.userPath\fP" .I Xdm متغیر محیطی PATH را برای نشست روی این مقدار تنظیم می‌کند. این مقدار باید فهرستی از دایرکتوری‌ها باشد که با دونقطه از هم جدا شده‌اند؛ برای توضیحات کامل به .IR sh (1) مراجعه کنید. مقدار پیش‌فرض «/usr/local/bin:/usr/bin:/bin» است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.systemPath\fP" .I Xdm متغیر محیطی PATH را برای اسکریپت‌های شروع اولیه و بازنشانی روی مقدار این منبع تنظیم می‌کند. پیش‌فرض برای این منبع «/usr/local/bin:/usr/bin:/bin» است. به نبودن «.» در این ورودی توجه کنید. این یک شیوه مناسب برای کاربر ریشه (root) است؛ زیرا از بسیاری از روش‌های رایج نفوذ اسب تروجان به سیستم جلوگیری می‌کند. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.systemShell\fP" .I Xdm متغیر محیطی SHELL را برای اسکریپت‌های شروع اولیه و بازنشانی روی مقدار این منبع تنظیم می‌کند. به طور پیش‌فرض \fI/bin/sh\fP است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.failsafeClient\fP" اگر اجرای نشست پیش‌فرض با شکست مواجه شود، .I xdm به این برنامه رجوع می‌کند. این برنامه بدون هیچ آرگومانی اجرا می‌شود، اما از همان متغیرهای محیطی استفاده می‌کند که نشست باید می‌داشت (بخش \fBبرنامه نشست (SESSION PROGRAM)\fP را ببینید). به طور پیش‌فرض، \fI/usr/bin/xterm\fP استفاده می‌شود. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.grabServer\fP" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.grabTimeout\fP" برای ارتقای امنیت، .I xdm در حین خواندن نام کاربری و گذرواژه، سرور و صفحه‌کلید را به انحصار خود درمی‌آورد (grab می‌کند). منبع \fBgrabServer\fP مشخص می‌کند که آیا سرور باید در تمام طول خواندن نام و گذرواژه در حالت انحصاری نگه داشته شود یا خیر. هنگامی که روی «false» باشد، سرور پس از موفقیت در انحصار صفحه‌کلید از حالت انحصاری خارج می‌شود؛ در غیر این صورت سرور تا درست قبل از شروع نشست در حالت انحصاری باقی می‌ماند. مقدار پیش‌فرض «false» است. منبع \fBgrabTimeout\fP حداکثر زمانی را که .I xdm برای موفقیت‌آمیز بودن انحصار منتظر می‌ماند، مشخص می‌کند. این انحصار ممکن است در صورتی که کلاینت دیگری سرور را به انحصار درآورده باشد، یا احتمالاً اگر تأخیر شبکه بسیار بالا باشد، شکست بخورد. این منبع مقدار پیش‌فرضی برابر با ۳ ثانیه دارد؛ هنگام افزایش آن باید محتاط باشید، زیرا یک کاربر ممکن است توسط یک پنجره جعلی مشابه در صفحه فریب بخورد. اگر انحصار شکست بخورد، .I xdm سرور (در صورت امکان) و نشست را متوقف کرده و مجدداً راه‌اندازی می‌کند. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.authorize\fP" .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.authName\fP" \fBauthorize\fP یک منبع بولی است که کنترل می‌کند آیا .I xdm مجوز اتصال سرور محلی را تولید کرده و به کار می‌گیرد یا خیر. اگر مجوزدهی استفاده شود، \fBauthName\fP فهرستی از سازوکارهای مجوزدهی مورد استفاده است که با فاصله جدا شده‌اند. اتصالات XDMCP به صورت پویا مشخص می‌کنند که چه سازوکارهای احراز هویتی پشتیبانی می‌شوند، بنابراین \fBauthName\fP در این حالت نادیده گرفته می‌شود. هنگامی که \fBauthorize\fP برای یک نمایشگر تنظیم شده باشد و احراز هویت در دسترس نباشد، با نمایش پیامی متفاوت در ویجت ورود، به کاربر اطلاع داده می‌شود. به طور پیش‌فرض، \fBauthorize\fP برابر «true» و \fBauthName\fP برابر «MIT-MAGIC-COOKIE-1» است؛ یا در صورت در دسترس بودن XDM-AUTHORIZATION-1، برابر «XDM-AUTHORIZATION-1\0MIT-MAGIC-COOKIE-1». .IP \fBDisplayManager.\fP\fIDISPLAY\fP\fB.authFile\fP این فایل برای انتقال داده‌های مجوزدهی از .I xdm به سرور، با استفاده از گزینه خط فرمان سرور \fB\-auth\fP استفاده می‌شود. این فایل باید در دایرکتوری‌ای نگهداری شود که برای همه قابل نوشتن نباشد؛ چرا که به راحتی می‌تواند حذف شود و سازوکار مجوزدهی را در سرور غیرفعال سازد. در صورت مشخص نشدن، نامی از DisplayManager.authDir و نام نمایشگر ایجاد می‌شود. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.authComplain\fP" اگر روی «false» تنظیم شود، استفاده از \fBunsecureGreeting\fP را در پنجره ورود غیرفعال می‌کند. بخش \fBویجت احراز هویت (AUTHENTICATION WIDGET)\fP را ببینید. پیش‌فرض «true» است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.resetSignal\fP" شماره سیگنالی که \fIxdm\fP برای بازنشانی سرور ارسال می‌کند. بخش \fBکنترل سرور (CONTROLLING THE SERVER)\fP را ببینید. پیش‌فرض 1 (SIGHUP) است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.termSignal\fP" شماره سیگنالی که \fIxdm\fP برای خاتمه دادن به سرور ارسال می‌کند. بخش \fBکنترل سرور (CONTROLLING THE SERVER)\fP را ببینید. پیش‌فرض 15 (SIGTERM) است. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.resetForAuth\fP" پیاده‌سازی اولیه مجوزدهی در سرور نمونه، فایل مجوز را در زمان بازنشانی سرور مجدداً می‌خواند، نه هنگام بررسی اتصال اولیه. از آنجا که .I xdm اطلاعات مجوزدهی را درست قبل از اتصال به نمایشگر تولید می‌کند، یک سرور قدیمی اطلاعات مجوزدهی به‌روز را دریافت نمی‌کرد. این منبع باعث می‌شود .I xdm پس از تنظیم فایل، سیگنال SIGHUP را به سرور ارسال کند که موجب یک بازنشانی اضافی سرور می‌شود و در طول این مدت اطلاعات مجوزدهی جدید خوانده خواهد شد. پیش‌فرض «false» است که برای تمام سرورهای MIT به خوبی کار می‌کند. .IP "\fBDisplayManager.\fP\fIDISPLAY\fP\fB.userAuthDir\fP" هنگامی که .I xdm قادر به نوشتن در فایل معمول مجوز کاربر ($HOME/.Xauthority) نباشد، یک نام فایل یکتا در این دایرکتوری ایجاد می‌کند و متغیر محیطی XAUTHORITY را به فایل ایجادشده هدایت می‌نماید. به طور پیش‌فرض از \fI/tmp\fP استفاده می‌کند. .SH "فایل پیکربندی (CONFIGURATION FILE)" ابتدا باید فایل پیکربندی .I xdm راه‌اندازی شود. دایرکتوری‌ای ایجاد کنید (معمولاً \fI/etc/X11/xdm\fP) که شامل تمام فایل‌های مرتبط باشد. .LP در اینجا یک فایل پیکربندی مناسب آورده شده است که می‌تواند \fIxdm-config\fP نامیده شود: .nf .ft CW DisplayManager.servers: /etc/X11/xdm/Xservers DisplayManager.errorLogFile: /var/log/xdm.log DisplayManager*resources: /etc/X11/xdm/Xresources DisplayManager*startup: /etc/X11/xdm/Xstartup DisplayManager*session: /etc/X11/xdm/Xsession DisplayManager.pidFile: /var/run/xdm-pid DisplayManager._0.authorize: true DisplayManager*authorize: false .ft .fi .PP توجه داشته باشید که این فایل بیشتر حاوی ارجاع به فایل‌های دیگر است. همچنین توجه داشته باشید که برخی از منابع با «*» برای جدا کردن مؤلفه‌ها مشخص شده‌اند. این منابع را می‌توان با جایگزین کردن «*» با نام نمایشگر برای هر نمایشگر متفاوت یکتا کرد، اما در حالت عادی این کار چندان کاربردی نیست. برای بحث کامل، بخش \fBمنابع و پیکربندی (RESOURCES)\fP را ببینید. .SH "کنترل دسترسی XDMCP (XDMCP ACCESS CONTROL)" .PP فایل پایگاه داده مشخص‌شده توسط \fBDisplayManager.accessFile\fP اطلاعاتی را ارائه می‌دهد که .I xdm از آن‌ها برای کنترل دسترسی نمایشگرهایی که درخواست سرویس XDMCP دارند استفاده می‌کند. این فایل شامل سه نوع ورودی است: ورودی‌هایی که پاسخ به پرس‌وجوهای مستقیم (Direct) و سراسری (Broadcast) را کنترل می‌کنند، ورودی‌هایی که پاسخ به پرس‌وجوهای غیرمستقیم (Indirect) را کنترل می‌کنند، و تعاریف ماکروها. .PP قالب ورودی‌های مستقیم ساده است، یا یک نام میزبان یا یک الگو است که با درج یک یا چند نویسه متا («*» با هر دنباله‌ای از ۰ یا چند نویسه مطابقت دارد، و «?» با هر تک‌نویسه‌ای مطابقت دارد) که با نام میزبان دستگاه نمایشگر مقایسه می‌شوند، از نام میزبان متمایز می‌گردد. اگر ورودی نام میزبان باشد، تمام مقایسه‌ها با استفاده از آدرس‌های شبکه انجام می‌شوند، بنابراین هر نامی که به آدرس شبکه صحیح تبدیل شود می‌تواند استفاده شود. برای الگوها، تنها از نام‌های استاندارد (canonical) میزبان در مقایسه استفاده می‌شود، بنابراین اطمینان حاصل کنید که تلاشی برای تطبیق با نام‌های مستعار نکنید. قرار دادن نویسه «!» قبل از یک نام میزبان یا یک الگو باعث می‌شود میزبان‌هایی که با آن ورودی مطابقت دارند مستثنی گردند. .PP برای پاسخ دادن تنها به پرس‌وجوهای مستقیم برای یک میزبان یا الگو، می‌توان کلمه کلیدی اختیاری «NOBROADCAST» را پس از آن قرار داد. این کار می‌تواند برای جلوگیری از نمایش یک سرور xdm در منوهای مبتنی بر پرس‌وجوهای Broadcast استفاده شود. .PP یک ورودی غیرمستقیم نیز حاوی یک نام میزبان یا الگو است، اما به دنبال آن فهرستی از نام‌های میزبان یا ماکروهایی می‌آید که پرس‌وجوهای غیرمستقیم باید به آن‌ها ارسال شوند. .PP یک تعریف ماکرو شامل یک نام ماکرو و فهرستی از نام‌های میزبان و سایر ماکروهایی است که ماکرو به آن‌ها گسترش می‌یابد. برای تشخیص ماکروها از نام‌های میزبان، نام ماکروها با یک نویسه «%» آغاز می‌شود. ماکروها می‌توانند تو در تو باشند. .PP ورودی‌های غیرمستقیم همچنین ممکن است مشخص کنند که \fIxdm\fP برنامه \fIchooser\fP را برای ارائه منویی از میزبان‌ها جهت اتصال اجرا کند. بخش \fBانتخاب‌گر (CHOOSER)\fP را ببینید. .PP هنگام بررسی دسترسی برای یک میزبان نمایشگر خاص، هر ورودی به نوبت بررسی می‌شود و اولین ورودی منطبق، پاسخ را تعیین می‌کند. ورودی‌های مستقیم و سراسری (Direct و Broadcast) هنگام پویش برای یک ورودی غیرمستقیم نادیده گرفته می‌شوند و بالعکس. .PP خطوط خالی نادیده گرفته می‌شوند، «#» به عنوان جداکننده توضیحات در نظر گرفته می‌شود و باعث نادیده گرفته شدن ادامه آن خط می‌گردد، و «\e\fInewline\fP» باعث نادیده گرفته شدن خط جدید می‌شود که امکان گسترش فهرست میزبان‌های غیرمستقیم در چند خط را فراهم می‌آورد. .PP در اینجا یک نمونه فایل Xaccess آورده شده است: .LP .nf .ft CW # # Xaccess \- XDMCP access control file # # # Direct/Broadcast query entries # !xtra.lcs.mit.edu # disallow direct/broadcast service for xtra bambi.ogi.edu # allow access from this particular display *.lcs.mit.edu # allow access from any display in LCS *.deshaw.com NOBROADCAST # allow only direct access *.gw.com # allow direct and broadcast # # Indirect query entries # %HOSTS expo.lcs.mit.edu xenon.lcs.mit.edu \\ excess.lcs.mit.edu kanga.lcs.mit.edu extract.lcs.mit.edu xenon.lcs.mit.edu #force extract to contact xenon !xtra.lcs.mit.edu dummy #disallow indirect access *.lcs.mit.edu %HOSTS #all others get to choose .ft .fi .PP اگر با پشتیبانی از IPv6 کامپایل شده باشد، گروه‌های آدرس چندپخشی (multicast) نیز ممکن است در فهرست آدرس‌هایی که پرس‌وجوهای غیرمستقیم به آن‌ها تنظیم می‌شوند گنجانده شوند. آدرس‌های چندپخشی می‌توانند با یک نویسه اختیاری / و تعداد پرش (hop count) همراه باشند. اگر تعداد پرش مشخص نشده باشد، تعداد پرش چندپخشی به طور پیش‌فرض 1 خواهد بود که بسته را در شبکه محلی نگه می‌دارد. برای چندپخشی در IPv4، تعداد پرش به عنوان TTL استفاده می‌شود. .PP مثال‌ها: .LP .nf .ft CW rincewind.sample.net ff02::1 #IPv6 Multicast to ff02::1 #with a hop count of 1 ponder.sample.net CHOOSER 239.192.1.1/16 #Offer a menu of hosts #who respond to IPv4 Multicast #to 239.192.1.1 with a #TTL of 16 .fi .SH "انتخاب‌گر (CHOOSER)" .PP برای ترمینال‌های X که منوی میزبان را برای استفاده با پرس‌وجوهای Broadcast یا Indirect ارائه نمی‌دهند، برنامه \fIchooser\fP می‌تواند این کار را برای آن‌ها انجام دهد. در فایل \fIXaccess\fP، «CHOOSER» را به عنوان اولین ورودی در فهرست میزبان‌های غیرمستقیم مشخص کنید. \fIChooser\fP یک درخواست Query به هر یک از نام‌های میزبان باقی‌مانده در فهرست ارسال می‌کند و منویی از تمام میزبان‌هایی که پاسخ می‌دهند ارائه می‌دهد. .PP این فهرست ممکن است شامل کلمه «BROADCAST» باشد، که در این صورت \fIchooser\fP به جای آن یک Broadcast ارسال می‌کند و مجدداً منویی از تمام میزبان‌هایی که پاسخ می‌دهند ارائه می‌نماید. توجه داشته باشید که در برخی سیستم‌عامل‌ها، بسته‌های UDP نمی‌توانند برودکست شوند، بنابراین این ویژگی در آن سیستم‌ها کار نخواهد کرد. .PP نمونه فایل \fIXaccess\fP با استفاده از \fIchooser\fP: .nf extract.lcs.mit.edu CHOOSER %HOSTS #offer a menu of these hosts xtra.lcs.mit.edu CHOOSER BROADCAST #offer a menu of all hosts .fi .PP برنامه مورد استفاده برای \fIchooser\fP توسط منبع \fBDisplayManager.\fP\fIDISPLAY\fP\fB.chooser\fP مشخص می‌شود. برای انعطاف‌پذیری بیشتر در این مرحله، chooser می‌تواند یک اسکریپت شل باشد. \fIChooser\fP در اینجا مدیر نشست است؛ این برنامه به جای فرآیند فرزند \fIxdm\fP برای مدیریت نمایشگر اجرا می‌شود. .PP منابع مربوط به این برنامه را می‌توان در فایلی قرار داد که توسط \fBDisplayManager.\fP\fIDISPLAY\fP\fB.resources\fP مشخص شده است. .PP هنگامی که کاربر میزبانی را انتخاب می‌کند، \fIchooser\fP میزبان انتخاب‌شده را چاپ می‌کند که توسط فرآیند والد \fIxdm\fP خوانده می‌شود، و سپس خارج می‌گردد. \fIxdm\fP اتصال خود به سرور X را می‌بندد، و سرور بازنشانی شده و یک درخواست XDMCP \fBIndirect\fP دیگر ارسال می‌کند. \fIxdm\fP انتخاب کاربر را (به مدت \fBDisplayManager.choiceTimeout\fP ثانیه) به خاطر می‌سپارد و درخواست را به میزبان انتخاب‌شده هدایت می‌کند، که نشستی را روی آن نمایشگر آغاز می‌نماید. .\" .SH "شنود (LISTEN)" دستورالعمل پیکربندی زیر نیز برای فایل پیکربندی Xaccess تعریف شده است: .IP "\fBLISTEN\fP \fIinterface\fP \fI[list of multicast group addresses]\fP" \fIinterface\fP ممکن است یک نام میزبان یا آدرس IP باشد که نشان‌دهنده یک رابط شبکه روی این ماشین است، یا نویسه عام * برای نشان دادن تمام رابط‌های شبکه موجود باشد. .PP اگر یک یا چند خط LISTEN مشخص شده باشد، xdm تنها روی رابط‌های شبکه مشخص‌شده به اتصالات XDMCP گوش می‌دهد. اگر آدرس‌های گروه چندپخشی در یک خط listen فهرست شده باشند، xdm در رابط شبکه ارائه‌شده به گروه‌های چندپخشی می‌پیوندد. .PP اگر هیچ خط LISTEN داده نشود، رفتار اصلی گوش دادن روی تمام رابط‌های شبکه برای سازگاری با گذشته حفظ می‌شود. علاوه بر این، اگر هیچ LISTEN مشخص نشده باشد، در صورت کامپایل با پشتیبانی از IPv6، xdm به گروه چندپخشی پیش‌فرض IPv6 برای XDMCP می‌پیوندد. .PP برای غیرفعال کردن کامل گوش دادن به اتصالات XDMCP، می‌توان یک خط LISTEN بدون هیچ آدرسی مشخص کرد، یا از روش قبلاً پشتیبانی‌شده تنظیم DisplayManager.requestPort روی 0 استفاده نمود. .PP مثال‌ها: .nf .ft CW LISTEN * ff02::1 # Listen on all interfaces and to the # ff02::1 IPv6 multicast group. LISTEN 10.11.12.13 # Listen only on this interface, as long # as no other listen directives appear in # file. .ft .fi .SH "مشخص‌سازی آدرس چندپخشی IPv6 (IPv6 MULTICAST ADDRESS SPECIFICATION)" .PP مرجع شماره‌های اختصاص‌یافته اینترنت (IANA) محدوده ff0\fIX\fP:0:0:0:0:0:0:12b را به عنوان محدوده آدرس‌های چندپخشی اختصاص داده شده دائمی برای XDMCP تعیین کرده است. \fIX\fP در پیشوند ممکن است با هر شناسه حوزه معتبری جایگزین شود، مانند 1 برای Interface-Local، 2 برای Link-Local، 5 برای Site-Local و غیره. (برای جزئیات بیشتر و تعاریف حوزه‌ها به IETF RFC 4291 یا جایگزین آن مراجعه کنید.) xdm به طور پیش‌فرض روی آدرس حوزه پیوند محلی (Link-Local) یعنی ff02:0:0:0:0:0:0:12b گوش می‌دهد تا بیشترین تطابق را با رفتار قدیمی برودکست زیرشبکه IPv4 داشته باشد. .SH "مشخص‌سازی سرور محلی (LOCAL SERVER SPECIFICATION)" .PP منبع \fBDisplayManager.servers\fP یک مشخصه سرور یا اگر مقدار با یک اسلش (/) شروع شود، نام فایلی شامل مشخصات سرورها (هر سطر یک ورودی) را ارائه می‌دهد. .PP هر مشخصه نشان‌دهنده نمایشگری است که باید به طور مداوم مدیریت شود و از XDMCP استفاده نمی‌کند. این روش معمولاً تنها برای سرورهای محلی استفاده می‌شود. اگر منبع یا فایل مشخص‌شده توسط منبع خالی باشد، \fIxdm\fP تنها سرویس XDMCP را ارائه خواهد داد. .PP هر مشخصه حداقل از سه بخش تشکیل می‌شود: یک نام نمایشگر، یک کلاس نمایشگر، یک نوع نمایشگر، و (برای سرورهای محلی) یک خط فرمان برای راه‌اندازی سرور. یک ورودی معمول برای نمایشگر محلی شماره 0 به این صورت خواهد بود: .nf :0 Digital-QV local /usr/bin/X :0 .fi انواع نمایشگرها عبارتند از: .TS l l. local نمایشگر محلی: \fIxdm\fP باید سرور را اجرا کند foreign نمایشگر راه دور: \fIxdm\fP یک اتصال X به یک سرور در حال اجرا باز می‌کند .TE .PP نام نمایشگر باید چیزی باشد که بتوان آن را در گزینه \fB\-display\fP به یک برنامه X ارسال کرد. این رشته برای تولید نام‌های منابع مخصوص نمایشگر استفاده می‌شود، بنابراین دقت کنید که نام‌ها مطابقت داشته باشند (مثلاً از «:0 Sun-CG3 local /usr/bin/X :0» به جای «localhost:0 Sun-CG3 local /usr/bin/X :0» استفاده کنید اگر سایر منابع شما به صورت «DisplayManager._0.session» مشخص شده‌اند). بخش کلاس نمایشگر نیز در منابع مخصوص نمایشگر، به عنوان کلاس منبع استفاده می‌شود. این مورد زمانی مفید است که شما مجموعه بزرگی از نمایشگرهای مشابه داشته باشید (مانند مجموعه‌ای از ترمینال‌های X) و بخواهید منابع را برای گروه‌هایی از آن‌ها تنظیم کنید. هنگام استفاده از XDMCP، نمایشگر ملزم به تعیین کلاس نمایشگر است، بنابراین دفترچه راهنمای ترمینال X خاص شما باید رشته کلاس نمایشگر را برای دستگاه شما مستند کرده باشد. اگر چنین نیست، می‌توانید .I xdm را در حالت اشکال‌زدایی اجرا کرده و رشته‌های منابعی را که برای آن دستگاه تولید می‌کند مشاهده نمایید که شامل رشته کلاس خواهد بود. .PP هنگامی که \fIxdm\fP یک نشست را آغاز می‌کند، داده‌های مجوزدهی را برای سرور تنظیم می‌نماید. برای سرورهای محلی، \fIxdm\fP گزینه «\fB\-auth\fP \fIfilename\fP» را در خط فرمان سرور ارسال می‌کند تا آن را به سمت داده‌های مجوزدهی‌اش هدایت نماید. برای سرورهای XDMCP، \fIxdm\fP داده‌های مجوزدهی را از طریق درخواست XDMCP \fBAccept\fP به سرور ارسال می‌کند. .SH "فایل منابع (RESOURCES FILE)" فایل \fIXresources\fP با استفاده از .I xrdb به عنوان یک پایگاه داده منابع روی نمایشگر بارگذاری می‌شود. از آنجا که ویجت احراز هویت این پایگاه داده را پیش از شروع به کار می‌خواند، معمولاً شامل پارامترهایی برای آن ویجت است: .nf .ft CW xlogin*login.translations: #override\\ CtrlR: abort-display()\\n\\ F1: set-session-argument(failsafe) finish-field()\\n\\ Return: set-session-argument() finish-field() xlogin*borderWidth: 3 xlogin*greeting: CLIENTHOST #ifdef COLOR xlogin*greetColor: CadetBlue xlogin*failColor: red #endif .ft .fi .PP لطفاً به ورودی translations توجه کنید؛ این ورودی چند نگاشت ترجمه جدید را برای ویجت مشخص می‌کند که به کاربران اجازه می‌دهد از نشست پیش‌فرض فرار کنند (و از مشکلاتی که ممکن است در آن رخ دهد اجتناب نمایند). توجه داشته باشید که اگر \&#override مشخص نشود، نگاشت‌های پیش‌فرض حذف شده و با مقدار جدید جایگزین می‌شوند که نتیجه چندان مفیدی نخواهد بود، زیرا برخی از نگاشت‌های پیش‌فرض کاملاً کاربردی هستند (مانند «: insert-char ()» که به تایپ عادی پاسخ می‌دهد). .PP این فایل همچنین ممکن است حاوی منابعی برای برنامه راه‌اندازی و \fIchooser\fP باشد. .SH "برنامه راه‌اندازی (SETUP PROGRAM)" فایل \fIXsetup\fP پس از بازنشانی سرور، اما پیش از ارائه پنجره ورود (Login) اجرا می‌شود. این فایل معمولاً یک اسکریپت شل است. از آنجا که با دسترسی کاربر ریشه (root) اجرا می‌شود، باید مسائل امنیتی در آن بسیار جدی گرفته شود. اینجا مکانی برای تغییر پس‌زمینه ریشه یا بالا آوردن پنجره‌های دیگری است که باید در کنار ویجت ورود روی صفحه ظاهر شوند. .PP علاوه بر هر موردی که توسط \fBDisplayManager.exportList\fP مشخص شده باشد، متغیرهای محیطی زیر نیز ارسال می‌شوند: .TS l l. DISPLAY نام نمایشگر مربوطه PATH مقدار \fBDisplayManager.\fP\fIDISPLAY\fP\fB.systemPath\fP SHELL مقدار \fBDisplayManager.\fP\fIDISPLAY\fP\fB.systemShell\fP XAUTHORITY ممکن است روی یک فایل مجوزدهی تنظیم شود .TE .PP توجه داشته باشید از آنجا که \fIxdm\fP صفحه‌کلید را در انحصار خود می‌گیرد، هیچ پنجره دیگری قادر به دریافت ورودی صفحه‌کلید نخواهد بود. با این حال، آن‌ها قادر به تعامل با ماوس خواهند بود؛ در اینجا مراقب رخنه‌های امنیتی بالقوه باشید. اگر \fBDisplayManager.\fP\fIDISPLAY\fP\fB.grabServer\fP تنظیم شده باشد، \fIXsetup\fP به هیچ وجه قادر به اتصال به نمایشگر نخواهد بود. منابع مربوط به این برنامه را می‌توان در فایلی قرار داد که توسط \fBDisplayManager.\fP\fIDISPLAY\fP\fB.resources\fP مشخص شده است. .PP در اینجا یک نمونه اسکریپت \fIXsetup\fP آورده شده است: .sp .RS .nf .ft CW #!/bin/sh # Xsetup_0 \- setup script for one workstation xcmsdb < /etc/X11/xdm/monitors/alex.0 xconsole\0\-geometry\0480x130\-0\-0\0\-notify\0\-verbose\0\-exitOnFail & .ft .fi .RE .SH "ویجت احراز هویت (AUTHENTICATION WIDGET)" ویجت احراز هویت نام کاربری، گذرواژه و/یا سایر داده‌های احراز هویت مورد نیاز را از طریق صفحه‌کلید از کاربر درخواست می‌کند. تقریباً هر پارامتر قابل تصوری را می‌توان با یک منبع کنترل کرد. منابع این ویجت باید در فایلی قرار داده شوند که توسط \fBDisplayManager.\fP\fIDISPLAY\fP\fB.resources\fP مشخص شده است. همه این‌ها دارای مقادیر پیش‌فرض مناسبی هستند، بنابراین نیازی به تعیین هیچ یک از آن‌ها نیست. .PP فایل منابع با .IR xrdb (1) بارگذاری می‌شود، بنابراین ممکن است از جایگزینی‌های تعریف‌شده توسط آن برنامه مانند CLIENTHOST برای نام میزبان کلاینت در پیام ورود، یا دستورات پیش‌پردازنده C مانند #ifdef برای ایجاد نمایشگرهای مختلف بسته به عمق رنگ یا متغیرهای دیگر استفاده کند. .PP .I Xdm می‌تواند با پشتیبانی از کتابخانه .IR Xft (3) برای رندر فونت کامپایل شود. اگر این پشتیبانی وجود داشته باشد، صورت فونت‌ها (font faces) با استفاده از منابعی با نام‌های ختم‌شده به «face» در قالب چهره fontconfig مشخص می‌شوند که در بخش \fIFont Names\fP از .IR fonts.conf (5) شرح داده شده است. در غیر این صورت، فونت‌ها با استفاده از منابعی با نام‌های ختم‌شده به «font» در قالب سنتی \fIX Logical Font Description\fP مشخص می‌شوند که در بخش \fIFont Names\fP از .IR X (7) توضیح داده شده است. .IP "\fBxlogin.Login.width, xlogin.Login.height, xlogin.Login.x, xlogin.Login.y\fP" هندسه (geometry) ویجت Login معمولاً به طور خودکار محاسبه می‌شود. اگر تمایل دارید آن را در جای دیگری قرار دهید، هر یک از این منابع را مشخص کنید. .IP "\fBxlogin.Login.foreground\fP" رنگ مورد استفاده برای نمایش ورودی تایپ‌شده توسط کاربر. .IP "\fBxlogin.Login.face\fP" صورت فونت مورد استفاده برای نمایش ورودی تایپ‌شده توسط کاربر در صورت کامپایل با پشتیبانی از Xft. پیش‌فرض «Serif-18» است. .IP "\fBxlogin.Login.font\fP" فونت مورد استفاده برای نمایش ورودی تایپ‌شده توسط کاربر در صورت عدم پشتیبانی از Xft. .IP "\fBxlogin.Login.greeting\fP" رشته‌ای که هویت این پنجره را مشخص می‌کند. پیش‌فرض «X Window System» است. .IP "\fBxlogin.Login.unsecureGreeting\fP" هنگامی که مجوزدهی X در فایل پیکربندی برای این نمایشگر درخواست شده باشد و هیچ مجوزی در حال استفاده نباشد، این پیام جایگزین پیام خوش‌آمدگویی استاندارد می‌شود. پیش‌فرض «This is an unsecure session» است. .IP "\fBxlogin.Login.greetFace\fP" صورت فونت مورد استفاده برای نمایش پیام خوش‌آمدگویی هنگام کامپایل با پشتیبانی از Xft. پیش‌فرض «Serif-24:italic» است. .IP "\fBxlogin.Login.greetFont\fP" فونت مورد استفاده برای نمایش پیام خوش‌آمدگویی در صورت عدم پشتیبانی از Xft. .IP "\fBxlogin.Login.greetColor\fP" رنگ مورد استفاده برای نمایش پیام خوش‌آمدگویی. .IP "\fBxlogin.Login.namePrompt\fP" رشته‌ای که برای درخواست نام کاربری نمایش داده می‌شود. .I Xrdb فاصله‌های خالی انتهای مقادیر منابع را حذف می‌کند؛ بنابراین برای افزودن فاصله در انتهای اعلان (که معمولاً جلوه بهتری دارد)، فاصله‌ها را با خطوط مورب وارونه (backslash) اسکیپ کنید. پیش‌فرض «Login:\ \ » است. .IP "\fBxlogin.Login.passwdPrompt\fP" رشته‌ای که برای درخواست گذرواژه نمایش داده می‌شود، هنگامی که از یک سیستم احراز هویت مانند PAM که پیام‌های اعلان مخصوص به خود را ارائه می‌دهد استفاده نشود. پیش‌فرض «Password:\ \ » است. .IP "\fBxlogin.Login.promptFace\fP" صورت فونت مورد استفاده برای نمایش اعلان‌ها در صورت ساخت با پشتیبانی از Xft. پیش‌فرض «Serif-18:bold» است. .IP "\fBxlogin.Login.promptFont\fP" فونت مورد استفاده برای نمایش اعلان‌ها در صورت عدم پشتیبانی از Xft. .IP "\fBxlogin.Login.promptColor\fP" رنگ مورد استفاده برای نمایش اعلان‌ها. .IP "\fBxlogin.Login.changePasswdMessage\fP" پیامی که هنگام منقضی شدن گذرواژه کاربر نمایش داده می‌شود. پیش‌فرض «Password Change Required» است. .IP "\fBxlogin.Login.fail\fP" پیامی که هنگام شکست احراز هویت نمایش داده می‌شود، در صورتی که از سیستم احراز هویتی مانند PAM که اعلان‌های خود را دارد استفاده نشود. پیش‌فرض «Login incorrect» است. .IP "\fBxlogin.Login.failFace\fP" صورت فونت مورد استفاده برای نمایش پیام شکست در صورت ساخت با پشتیبانی از Xft. پیش‌فرض «Serif-18:bold» است. .IP "\fBxlogin.Login.failFont\fP" فونت مورد استفاده برای نمایش پیام شکست در صورت عدم پشتیبانی از Xft. .IP "\fBxlogin.Login.failColor\fP" رنگ مورد استفاده برای نمایش پیام شکست. .IP "\fBxlogin.Login.failTimeout\fP" تعداد ثانیه‌هایی که پیام شکست روی صفحه نمایش داده می‌شود. پیش‌فرض 10 است. .IP "\fBxlogin.Login.logoFileName\fP" نام یک تصویر پیکسلی در قالب XPM برای نمایش در پنجره خوش‌آمدگویی، در صورت ساخت با پشتیبانی از XPM. پیش‌فرض عدم نمایش هیچ تصویری است. .IP "\fBxlogin.Login.logoPadding\fP" تعداد پیکسل‌های فاصله میان تصویر لوگو و سایر عناصر پنجره خوش‌آمدگویی، در صورتی که تصویر نمایش داده شود. پیش‌فرض 5 است. .IP "\fBxlogin.Login.useShape\fP" اگر روی «true» تنظیم شود، در صورت ساخت با پشتیبانی از XPM، تلاش می‌کند از افزونه شکل پنجره غیرمستطیلی X برای تنظیم شکل پنجره استفاده کند. پیش‌فرض «true» است. .IP "\fBxlogin.Login.hiColor\fP, \fBxlogin.Login.shdColor\fP" با تنظیم این منابع می‌توان حاشیه‌های برجسته در اطراف قاب خوش‌آمدگویی و کادرهای ورود متن ترسیم کرد. hiColor رنگ برجسته‌سازی است که در ضلع‌های بالا و چپ قاب و ضلع‌های پایین و راست نواحی ورود متن استفاده می‌شود. shdColor رنگ سایه است که در ضلع‌های پایین و راست قاب و ضلع‌های بالا و چپ نواحی ورود متن به کار می‌رود. پیش‌فرض برای هر دو، رنگ متن پیش‌زمینه (foreground) است که ظاهری تخت و مسطح ایجاد می‌کند. .IP "\fBxlogin.Login.frameWidth\fP" منبع frameWidth عرض به پیکسل از ناحیه اطراف قاب خوش‌آمدگویی است که با hiColor و shdColor رسم می‌شود. .IP "\fBxlogin.Login.innerFramesWidth\fP" منبع innerFramesWidth عرض به پیکسل از ناحیه اطراف کادرهای ورود متن است که با hiColor و shdColor رسم می‌شود. .IP "\fBxlogin.Login.sepWidth\fP" منبع sepWidth عرض به پیکسل از خط حاشیه‌دار میان اعلان خوش‌آمدگویی و نواحی ورودی است که با hiColor و shdColor رسم می‌شود. .IP "\fBxlogin.Login.allowRootLogin\fP" اگر روی «false» تنظیم شود، به کاربر ریشه (و هر کاربر دیگری با شناسه کاربری uid = 0) اجازه ورود مستقیم داده نمی‌شود. پیش‌فرض «true» است. این تنظیم در حال حاضر تنها توسط برخی از بک‌اندهای احراز هویت بررسی می‌شود. .IP "\fBxlogin.Login.allowNullPasswd\fP" اگر روی «true» تنظیم شود، اجازه می‌دهد تا تطبیق گذرواژه‌ای که در غیر این صورت با شکست مواجه می‌شد، در صورتی که حساب کاربری اصلاً نیازی به گذرواژه نداشته باشد، موفقیت‌آمیز باشد. پیش‌فرض «false» است، بنابراین فقط کاربرانی که گذرواژه به آن‌ها اختصاص داده شده است می‌توانند وارد شوند. .IP "\fBxlogin.Login.echoPasswd\fP" اگر روی «true» تنظیم شود، یک نویسه جایگزین (echoPasswdChar) برای فیلدهایی که معمولاً برای بازتاب ندادن متن تنظیم شده‌اند، مانند ورودی گذرواژه، نمایش داده می‌شود. پیش‌فرض «false» است. .IP "\fBxlogin.Login.echoPasswdChar\fP" نویسه‌ای که در صورت فعال بودن echoPasswd نمایش داده می‌شود. پیش‌فرض «*» است. اگر روی مقدار خالی تنظیم شود، مکان‌نما برای هر نویسه ورودی به جلو حرکت می‌کند، اما متنی رسم نخواهد شد. .IP "\fBxlogin.Login.translations\fP" این منبع نگاشت‌های ترجمه استفاده‌شده برای ویجت ورود را مشخص می‌کند. برای بحث کامل درباره نگاشت‌ها به مستندات X Toolkit مراجعه کنید. جدول ترجمه پیش‌فرض عبارت است از: .TS l l. CtrlH: delete-previous-character() CtrlD: delete-character() CtrlB: move-backward-character() CtrlF: move-forward-character() CtrlA: move-to-begining() CtrlE: move-to-end() CtrlK: erase-to-end-of-line() CtrlU: erase-line() CtrlX: erase-line() CtrlC: restart-session() Ctrl\\\\: abort-session() BackSpace: delete-previous-character() Delete: delete-previous-character() Return: finish-field() : insert-char() .TE .PP کنش‌هایی (actions) که توسط این ویجت پشتیبانی می‌شوند عبارتند از: .IP "delete-previous-character" نویسه قبل از مکان‌نما را پاک می‌کند. .IP "delete-character" نویسه بعد از مکان‌نما را پاک می‌کند. .IP "move-backward-character" مکان‌نما را یک نویسه به عقب می‌برد. .IP "move-forward-character" مکان‌نما را یک نویسه به جلو می‌برد. .IP "move-to-begining" (با پوزش بابت خطای املایی در نام انگلیسی این کنش). مکان‌نما را به ابتدای متن قابل ویرایش می‌برد. .IP "move-to-end" مکان‌نما را به انتهای متن قابل ویرایش می‌برد. .IP "erase-to-end-of-line" تمام متن بعد از مکان‌نما را پاک می‌کند. .IP "erase-line" کل متن را پاک می‌کند. .IP "finish-field" اگر مکان‌نما در فیلد نام کاربری باشد، به فیلد گذرواژه می‌رود؛ اگر مکان‌نما در فیلد گذرواژه باشد، جفت نام کاربری/گذرواژه فعلی را بررسی می‌کند. اگر جفت نام/گذرواژه معتبر باشد، \fIxdm\fP نشست را آغاز می‌کند. در غیر این صورت پیام شکست نمایش داده شده و مجدداً از کاربر ورودی خواسته می‌شود. .IP "abort-session" سرور را متوقف کرده و مجدداً راه‌اندازی می‌کند. .IP "abort-display" سرور را متوقف کرده و آن را غیرفعال می‌سازد. این کنش در پیکربندی پیش‌فرض در دسترس نیست. دلایل مختلفی برای متوقف کردن \fIxdm\fP روی یک کنسول سیستم وجود دارد؛ مانند هنگام خاموش کردن سیستم، هنگام استفاده از \fIxdmshell\fP، برای راه‌اندازی نوع دیگری از سرور، یا برای دسترسی عمومی به کنسول. ارسال یک SIGHUP به \fIxdm\fP نمایشگر را مجدداً راه‌اندازی می‌کند. بخش \fBکنترل XDM (CONTROLLING XDM)\fP را ببینید. .IP "restart-session" سرور X را بازنشانی کرده و یک نشست جدید آغاز می‌کند. این کنش می‌تواند زمانی استفاده شود که منابع تغییر کرده باشند و بخواهید آن‌ها را آزمایش کنید، یا زمانی که صفحه نمایش با پیام‌های سیستمی مخدوش شده باشد. .IP "insert-char" نویسه تایپ‌شده را درج می‌کند. .IP "set-session-argument" یک آرگومان تک‌کلمه‌ای را مشخص می‌کند که در زمان راه‌اندازی به نشست ارسال می‌شود. بخش \fBبرنامه نشست (SESSION PROGRAM)\fP را ببینید. .IP "allow-all-access" کنترل دسترسی را در سرور غیرفعال می‌کند. این کنش می‌تواند زمانی استفاده شود که فایل .Xauthority نتواند توسط .I xdm ایجاد شود. در استفاده از این کنش بسیار مراقب باشید؛ شاید بهتر باشد قبل از انجام این کار، دستگاه را از شبکه جدا کنید. .PP در برخی سیستم‌ها (مانند OpenBSD)، شل کاربر باید در .I /etc/shells فهرست شده باشد تا اجازه ورود از طریق xdm داده شود. تاریخ‌های معمول انقضای گذرواژه و حساب کاربری نیز اعمال می‌شوند. .SH "برنامه شروع اولیه (STARTUP PROGRAM)" .PP برنامه \fIXstartup\fP با دسترسی کاربر ریشه (root) هنگام ورود کاربر اجرا می‌شود. این برنامه معمولاً یک اسکریپت شل است. از آنجا که با دسترسی root اجرا می‌شود، \fIXstartup\fP باید ملاحظات امنیتی را به دقت رعایت کند. این برنامه مکانی برای قرار دادن دستوراتی است که ورودی‌هایی به فایل‌های \fIutmp\fP یا \fIwtmp\fP اضافه می‌کنند (برنامه \fIsessreg\fP ممکن است در اینجا مفید باشد)، دایرکتوری‌های خانگی کاربران را از سرورهای فایل سوار (mount) می‌کنند، یا در صورتی که ورودها مجاز نباشند، نشست را لغو می‌نمایند. .PP علاوه بر هر موردی که توسط \fBDisplayManager.exportList\fP مشخص شده باشد، متغیرهای محیطی زیر نیز ارسال می‌شوند: .TS l l. DISPLAY نام نمایشگر مربوطه HOME دایرکتوری کاری اولیه کاربر LOGNAME نام کاربری USER نام کاربری PATH مقدار \fBDisplayManager.\fP\fIDISPLAY\fP\fB.systemPath\fP SHELL مقدار \fBDisplayManager.\fP\fIDISPLAY\fP\fB.systemShell\fP XAUTHORITY ممکن است روی یک فایل مجوزدهی تنظیم شود WINDOWPATH ممکن است روی «مسیر پنجره» منتهی به سرور X تنظیم شود .TE .PP هیچ آرگومانی به اسکریپت ارسال نمی‌شود. .I Xdm پیش از آغاز نشست کاربر، تا زمان خروج این اسکریپت منتظر می‌ماند. اگر مقدار خروج این اسکریپت غیرصفر باشد، .I xdm نشست را متوقف کرده و یک چرخه احراز هویت دیگر را آغاز می‌کند. .PP نمونه فایل \fIXstartup\fP نشان‌داده‌شده در اینجا از ورود کاربر تا زمانی که فایل \fI/etc/nologin\fP وجود داشته باشد جلوگیری می‌کند. بنابراین این یک مثال کامل نیست، بلکه صرفاً نمایشی از قابلیت‌های موجود است. .PP در اینجا یک نمونه اسکریپت \fIXstartup\fP آورده شده است: .sp .RS .nf .ft CW #!/bin/sh # # Xstartup # # This program is run as root after the user is verified # if [ \-f /etc/nologin ]; then xmessage\0\-file /etc/nologin\0\-timeout 30\0\-center exit 1 fi sessreg\0\-a\0\-l $DISPLAY\0\-x /etc/X11/xdm/Xservers $LOGNAME /etc/X11/xdm/GiveConsole exit 0 .ft .fi .RE .SH "برنامه نشست (SESSION PROGRAM)" .PP برنامه \fIXsession\fP دستوری است که به عنوان نشست کاربر اجرا می‌شود. این برنامه با مجوزهای دسترسی کاربر احراز هویت شده اجرا می‌گردد. .PP علاوه بر هر موردی که توسط \fBDisplayManager.exportList\fP مشخص شده باشد، متغیرهای محیطی زیر نیز ارسال می‌شوند: .TS l l. DISPLAY نام نمایشگر مربوطه HOME دایرکتوری کاری اولیه کاربر LOGNAME نام کاربری USER نام کاربری PATH مقدار \fBDisplayManager.\fP\fIDISPLAY\fP\fB.userPath\fP SHELL شل پیش‌فرض کاربر (از \fIgetpwnam\fP) XAUTHORITY ممکن است روی یک فایل مجوز غیراستاندارد تنظیم شود KRB5CCNAME ممکن است روی نام حافظه پنهان اعتبارنامه‌های کربروس تنظیم شود WINDOWPATH ممکن است روی «مسیر پنجره» منتهی به سرور X تنظیم شود .TE .PP در بیشتر سامانه‌ها، \fIXsession\fP باید در $HOME به دنبال فایلی به نام \fI.xsession\fP بگردد، که شامل دستوراتی است که هر کاربر مایل است به عنوان یک نشست استفاده کند. \fIXsession\fP همچنین باید در صورتی که هیچ نشستی توسط کاربر مشخص نشده باشد، یک نشست پیش‌فرض سیستمی را اجرا کند. .PP یک آرگومان ممکن است با استفاده از کنش «set-session-argument» از ویجت احراز هویت به این برنامه ارسال شود. از این قابلیت می‌توان برای انتخاب سبک‌های مختلف نشست استفاده کرد. یکی از کاربردهای مناسب این ویژگی، فراهم ساختن امکان فرار کاربر از نشست عادی در زمان شکست یا خرابی آن است. این کار به کاربران اجازه می‌دهد در صورت بروز مشکل در \fI.xsession\fP خود، آن را بدون نیاز به مداخله مدیر سیستم تعمیر کنند. مثال زیر این ویژگی را نشان می‌دهد. .PP این مثال حالت ویژه «failsafe» را که در بخش نگاشت‌ها در فایل \fIXresources\fP مشخص شده است تشخیص می‌دهد تا راه گریزی از نشست عادی فراهم کند. این مثال همچنین نیازمند آن است که فایل .xsession دارای مجوز اجرا (executable) باشد تا مجبور به حدس زدن شل مورد نظر آن نباشیم. .sp .RS .nf .ft CW #!/bin/sh # # Xsession # # This is the program that is run as the client # for the display manager. case $# in 1) case $1 in failsafe) exec xterm \-geometry 80x24\-0\-0 ;; esac esac startup=$HOME/.xsession resources=$HOME/.Xresources if [ \-f "$startup" ]; then exec "$startup" else if [ \-f "$resources" ]; then xrdb \-load "$resources" fi twm & xman \-geometry +10\-10 & exec xterm \-geometry 80x24+10+10 \-ls fi .ft .fi .RE .PP فایل \fI.xsession\fP کاربر ممکن است چیزی شبیه به این مثال باشد. فراموش نکنید که فایل باید دارای مجوز اجرا باشد. .sp .RS .nf .ft CW \& #! /bin/csh \& # no \-f in the previous line so .cshrc gets run to set $PATH twm & xrdb \-merge "$HOME/.Xresources" emacs \-geometry +0+50 & xbiff \-geometry \-430+5 & xterm \-geometry \-0+50 -ls .fi .RE .SH "برنامه بازنشانی (RESET PROGRAM)" .PP به طور متقارن با \fIXstartup\fP، اسکریپت \fIXreset\fP پس از پایان یافتن نشست کاربر اجرا می‌شود. این اسکریپت با دسترسی root اجرا می‌گردد و باید شامل دستوراتی باشد که اثرات دستورات موجود در \fIXstartup\fP را خنثی کنند؛ مانند به‌روزرسانی ورودی‌ها در فایل‌های \fIutmp\fP یا \fIwtmp\fP، یا پیاده کردن دایرکتوری‌ها از سرورهای فایل. همان متغیرهای محیطی که به \fIXstartup\fP ارسال شده بودند، به \fIXreset\fP نیز ارسال می‌شوند. .PP یک نمونه اسکریپت \fIXreset\fP: .sp .RS .nf #!/bin/sh # # Xreset # # This program is run as root after the session ends # sessreg\0\-d\0\-l $DISPLAY\0\-x /etc/X11/xdm/Xservers $LOGNAME /etc/X11/xdm/TakeConsole exit 0 .fi .RE .SH "کنترل سرور (CONTROLLING THE SERVER)" .I Xdm سرورهای محلی را با استفاده از سیگنال‌های POSIX کنترل می‌کند. انتظار می‌رود SIGHUP سرور را بازنشانی کند، تمامی اتصالات کلاینت را ببندد و وظایف پاک‌سازی دیگر را انجام دهد. انتظار می‌رود SIGTERM سرور را خاتمه دهد. اگر این سیگنال‌ها اقدامات مورد انتظار را انجام ندهند، منابع \fBDisplayManager.\fP\fIDISPLAY\fP\fB.resetSignal\fP و \fBDisplayManager.\fP\fIDISPLAY\fP\fB.termSignal\fP می‌توانند سیگنال‌های جایگزین را مشخص کنند. .PP برای کنترل ترمینال‌های راه دوری که از XDMCP استفاده نمی‌کنند، .I xdm سلسله‌مراتب پنجره‌ها را در صفحه جستجو کرده و از درخواست پروتکل KillClient در تلاشی برای پاک‌سازی ترمینال جهت نشست بعدی استفاده می‌کند. این کار ممکن است عملاً همه کلاینت‌ها را متوقف نکند، زیرا فقط آن‌هایی که پنجره ایجاد کرده‌اند شناسایی خواهند شد. پروتکل XDMCP سازوکار مطمئن‌تری ارائه می‌دهد؛ هنگامی که .I xdm اتصال اولیه خود را می‌بندد، نشست به پایان رسیده است و ترمینال ملزم است تمام اتصالات دیگر را ببندد. .SH "کنترل XDM (CONTROLLING XDM)" .PP .I Xdm به دو سیگنال پاسخ می‌دهد: SIGHUP و SIGTERM. هنگامی که یک SIGHUP ارسال می‌شود، .I xdm فایل پیکربندی، فایل کنترل دسترسی و فایل سرورها را مجدداً می‌خواند. در مورد فایل سرورها، اضافه یا حذف شدن ورودی‌ها را بررسی می‌کند. اگر ورودی جدیدی اضافه شده باشد، .I xdm یک نشست روی نمایشگر مربوطه آغاز می‌کند. ورودی‌هایی که حذف شده‌اند بلافاصله غیرفعال می‌شوند؛ به این معنی که هر نشست در حال اجرا بدون اطلاع قبلی خاتمه می‌یابد و هیچ نشست جدیدی آغاز نخواهد شد. .PP هنگامی که SIGTERM ارسال شود، .I xdm تمام نشست‌های در حال اجرا را متوقف کرده و خارج می‌شود. این مورد می‌تواند هنگام خاموش کردن سیستم استفاده شود. .PP .I Xdm تلاش می‌کند زیرفرآیندهای مختلف خود را برای .IR ps (1) با ویرایش درجا در فهرست آرگومان‌های خط فرمان علامت‌گذاری کند. از آنجا که .I xdm نمی‌تواند حافظه اضافی برای این کار اختصاص دهد، راه‌اندازی .I xdm با یک خط فرمان به اندازه کافی طولانی سودمند است (استفاده از نام مسیر کامل باید کافی باشد). هر فرآیندی که در حال ارائه سرویس به یک نمایشگر است با \fB\-\fP\fIdisplay\fP مشخص می‌شود. .SH "نمایشگرهای محلی بیشتر (ADDITIONAL LOCAL DISPLAYS)" .PP برای افزودن یک نمایشگر محلی اضافی، یک خط برای آن به فایل \fIXservers\fP اضافه کنید. (بخش \fBمشخص‌سازی سرور محلی (LOCAL SERVER SPECIFICATION)\fP را ببینید.) .PP منابع مخصوص نمایشگر را در \fIxdm-config\fP بررسی کنید (به عنوان مثال، \fBDisplayManager._0.authorize\fP) و در نظر بگیرید کدام‌یک از آن‌ها باید برای نمایشگر جدید کپی شوند. فایل پیش‌فرض \fIxdm-config\fP شامل تمام خطوط مناسب برای نمایشگرهای \fB:0\fP و \fB:1\fP است. .SH "سایر امکانات (OTHER POSSIBILITIES)" .PP می‌توانید از \fIxdm\fP برای اجرای همزمان تنها یک نشست با استفاده از گزینه‌های 4.3 \fIinit\fP یا سایر دیمن‌های مناسب، با مشخص کردن سرور در خط فرمان استفاده کنید: .nf xdm \-server \(lq:0 SUN-3/60CG4 local /usr/bin/X :0\(rq .fi .PP یا ممکن است یک سرور فایل و مجموعه‌ای از ترمینال‌های X داشته باشید. پیکربندی برای این حالت با نمونه بالا یکسان است، با این تفاوت که فایل \fIXservers\fP شبیه به این خواهد بود: .nf extol:0 VISUAL-19 foreign exalt:0 NCD-19 foreign explode:0 NCR-TOWERVIEW3000 foreign .fi .PP این پیکربندی به .I xdm دستور می‌دهد تا نشست‌ها را روی هر سه ترمینال مدیریت کند. بخش \fBکنترل XDM (CONTROLLING XDM)\fP را برای شرح استفاده از سیگنال‌ها جهت فعال و غیرفعال کردن این ترمینال‌ها به شیوه‌ای مشابه .IR init (8) مشاهده کنید. .SH "محدودیت‌ها (LIMITATIONS)" یکی از کارهایی که .I xdm در انجام آن چندان ماهر نیست، همزیستی با سایر سامانه‌های پنجره‌ای است. برای استفاده از چند سامانه پنجره‌ای روی یک سخت‌افزار یکسان، احتمالاً .I xinit برای شما جذاب‌تر خواهد بود. .SH "فایل‌ها (FILES)" .TP 20 .I /etc/X11/xdm/xdm-config فایل پیکربندی پیش‌فرض .TP 20 .I $HOME/.Xauthority فایل مجوزدهی کاربر که در آن \fIxdm\fP کلیدها را برای خواندن کلاینت‌ها ذخیره می‌کند .TP 20 .I /usr/lib/X11/xdm/chooser برنامه انتخاب‌گر پیش‌فرض .TP 20 .I /usr/bin/xrdb لودر پیش‌فرض پایگاه داده منابع .TP 20 .I /usr/bin/X سرور پیش‌فرض .TP 20 .I /usr/bin/xterm برنامه پیش‌فرض نشست و کلاینت حالت اضطراری (failsafe) .TP 20 .I /var/lib/xdm/A\- محل پیش‌فرض برای فایل‌های مجوزدهی .TP 20 .I /tmp/K5C حافظه پنهان اعتبارنامه‌های کربروس (Kerberos) .SH "همچنین ببینید (SEE ALSO)" .IR X (7), .IR xinit (1), .IR xauth (1), .IR xrdb (1), .IR Xsecurity (7), .IR sessreg (1), .IR Xserver (1), .\" .IR chooser (1), \" except that there isn't a manual for it yet .IR xdmshell (8), .IR fonts.conf (5). .br .I "X Display Manager Control Protocol" .br .RI "IETF RFC 4291: " "IP Version 6 Addressing Architecture" . .SH "نویسندگان (AUTHORS)" Keith Packard, MIT X Consortium