| PAM_SYSTEMD(8) | pam_systemd | PAM_SYSTEMD(8) |
نام (NAME)
pam_systemd - ثبت نشستهای کاربری در مدیریت ورود سیستمدی (systemd-logind)
خلاصه دستور (SYNOPSIS)
pam_systemd.so
توضیحات (DESCRIPTION)
pam_systemd نشستهای کاربر را در مدیر ورود سیستمدی systemd-logind.service(8) و در نتیجه در سلسلهمراتب گروه کنترلی (cgroup) سیستمدی ثبت میکند.
این ماژول همچنین پارامترهای مختلف مدیریت منابع و زمان اجرا را، همانگونه که در رکوردهای کاربری JSON (JSON User Records)[1] کاربر (در صورت تعریف شدن) پیکربندی شده است، بر نشست جدید اعمال میکند.
هنگام ورود (login)، این ماژول — در تعامل با systemd-logind.service — موارد زیر را تضمین میکند:
هنگام خروج از سیستم (logout)، این ماژول موارد زیر را تضمین میکند:
اگر سیستم با سیستمدی به عنوان سیستم init بوت نشده باشد، این ماژول هیچ کاری انجام نمیدهد و بلافاصله مقدار PAM_SUCCESS را برمیگرداند.
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
class=
جدول 1. کلاسهای نشست
| نام | توضیح |
| user | یک نشست کاربری تعاملی معمولی. این کلاس پیشفرض برای نشستهایی است که هنگام ثبت نشست، یک TTY یا نمایشگر X برای آنها مشخص است. |
| user-early | مشابه user است، اما نشستهای این کلاس پس از systemd-user-sessions.service(8) مرتب نمیشوند؛ یعنی ممکن است پیش از مجاز شدن برقراری نشستهای معمولی راهاندازی شوند. این کلاس نشست پیشفرض برای نشستهای کاربر ریشه (root) است که در غیر این صورت واجد شرایط کلاس user بودند، بالا را ببینید. (افزودهشده در نگارش ۲۵۶.) |
| user-light | مشابه user است، اما نشستهای این کلاس واحد user@.service(5) کاربر را فراخوانی نمیکنند و در نتیجه احتمالاً هیچ مدیر سرویس کاربری در حال اجرا نخواهند داشت. (افزودهشده در نگارش ۲۵۸.) |
| user-early-light | مشابه user-early است، اما نشستهای این کلاس واحد user@.service(5) کاربر را فراخوانی نمیکنند و در نتیجه احتمالاً هیچ مدیر سرویس کاربری در حال اجرا نخواهند داشت. (افزودهشده در نگارش ۲۵۸.) |
| user-incomplete | مشابه user است، اما برای نشستهایی که هنوز بهطور کامل برپا نشدهاند؛ یعنی هیچ دایرکتوری خانگی سوارشدهای ندارند یا موارد مشابه. این مورد توسط systemd-homed.service(8) استفاده میشود تا به کاربران اجازه دهد پیش از سوار شدن دایرکتوری خانگی خود از طریق ssh(1) وارد شوند و سوار کردن آن را تا زمانی که کاربر گذرواژه بازگشایی را وارد کند به تاخیر میاندازد. پس از فعال شدن دایرکتوری خانگی، نشستهای این کلاس به کلاس معمولی user ارتقا مییابند. |
| greeter | مشابه user است، اما برای نشستهایی که به شکل موقت و گذرا توسط یک مدیر نمایشگر (display manager) ایجاد میشوند و اطلاعات احراز هویت ورود را از کاربر درخواست میکنند. |
| lock-screen | مشابه user است، اما برای نشستهایی که به شکل موقت توسط یک مدیر نمایشگر ایجاد میشوند و یک صفحه قفل را نشان میدهند که میتواند برای بازگشایی حسابها یا نشستهای قفلشده کاربر استفاده شود. |
| background | برای نشستهای پسزمینه استفاده میشود، مانند نشستهایی که توسط cron(8) و ابزارهای مشابه فراخوانی میشوند. این کلاس پیشفرض برای نشستهایی است که هنگام ثبت نشست، هیچ TTY یا نمایشگر X برای آنها مشخص نیست. |
| background-light | مشابه background است، اما نشستهای این کلاس واحد user@.service(5) کاربر را فراخوانی نمیکنند و در نتیجه احتمالاً هیچ مدیر سرویس کاربری در حال اجرا نخواهند داشت. (افزودهشده در نگارش ۲۵۶.) |
| manager | سرویس user@.service(5) کاربر ذیل این کلاس نشست ثبت میشود. (افزودهشده در نگارش ۲۵۶.) |
| manager-early | مشابه manager است، اما برای کاربر ریشه (root). با وضعیت user در مقایسه با user-early مقایسه کنید. (افزودهشده در نگارش ۲۵۶.) |
| none | از ثبت این نشست در logind صرفنظر میکند. هیچ دامنه (scope) نشستی ایجاد نخواهد شد و مدیر سرویس کاربر راهاندازی نمیشود. (افزودهشده در نگارش ۲۵۸.) |
اگر هیچ
کلاس نشستی
از طریق
گزینه
ماژول PAM یا
از طریق
متغیر
محیطی
$XDG_SESSION_CLASS مشخص
نشده باشد،
کلاس بر
اساس
پارامترهای
مختلف نشست
بهطور
خودکار
انتخاب
میشود؛
مانند نوع
نشست (در
صورت مشخص
بودن)،
اینکه آیا
نشست دارای
TTY یا
نمایشگر X11
است یا خیر،
و وضعیت
کاربر. توجه
داشته
باشید که
ابزارهای
مختلف
اجازه
میدهند
کلاس نشست
برای
نشستهای
تازه
تخصیصیافته
PAM صریحاً از
طریق متغیر
محیطی $XDG_SESSION_CLASS
تنظیم شود.
برای
نمونه،
کرونجابهای
کلاسیک
یونیکس از
انتساب
متغیرهای
محیطی
پشتیبانی
میکنند
(ببینید crontab(5))،
که
میتواند
برای
انتخاب
جداگانه
کلاس نشست
background یا background-light
برای هر
کرونجاب
استفاده
شود، یا run0
--setenv=XDG_SESSION_CLASS=user-light
میتواند
برای
انتخاب بین
user و user-light برای
نشستهای
دارای
امتیاز
فراخوانیشده
به کار رود.
افزودهشده در نگارش ۱۹۷.
type=
افزودهشده در نگارش ۲۰۹.
desktop=
افزودهشده در نگارش ۲۴۰.
area=
این قابلیت میتواند برای نگهداری چندین دایرکتوری خانگی ثانویه مجزا درون دایرکتوری خانگی اصلی کاربر استفاده شود. معمولاً ناحیهای که قرار است به آن وارد شوید، در صورت مجاز بودن توسط حساب کاربری، هنگام ورود مشخص میشود (حسابهای ارائهشده توسط pam_systemd_home(8) این امکان را دارند)، اما این پارامتر میتواند برای تعریف یک مقدار پیشفرض در صورت مشخص نشدن آن استفاده شود.
توجه داشته باشید که این فقط $HOME را در هنگام ورود تنظیم میکند و بر دایرکتوری خانگی گزارششده کاربر در جاهای دیگر تأثیری نمیگذارد. به طور خاص این بدان معناست که sshd(8) همچنان کلیدهای SSH کاربر را تنها در دایرکتوری خانگی اصلی کاربر جستجو میکند، نه در هیچیک از نواحی آن.
توجه داشته باشید که ناحیه پیشفرض برای ورود میتواند به عنوان بخشی از حساب کاربری نیز پیکربندی شود. ناحیه مشخصشده از طریق area= بر ناحیه پیشفرض پیکربندیشده در آنجا برتری دارد. همچنین توجه داشته باشید که اگر ناحیه به طور صریح توسط کاربر هنگام ورود مشخص شود، بر هر دو برتری خواهد داشت. همچنین توجه داشته باشید که تنظیم این پارامتر روی یک رشته خالی، اثر هرگونه ناحیه پیشفرض پیکربندیشده به عنوان بخشی از رکورد کاربر را خنثی میکند؛ یعنی تضمین میکند که کاربر به دایرکتوری خانگی اصلی حساب خود وارد شود.
برای جزئیات درباره مفهوم ناحیه (area)، pam_systemd_home(8) را ببینید.
افزودهشده در نگارش ۲۵۸.
default-capability-bounding-set=, default-capability-ambient-set=
افزودهشده در نگارش ۲۵۴.
debug[=]
انواع ماژول ارائه شده (PROVIDED MODULE TYPES)
فقط session ارائه میشود.
متغیرهای محیطی (ENVIRONMENT)
متغیرهای محیطی زیر توسط ماژول مقداردهی اولیه میشوند و برای پردازههای نشست کاربر در دسترس هستند:
$XDG_SESSION_ID
$XDG_RUNTIME_DIR
$TZ, $EMAIL, $LANG
افزودهشده در نگارش ۲۴۵.
$SHELL_PROMPT_PREFIX, $SHELL_PROMPT_SUFFIX, $SHELL_WELCOME
افزودهشده در نگارش ۲۵۷.
متغیرهای محیطی زیر توسط ماژول خوانده میشوند و ممکن است توسط سرویس PAM برای انتقال فراداده (metadata) به ماژول استفاده شوند. اگر این متغیرها در هنگام فراخوانی ماژول PAM تنظیم نشده باشند اما بتوان آنها را به روش دیگری تعیین کرد، توسط ماژول تنظیم میشوند تا در صورت مشخص بودن، برای نشست و برنامهها مقداردهی اولیه گردند.
$XDG_SESSION_TYPE
افزودهشده در نگارش ۲۰۹.
$XDG_SESSION_CLASS
افزودهشده در نگارش ۲۰۹.
$XDG_SESSION_DESKTOP
افزودهشده در نگارش ۲۰۹.
$XDG_SEAT
افزودهشده در نگارش ۲۰۹.
$XDG_VTNR
افزودهشده در نگارش ۲۰۹.
$XDG_AREA
افزودهشده در نگارش ۲۵۸.
$XDG_SESSION_EXTRA_DEVICE_ACCESS
افزودهشده در نگارش ۲۶۰.
در صورت تنظیم نشدن، pam_systemd متغیرهای $XDG_SEAT و $XDG_VTNR را بر اساس متغیر $DISPLAY (در صورت تنظیم بودن دومی) مقداردهی اولیه خواهد کرد.
محدودیتهای نشست (SESSION LIMITS)
ماژولهای PAM قبلی در پشته، یعنی ماژولهایی که پیش از pam_systemd.so میآیند، میتوانند محدودیتهای دامنه نشست را با استفاده از اشیای بافتار (context) PAM تنظیم کنند. دادههای این اشیاء به صورت رشتههای C با پایان NUL ارائه میشوند و مستقیماً به دستورالعملهای کنترل منبع واحد مربوطه نگاشت میشوند. توجه داشته باشید که این محدودیتها بر نشستهای فردی کاربر اعمال میشوند و به کل پردازههای کاربر به صورت یک کل واحد اعمال نمیگردند. به ویژه، نمونه واحد به ازای هر کاربر user@.service که فرآیند مدیر systemd --user و فرزندان آن را اجرا میکند، و خارج از هر نشستی ردیابی میشود و بین تمام نشستهای کاربر به اشتراک گذاشته میشود، تحت پوشش این محدودیتها قرار نمیگیرد.
برای اطلاعات بیشتر درباره منابع، systemd.resource-control(5) را ببینید. همچنین برای اطلاعات بیشتر درباره نحوه تنظیم اشیای بافتار، pam_set_data(3) را ببینید.
systemd.memory_max=
افزودهشده در نگارش ۲۳۹.
systemd.tasks_max=
افزودهشده در نگارش ۲۳۹.
systemd.cpu_weight=
افزودهشده در نگارش ۲۳۹.
systemd.io_weight=
افزودهشده در نگارش ۲۳۹.
systemd.runtime_max_sec=
افزودهشده در نگارش ۲۴۴.
نمونه دادههایی که میتواند از یک ماژول PAM دیگر ارائه شود:
pam_set_data(handle, "systemd.memory_max", (void *)"200M", cleanup); pam_set_data(handle, "systemd.tasks_max", (void *)"50", cleanup); pam_set_data(handle, "systemd.cpu_weight", (void *)"100", cleanup); pam_set_data(handle, "systemd.io_weight", (void *)"340", cleanup); pam_set_data(handle, "systemd.runtime_max_sec", (void *)"3600", cleanup);
مثال (EXAMPLE)
در اینجا نمونهای از قطعهپیکربندی PAM آورده شده است که اجازه میدهد نشستهای کاربران توسط systemd-logind.service مدیریت شوند:
#%PAM-1.0 -auth [success=done authtok_err=bad perm_denied=bad maxtries=bad default=ignore] pam_systemd_home.so auth sufficient pam_unix.so auth required pam_deny.so account required pam_nologin.so -account [success=done authtok_expired=bad new_authtok_reqd=bad maxtries=bad acct_expired=bad default=ignore] pam_systemd_home.so account required pam_unix.so -password sufficient pam_systemd_home.so password sufficient pam_unix.so sha512 shadow try_first_pass password required pam_deny.so -session optional pam_keyinit.so revoke -session optional pam_loginuid.so -session optional pam_systemd_home.so -session optional pam_systemd.so session required pam_unix.so
همچنین ببینید (SEE ALSO)
systemd(1), systemd-user-sessions.service(8), user@.service(5), systemd-logind.service(8), logind.conf(5), loginctl(1), pam_systemd_home(8), pam.conf(5), pam.d(5), pam(8), pam_loginuid(8), systemd.scope(5), systemd.slice(5), systemd.service(5)
یادداشتها (NOTES)
- 1.
- رکوردهای کاربری JSON (JSON User Records)
- 2.
- مشخصات مدخل دسکتاپ (Desktop Entry Specification)
- 3.
- مشخصات دایرکتوری پایه XDG (XDG Base Directory Specification)
| systemd 261.2 |