PAM_XAUTH(8) Linux-PAM Manual PAM_XAUTH(8)

pam_xauth - ماژول PAM برای فوروارد و مدیریت مجوزهای احراز هویت xauth

pam_xauth.so [debug] [xauthpath=/path/to/xauth] [systemuser=UID] [targetuser=UID]

ماژول PAM با نام pam_xauth برای فوروارد کردن کلیدهای xauth (که گاهی "کوکی" نامیده می‌شوند) میان کاربران طراحی شده است.

بدون pam_xauth، هنگامی که xauth فعال است و کاربری از دستور su(1) برای تصاحب امتیازات کاربر دیگری استفاده می‌کند، آن کاربر دیگر قادر به دسترسی به نمایشگر X کاربر اصلی نخواهد بود زیرا کاربر جدید کلید لازم برای دسترسی به نمایشگر را ندارد. pam_xauth این مشکل را با فوروارد کردن کلید از کاربری که su را اجرا می‌کند (کاربر مبدأ) به کاربری که کاربر مبدأ هویت او را تصاحب می‌کند (کاربر مقصد) در هنگام ایجاد نشست و نابود کردن کلید هنگام بسته‌شدن نشست حل می‌کند.

این بدان معناست که برای نمونه، هنگام اجرای su(1) از یک نشست xterm، شما قادر خواهید بود برنامه‌های X را بدون درگیر شدن مستقیم با دستور xauth(1) یا پرونده‌های ~/.Xauthority اجرا کنید.

ماژول pam_xauth تنها در صورتی کلیدها را فوروارد می‌کند که xauth بتواند کلیدی متصل به متغیر محیطی $DISPLAY را فهرست کند.

کنترل دسترسی ابتدایی توسط پرونده ~/.xauth/export در پوشه خانگی کاربر فراخواننده و پرونده ~/.xauth/import در پوشه خانگی کاربر مقصد فراهم می‌شود.

اگر کاربری دارای پرونده ~/.xauth/import باشد، آن کاربر تنها کوکی‌ها را از کاربرانی دریافت خواهد کرد که در این پرونده فهرست شده‌اند. اگر پرونده ~/.xauth/import وجود نداشته باشد، کاربر کوکی‌ها را از هر کاربر دیگری خواهد پذیرفت.

اگر کاربری دارای پرونده ~/.xauth/export باشد، آن کاربر تنها کوکی‌ها را به کاربرانی که در این پرونده فهرست شده‌اند فوروارد خواهد کرد. اگر پرونده ~/.xauth/export وجود نداشته باشد و کاربر فراخواننده root نباشد، کاربر کوکی‌ها را به هر کاربر دیگری فوروارد می‌کند. اگر پرونده ~/.xauth/export وجود نداشته باشد و کاربر فراخواننده root باشد، کاربر کوکی‌ها را به دیگر کاربران فوروارد نخواهد کرد.

هر دو پرونده import و export از نویسه‌های عام (مانند *) پشتیبانی می‌کنند. هر دو پرونده می‌توانند خالی باشند که نشان‌دهنده مجاز نبودن هیچ کاربری است.

debug

چاپ اطلاعات اشکال‌زدایی (دیباگ).

xauthpath=/path/to/xauth

تعیین مسیر برنامه xauth (به طور پیش‌فرض در /usr/X11R6/bin/xauth، /usr/bin/xauth یا /usr/bin/X11/xauth انتظار می‌رود).

systemuser=UID

تعیین بالاترین UID که متعلق به یک کاربر "سیستمی" در نظر گرفته می‌شود. ماژول pam_xauth از فوروارد کردن گواهی‌ها به کاربرانی با UID کمتر یا مساوی این عدد، به جز root و "targetuser" (در صورت تعیین)، خودداری خواهد کرد.

targetuser=UID

تعیین یک UID مقصد خاص که از بررسی systemuser معاف است.

تنها نوع session ارائه شده است.

PAM_BUF_ERR

خطای بافر حافظه.

PAM_PERM_DENIED

مجوز توسط پرونده import/export رد شد.

PAM_SESSION_ERR

ناتوان در تعیین نام کاربری، UID یا دسترسی به پوشه خانگی کاربران.

PAM_SUCCESS

موفقیت.

PAM_USER_UNKNOWN

کاربر ناشناخته است.

خط زیر را به /etc/pam.d/su بیافزایید تا هنگام فراخوانی su کلیدهای xauth میان کاربران فوروارد شود:

session  optional  pam_xauth.so

ماژول pam_xauth تنها زمانی کار خواهد کرد که از یک برنامه setuid استفاده شود که در آن فراخوانی getuid() شناسه کاربری که برنامه را اجرا می‌کند برگرداند، و PAM بتواند نام حسابی را که کاربر قصد تصاحب آن را دارد تامین کند. برنامه معمول از این نوع su(1) است. برنامه باید هر دو تابع pam_open_session() و pam_close_session() را در حالی فراخوانی کند که ruid روی uid کاربر فراخواننده و euid روی root تنظیم شده باشد، و باید نام کاربر مقصد را به عنوان مورد PAM_USER فراهم کرده باشد.

ماژول pam_xauth دستور xauth(1) را به عنوان کاربر مبدأ فراخوانی می‌کند تا کلید مربوط به $DISPLAY را استخراج نماید، سپس xauth را به عنوان کاربر مقصد فراخوانی می‌کند تا کلید را در یک پایگاه‌داده موقت ادغام کند و بعداً آن پایگاه‌داده را حذف نماید.

نمی‌توان به pam_xauth دستور داد که هنگام بسته‌شدن نشست، کلیدها را حذف نکند.

~/.xauth/import

پرونده پیکربندی برای تعیین کاربران مجاز جهت دریافت کوکی‌های xauth.

~/.xauth/export

پرونده پیکربندی برای تعیین کاربران مجاز جهت ارسال کوکی‌های xauth.

pam.conf(5), pam.d(5), pam(8)

ماژول pam_xauth توسط Nalin Dahyabhai <nalin@redhat.com>، بر پایه نسخه اصلی توسط Michael K. Johnson <johnsonm@redhat.com> نوشته شده است.

01/26/2026 Linux-PAM