'\" t .TH "PAM_SYSTEMD" "8" "" "systemd 261.2" "pam_systemd" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" pam_systemd \- ثبت نشست‌های کاربری در مدیریت ورود سیستم‌دی (systemd-logind) .SH "خلاصه دستور (SYNOPSIS)" .PP pam_systemd\&.so .SH "توضیحات (DESCRIPTION)" .PP \fBpam_systemd\fR نشست‌های کاربر را در مدیر ورود سیستم‌دی \fBsystemd-logind.service\fR(8) و در نتیجه در سلسله‌مراتب گروه کنترلی (cgroup) سیستم‌دی ثبت می‌کند\&. .PP این ماژول همچنین پارامترهای مختلف مدیریت منابع و زمان اجرا را، همان‌گونه که در \m[blue]\fBرکوردهای کاربری JSON (JSON User Records)\fR\m[]\&\s-2\u[1]\d\s+2 کاربر (در صورت تعریف شدن) پیکربندی شده است، بر نشست جدید اعمال می‌کند\&. .PP هنگام ورود (login)، این ماژول \(em در تعامل با systemd\-logind\&.service \(em موارد زیر را تضمین می‌کند: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} اگر دایرکتوری زمان اجرای کاربر /run/user/$UID هنوز وجود نداشته باشد، ایجاد می‌شود یا به عنوان یک سیستم فایل جدید "tmpfs" همراه با اعمال سهمیه (quota) سوار (mount) می‌گردد و مالکیت آن به کاربری که در حال ورود است تغییر می‌یابد\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} متغیر محیطی \fI$XDG_SESSION_ID\fR مقداردهی اولیه می‌شود\&. اگر قابلیت بازرسی (auditing) در دسترس باشد و \fBpam_loginuid\&.so\fR پیش از این ماژول اجرا شده باشد (که به شدت توصیه می‌شود)، مقدار این متغیر از شناسه نشست بازرسی (/proc/self/sessionid) مقداردهی اولیه می‌گردد\&. در غیر این صورت، از یک شمارنده نشست مستقل استفاده می‌شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ .sp -1 .IP " 3." 4.2 .\} یک واحد دامنه (scope unit) جدید سیستم‌دی برای نشست ایجاد می‌شود\&. اگر این نخستین نشست همزمان کاربر باشد، یک واحد قطعه (slice unit) ضمنی برای هر کاربر در زیر user\&.slice به‌طور خودکار ایجاد شده و دامنه درون آن قرار می‌گیرد\&. نمونه‌ای از سرویس سیستمی user@\&.service که نمونه مدیر کاربر سیستم‌دی را اجرا می‌کند، راه‌اندازی می‌شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 4.\h'+01'\c .\} .el \{\ .sp -1 .IP " 4." 4.2 .\} متغیرهای محیطی "$TZ"، "$EMAIL" و "$LANG" بر اساس داده‌های مربوطه از رکورد JSON کاربر (در صورت تعریف) برای کاربر پیکربندی می‌شوند\&. علاوه بر این، هرگونه متغیر محیطی که صریحاً در رکورد کاربر پیکربندی شده باشد وارد (import) می‌گردد و umask، سطح nice و محدودیت‌های منابع مقداردهی اولیه می‌شوند\&. .RE .PP هنگام خروج از سیستم (logout)، این ماژول موارد زیر را تضمین می‌کند: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} اگر در \fBlogind.conf\fR(5) فعال شده باشد (\fIKillUserProcesses=\fR)، تمامی پردازه‌های نشست خاتمه می‌یابند\&. اگر آخرین نشست همزمان یک کاربر پایان یابد، نمونه سیستم‌دی کاربر نیز متوقف خواهد شد و واحد قطعه (slice) کاربر نیز به همین ترتیب بسته می‌شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} اگر آخرین نشست همزمان کاربر به پایان برسد، دایرکتوری زمان اجرای کاربر /run/user/$UID و تمام محتویات آن نیز حذف می‌شوند\&. .RE .PP اگر سیستم با سیستم‌دی به عنوان سیستم init بوت نشده باشد، این ماژول هیچ کاری انجام نمی‌دهد و بلافاصله مقدار \fBPAM_SUCCESS\fR را برمی‌گرداند\&. .SH "گزینه‌ها (OPTIONS)" .PP گزینه‌های زیر پشتیبانی می‌شوند: .PP \fIclass=\fR .RS 4 یک آرگومان رشته‌ای می‌گیرد که کلاس نشست را تعیین می‌کند\&. متغیر محیطی \fIXDG_SESSION_CLASS\fR (در ادامه را ببینید) اولویت دارد\&. برای روش استعلام کلاس یک نشست، \fBsd_session_get_class\fR(3) را ببینید\&. کلاس‌های نشست زیر تعریف شده‌اند: .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .B جدول\ \&1.\ \&کلاس‌های نشست .TS allbox tab(:); lB lB. T{ نام T}:T{ توضیح T} .T& l l l l l l l l l l l l l l l l l l l l l l l l. T{ \fBuser\fR T}:T{ یک نشست کاربری تعاملی معمولی\&. این کلاس پیش‌فرض برای نشست‌هایی است که هنگام ثبت نشست، یک TTY یا نمایشگر X برای آن‌ها مشخص است\&. T} T{ \fBuser\-early\fR T}:T{ مشابه \fBuser\fR است، اما نشست‌های این کلاس پس از \fBsystemd-user-sessions.service\fR(8) مرتب نمی‌شوند؛ یعنی ممکن است پیش از مجاز شدن برقراری نشست‌های معمولی راه‌اندازی شوند\&. این کلاس نشست پیش‌فرض برای نشست‌های کاربر ریشه (root) است که در غیر این صورت واجد شرایط کلاس \fBuser\fR بودند، بالا را ببینید\&. (افزوده‌شده در نگارش ۲۵۶\&.) T} T{ \fBuser\-light\fR T}:T{ مشابه \fBuser\fR است، اما نشست‌های این کلاس واحد \fBuser@.service\fR(5) کاربر را فراخوانی نمی‌کنند و در نتیجه احتمالاً هیچ مدیر سرویس کاربری در حال اجرا نخواهند داشت\&. (افزوده‌شده در نگارش ۲۵۸\&.) T} T{ \fBuser\-early\-light\fR T}:T{ مشابه \fBuser\-early\fR است، اما نشست‌های این کلاس واحد \fBuser@.service\fR(5) کاربر را فراخوانی نمی‌کنند و در نتیجه احتمالاً هیچ مدیر سرویس کاربری در حال اجرا نخواهند داشت\&. (افزوده‌شده در نگارش ۲۵۸\&.) T} T{ \fBuser\-incomplete\fR T}:T{ مشابه \fBuser\fR است، اما برای نشست‌هایی که هنوز به‌طور کامل برپا نشده‌اند؛ یعنی هیچ دایرکتوری خانگی سوارشده‌ای ندارند یا موارد مشابه\&. این مورد توسط \fBsystemd-homed.service\fR(8) استفاده می‌شود تا به کاربران اجازه دهد پیش از سوار شدن دایرکتوری خانگی خود از طریق \fBssh\fR(1) وارد شوند و سوار کردن آن را تا زمانی که کاربر گذرواژه بازگشایی را وارد کند به تاخیر می‌اندازد\&. پس از فعال شدن دایرکتوری خانگی، نشست‌های این کلاس به کلاس معمولی \fBuser\fR ارتقا می‌یابند\&. T} T{ \fBgreeter\fR T}:T{ مشابه \fBuser\fR است، اما برای نشست‌هایی که به شکل موقت و گذرا توسط یک مدیر نمایشگر (display manager) ایجاد می‌شوند و اطلاعات احراز هویت ورود را از کاربر درخواست می‌کنند\&. T} T{ \fBlock\-screen\fR T}:T{ مشابه \fBuser\fR است، اما برای نشست‌هایی که به شکل موقت توسط یک مدیر نمایشگر ایجاد می‌شوند و یک صفحه قفل را نشان می‌دهند که می‌تواند برای بازگشایی حساب‌ها یا نشست‌های قفل‌شده کاربر استفاده شود\&. T} T{ \fBbackground\fR T}:T{ برای نشست‌های پس‌زمینه استفاده می‌شود، مانند نشست‌هایی که توسط \fBcron\fR(8) و ابزارهای مشابه فراخوانی می‌شوند\&. این کلاس پیش‌فرض برای نشست‌هایی است که هنگام ثبت نشست، هیچ TTY یا نمایشگر X برای آن‌ها مشخص نیست\&. T} T{ \fBbackground\-light\fR T}:T{ مشابه \fBbackground\fR است، اما نشست‌های این کلاس واحد \fBuser@.service\fR(5) کاربر را فراخوانی نمی‌کنند و در نتیجه احتمالاً هیچ مدیر سرویس کاربری در حال اجرا نخواهند داشت\&. (افزوده‌شده در نگارش ۲۵۶\&.) T} T{ \fBmanager\fR T}:T{ سرویس \fBuser@.service\fR(5) کاربر ذیل این کلاس نشست ثبت می‌شود\&. (افزوده‌شده در نگارش ۲۵۶\&.) T} T{ \fBmanager\-early\fR T}:T{ مشابه \fBmanager\fR است، اما برای کاربر ریشه (root)\&. با وضعیت \fBuser\fR در مقایسه با \fBuser\-early\fR مقایسه کنید\&. (افزوده‌شده در نگارش ۲۵۶\&.) T} T{ \fBnone\fR T}:T{ از ثبت این نشست در logind صرف‌نظر می‌کند\&. هیچ دامنه (scope) نشستی ایجاد نخواهد شد و مدیر سرویس کاربر راه‌اندازی نمی‌شود\&. (افزوده‌شده در نگارش ۲۵۸\&.) T} .TE .sp 1 اگر هیچ کلاس نشستی از طریق گزینه ماژول PAM یا از طریق متغیر محیطی \fI$XDG_SESSION_CLASS\fR مشخص نشده باشد، کلاس بر اساس پارامترهای مختلف نشست به‌طور خودکار انتخاب می‌شود؛ مانند نوع نشست (در صورت مشخص بودن)، اینکه آیا نشست دارای TTY یا نمایشگر X11 است یا خیر، و وضعیت کاربر\&. توجه داشته باشید که ابزارهای مختلف اجازه می‌دهند کلاس نشست برای نشست‌های تازه تخصیص‌یافته PAM صریحاً از طریق متغیر محیطی \fI$XDG_SESSION_CLASS\fR تنظیم شود\&. برای نمونه، کرون‌جاب‌های کلاسیک یونیکس از انتساب متغیرهای محیطی پشتیبانی می‌کنند (ببینید \fBcrontab\fR(5))، که می‌تواند برای انتخاب جداگانه کلاس نشست \fBbackground\fR یا \fBbackground\-light\fR برای هر کرون‌جاب استفاده شود، یا \fBrun0 \-\-setenv=XDG_SESSION_CLASS=user\-light\fR می‌تواند برای انتخاب بین \fBuser\fR و \fBuser\-light\fR برای نشست‌های دارای امتیاز فراخوانی‌شده به کار رود\&. .sp افزوده‌شده در نگارش ۱۹۷\&. .RE .PP \fItype=\fR .RS 4 یک آرگومان رشته‌ای می‌گیرد که نوع نشست را مشخص می‌کند\&. متغیر محیطی \fIXDG_SESSION_TYPE\fR (در ادامه را ببینید) اولویت دارد\&. یکی از مقادیر \fBunspecified\fR، \fBtty\fR، \fBx11\fR، \fBwayland\fR، \fBmir\fR یا \fBweb\fR\&. برای جزئیات درباره نوع نشست، \fBsd_session_get_type\fR(3) را ببینید\&. .sp افزوده‌شده در نگارش ۲۰۹\&. .RE .PP \fIdesktop=\fR .RS 4 یک شناسه رشته‌ای منفرد و کوتاه برای محیط میزکار می‌گیرد\&. متغیر محیطی \fIXDG_SESSION_DESKTOP\fR (در ادامه را ببینید) اولویت دارد\&. در جاهایی که کاربرد داشته باشد و در صورت موجود بودن این اطلاعات، ممکن است برای مشخص کردن میزکار استفاده‌شده در نشست به کار رود؛ به عنوان مثال: \fBGNOME\fR یا \fBKDE\fR\&. توصیه می‌شود از همان شناسه‌ها و حروف بزرگ/کوچک همانند \fI$XDG_CURRENT_DESKTOP\fR، مطابق تعریف‌شده در \m[blue]\fBمشخصات مدخل دسکتاپ (Desktop Entry Specification)\fR\m[]\&\s-2\u[2]\d\s+2 استفاده شود\&. (با این حال، توجه داشته باشید که این گزینه تنها یک مورد می‌پذیرد، نه یک لیست جداشده با دونقطه مانند \fI$XDG_CURRENT_DESKTOP\fR\&.) برای جزئیات بیشتر \fBsd_session_get_desktop\fR(3) را ببینید\&. .sp افزوده‌شده در نگارش ۲۴۰\&. .RE .PP \fIarea=\fR .RS 4 یک نام فایل را به عنوان پارامتر می‌گیرد\&. در صورت تعیین و هنگام ورود کاربر به حساب خود، متغیر محیطی \fI$HOME\fR روی ~/Areas/ با پسوند رشته مشخص‌شده تنظیم می‌شود، اما تنها در صورتی که آن دایرکتوری وجود داشته باشد\&. علاوه بر این، متغیر \fI$XDG_AREA\fR روی پارامتر (بدون پیشوند) تنظیم خواهد شد\&. .sp این قابلیت می‌تواند برای نگهداری چندین دایرکتوری خانگی ثانویه مجزا درون دایرکتوری خانگی اصلی کاربر استفاده شود\&. معمولاً ناحیه‌ای که قرار است به آن وارد شوید، در صورت مجاز بودن توسط حساب کاربری، هنگام ورود مشخص می‌شود (حساب‌های ارائه‌شده توسط \fBpam_systemd_home\fR(8) این امکان را دارند)، اما این پارامتر می‌تواند برای تعریف یک مقدار پیش‌فرض در صورت مشخص نشدن آن استفاده شود\&. .sp توجه داشته باشید که این فقط \fI$HOME\fR را در هنگام ورود تنظیم می‌کند و بر دایرکتوری خانگی گزارش‌شده کاربر در جاهای دیگر تأثیری نمی‌گذارد\&. به طور خاص این بدان معناست که \fBsshd\fR(8) همچنان کلیدهای SSH کاربر را تنها در دایرکتوری خانگی اصلی کاربر جستجو می‌کند، نه در هیچ‌یک از نواحی آن\&. .sp توجه داشته باشید که ناحیه پیش‌فرض برای ورود می‌تواند به عنوان بخشی از حساب کاربری نیز پیکربندی شود\&. ناحیه مشخص‌شده از طریق \fIarea=\fR بر ناحیه پیش‌فرض پیکربندی‌شده در آنجا برتری دارد\&. همچنین توجه داشته باشید که اگر ناحیه به طور صریح توسط کاربر هنگام ورود مشخص شود، بر هر دو برتری خواهد داشت\&. همچنین توجه داشته باشید که تنظیم این پارامتر روی یک رشته خالی، اثر هرگونه ناحیه پیش‌فرض پیکربندی‌شده به عنوان بخشی از رکورد کاربر را خنثی می‌کند؛ یعنی تضمین می‌کند که کاربر به دایرکتوری خانگی اصلی حساب خود وارد شود\&. .sp برای جزئیات درباره مفهوم ناحیه (area)، \fBpam_systemd_home\fR(8) را ببینید\&. .sp افزوده‌شده در نگارش ۲۵۸\&. .RE .PP \fIdefault\-capability\-bounding\-set=\fR, \fIdefault\-capability\-ambient\-set=\fR .RS 4 یک فهرست جداشده با کاما از قابلیت‌های پردازه (process capabilities) (مانند \fBCAP_WAKE_ALARM\fR، \fBCAP_BLOCK_SUSPEND\fR و غیره) را می‌گیرد تا برای پردازه‌های نشست فراخوانی‌شده تنظیم شوند، در صورتی که رکورد کاربر مجموعه‌های مناسب قابلیت‌ها را مستقیماً کدگذاری نکرده باشد\&. برای جزئیات در مورد مفهوم قابلیت‌ها، \fBcapabilities\fR(7) را ببینید\&. در صورت عدم تعیین، مجموعه محدودکننده پیش‌فرض (bounding set) دست‌نخورده باقی می‌ماند (یعنی معمولاً شامل مجموعه کامل قابلیت‌ها است)\&. مجموعه محیطی پیش‌فرض (ambient set) برای کاربران عادی در صورتی که نشست PAM با یک جایگاه (seat) محلی مرتبط باشد یا برای سرویس کاربری سیستم‌دی user@\&.service فراخوانی شود، روی \fBCAP_WAKE_ALARM\fR تنظیم می‌شود\&. در غیر این صورت، پیش‌فرض آن مجموعه خالی است\&. .sp افزوده‌شده در نگارش ۲۵۴\&. .RE .PP \fIdebug\fR[=] .RS 4 یک آرگومان بولی اختیاری می‌گیرد\&. در صورت مقدار yes یا بدون آرگومان، ماژول در حین کار اطلاعات اشکال‌زدایی را لاگ می‌کند\&. .RE .SH "انواع ماژول ارائه شده (PROVIDED MODULE TYPES)" .PP فقط \fBsession\fR ارائه می‌شود\&. .SH "متغیرهای محیطی (ENVIRONMENT)" .PP متغیرهای محیطی زیر توسط ماژول مقداردهی اولیه می‌شوند و برای پردازه‌های نشست کاربر در دسترس هستند: .PP \fI$XDG_SESSION_ID\fR .RS 4 یک شناسه کوتاه نشست که برای استفاده در نام فایل‌ها مناسب است\&. خود این رشته باید به عنوان یک مقدار مات (opaque) تلقی شود، هرچند اغلب صرفاً شناسه نشست بازرسی (audit) است که توسط /proc/self/sessionid گزارش می‌شود\&. هر شناسه فقط یک بار در طول زمان روشن بودن سیستم (uptime) اختصاص داده می‌شود\&. از این رو ممکن است برای برچسب‌گذاری یکتای فایل‌ها یا سایر منابع این نشست استفاده شود\&. این شناسه را با شناسه بوت، که توسط \fBsd_id128_get_boot\fR(3) برگردانده می‌شود، برای یک شناسه سراسری یکتا ترکیب کنید\&. .RE .PP \fI$XDG_RUNTIME_DIR\fR .RS 4 مسیر به یک دایرکتوری خصوصی کاربر و قابل نوشتن توسط کاربر که به زمان ورود کاربر به دستگاه مقید است\&. این دایرکتوری نخستین باری که کاربر وارد می‌شود به‌طور خودکار ایجاد شده و با خروج نهایی کاربر حذف می‌شود\&. اگر یک کاربر به طور همزمان دو بار وارد شود، هر دو نشست همان \fI$XDG_RUNTIME_DIR\fR و همان محتویات را خواهند دید\&. اگر کاربری یک بار وارد شود، سپس خارج شده و دوباره وارد شود، محتویات دایرکتوری در این بین از دست رفته خواهد بود؛ با این حال برنامه‌ها نباید به این رفتار وابسته باشند و باید بتوانند با فایل‌های کهنه کنار بیایند\&. برای ذخیره داده‌های خصوصی نشست در این دایرکتوری، کاربر باید مقدار \fI$XDG_SESSION_ID\fR را در نام فایل بگنجاند\&. این دایرکتوری باید برای اشیای سیستم فایل زمان اجرا مانند سوکت‌های \fBAF_UNIX\fR، لوله‌های FIFO، فایل‌های PID و موارد مشابه استفاده شود\&. تضمین می‌شود که این دایرکتوری محلی بوده و بالاترین مجموعه ویژگی‌های سیستم فایل را که سیستم‌عامل ارائه می‌دهد داراست\&. برای جزئیات بیشتر، \m[blue]\fBمشخصات دایرکتوری پایه XDG (XDG Base Directory Specification)\fR\m[]\&\s-2\u[3]\d\s+2 را ببینید\&. اگر کاربر فعلی، کاربر اصلی نشست نباشد، \fI$XDG_RUNTIME_DIR\fR تنظیم نمی‌شود\&. .RE .PP \fI$TZ\fR, \fI$EMAIL\fR, \fI$LANG\fR .RS 4 اگر یک رکورد کاربری JSON برای کاربر در حال ورود مشخص باشد، این متغیرها از داده‌های مربوطه در آن رکورد مقداردهی اولیه می‌شوند\&. .sp افزوده‌شده در نگارش ۲۴۵\&. .RE .PP \fI$SHELL_PROMPT_PREFIX\fR, \fI$SHELL_PROMPT_SUFFIX\fR, \fI$SHELL_WELCOME\fR .RS 4 این متغیرهای محیطی از اعتبارهای سرویس (service credentials) "shell\&.prompt\&.prefix"، "shell\&.prompt\&.suffix" و "shell\&.welcome" (در صورت تنظیم بودن) مقداردهی اولیه می‌شوند\&. آن‌ها به پردازه‌های نشست فراخوانی‌شده تحویل داده می‌شوند، جایی که در اعلان پوسته (shell prompt) وارد می‌شوند (به‌طور خاص \fI$SHELL_PROMPT_PREFIX\fR به عنوان پیشوند به \fI$PS1\fR و \fI$SHELL_PROMPT_SUFFIX\fR به عنوان پسوند افزوده می‌شود) یا در نخستین راه‌اندازی پوسته بر روی صفحه نمایش چاپ می‌شوند\&. .sp افزوده‌شده در نگارش ۲۵۷\&. .RE .PP متغیرهای محیطی زیر توسط ماژول خوانده می‌شوند و ممکن است توسط سرویس PAM برای انتقال فراداده (metadata) به ماژول استفاده شوند\&. اگر این متغیرها در هنگام فراخوانی ماژول PAM تنظیم نشده باشند اما بتوان آن‌ها را به روش دیگری تعیین کرد، توسط ماژول تنظیم می‌شوند تا در صورت مشخص بودن، برای نشست و برنامه‌ها مقداردهی اولیه گردند\&. .PP \fI$XDG_SESSION_TYPE\fR .RS 4 نوع نشست\&. این متغیر می‌تواند به جای \fItype=\fR در خط پارامترهای ماژول استفاده شود و معمولاً ترجیح داده می‌شود\&. .sp افزوده‌شده در نگارش ۲۰۹\&. .RE .PP \fI$XDG_SESSION_CLASS\fR .RS 4 کلاس نشست\&. این متغیر می‌تواند به جای \fIclass=\fR در خط پارامترهای ماژول استفاده شود و معمولاً ترجیح داده می‌شود\&. .sp افزوده‌شده در نگارش ۲۰۹\&. .RE .PP \fI$XDG_SESSION_DESKTOP\fR .RS 4 شناسه میزکار\&. این متغیر می‌تواند به جای \fIdesktop=\fR در خط پارامترهای ماژول استفاده شود و معمولاً ترجیح داده می‌شود\&. .sp افزوده‌شده در نگارش ۲۰۹\&. .RE .PP \fI$XDG_SEAT\fR .RS 4 نام جایگاه (seat) که نشست باید برای آن ثبت شود (در صورت وجود)\&. .sp افزوده‌شده در نگارش ۲۰۹\&. .RE .PP \fI$XDG_VTNR\fR .RS 4 شماره VT که نشست باید برای آن ثبت شود (در صورت وجود)\&. (تنها در مورد جایگاه‌هایی با VT در دسترس، مانند "seat0" اعمال می‌شود)\&. .sp افزوده‌شده در نگارش ۲۰۹\&. .RE .PP \fI$XDG_AREA\fR .RS 4 اگر یک ناحیه (دایرکتوری‌های خانگی ثانویه کاربر، درون دایرکتوری خانگی اصلی) برای ورود انتخاب شده باشد، این متغیر روی نام ناحیه (بدون هیچ پیشوند مسیری) تنظیم می‌شود\&. در غیر این صورت تنظیم‌نشده است\&. برای جزئیات بیشتر درباره نواحی، بخش بالا را ببینید\&. .sp افزوده‌شده در نگارش ۲۵۸\&. .RE .PP \fI$XDG_SESSION_EXTRA_DEVICE_ACCESS\fR .RS 4 مجموعه دستگاه‌های سخت‌افزاری اضافی که باید به نشست اجازه دسترسی به آن‌ها داده شود\&. به ازای هر "\fIID\fR" در فهرست، دسترسی به تمام دستگاه‌هایی که با "xaccess\-\fIID\fR" در udev علامت‌گذاری شده‌اند به نشست اعطا می‌شود\&. .sp افزوده‌شده در نگارش ۲۶۰\&. .RE .PP در صورت تنظیم نشدن، \fBpam_systemd\fR متغیرهای \fI$XDG_SEAT\fR و \fI$XDG_VTNR\fR را بر اساس متغیر \fI$DISPLAY\fR (در صورت تنظیم بودن دومی) مقداردهی اولیه خواهد کرد\&. .SH "محدودیت‌های نشست (SESSION LIMITS)" .PP ماژول‌های PAM قبلی در پشته، یعنی ماژول‌هایی که پیش از \fBpam_systemd\&.so\fR می‌آیند، می‌توانند محدودیت‌های دامنه نشست را با استفاده از اشیای بافتار (context) PAM تنظیم کنند\&. داده‌های این اشیاء به صورت رشته‌های C با پایان \fBNUL\fR ارائه می‌شوند و مستقیماً به دستورالعمل‌های کنترل منبع واحد مربوطه نگاشت می‌شوند\&. توجه داشته باشید که این محدودیت‌ها بر نشست‌های فردی کاربر اعمال می‌شوند و به کل پردازه‌های کاربر به صورت یک کل واحد اعمال نمی‌گردند\&. به ویژه، نمونه واحد به ازای هر کاربر \fBuser@\&.service\fR که فرآیند مدیر \fBsystemd \-\-user\fR و فرزندان آن را اجرا می‌کند، و خارج از هر نشستی ردیابی می‌شود و بین تمام نشست‌های کاربر به اشتراک گذاشته می‌شود، تحت پوشش این محدودیت‌ها قرار نمی‌گیرد\&. .PP برای اطلاعات بیشتر درباره منابع، \fBsystemd.resource-control\fR(5) را ببینید\&. همچنین برای اطلاعات بیشتر درباره نحوه تنظیم اشیای بافتار، \fBpam_set_data\fR(3) را ببینید\&. .PP \fIsystemd\&.memory_max=\fR .RS 4 دستورالعمل واحد \fIMemoryMax=\fR را تنظیم می‌کند\&. .sp افزوده‌شده در نگارش ۲۳۹\&. .RE .PP \fIsystemd\&.tasks_max=\fR .RS 4 دستورالعمل واحد \fITasksMax=\fR را تنظیم می‌کند\&. .sp افزوده‌شده در نگارش ۲۳۹\&. .RE .PP \fIsystemd\&.cpu_weight=\fR .RS 4 دستورالعمل واحد \fICPUWeight=\fR را تنظیم می‌کند\&. .sp افزوده‌شده در نگارش ۲۳۹\&. .RE .PP \fIsystemd\&.io_weight=\fR .RS 4 دستورالعمل واحد \fIIOWeight=\fR را تنظیم می‌کند\&. .sp افزوده‌شده در نگارش ۲۳۹\&. .RE .PP \fIsystemd\&.runtime_max_sec=\fR .RS 4 دستورالعمل واحد \fIRuntimeMaxSec=\fR را تنظیم می‌کند\&. .sp افزوده‌شده در نگارش ۲۴۴\&. .RE .PP نمونه داده‌هایی که می‌تواند از یک ماژول PAM دیگر ارائه شود: .sp .if n \{\ .RS 4 .\} .nf 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); .fi .if n \{\ .RE .\} .sp .SH "مثال (EXAMPLE)" .PP در اینجا نمونه‌ای از قطعه‌پیکربندی PAM آورده شده است که اجازه می‌دهد نشست‌های کاربران توسط systemd\-logind\&.service مدیریت شوند: .sp .if n \{\ .RS 4 .\} .nf #%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 \fB\-session optional pam_systemd\&.so\fR session required pam_unix\&.so .fi .if n \{\ .RE .\} .SH "همچنین ببینید (SEE ALSO)" .PP \fBsystemd\fR(1), \fBsystemd-user-sessions.service\fR(8), \fBuser@.service\fR(5), \fBsystemd-logind.service\fR(8), \fBlogind.conf\fR(5), \fBloginctl\fR(1), \fBpam_systemd_home\fR(8), \fBpam.conf\fR(5), \fBpam.d\fR(5), \fBpam\fR(8), \fBpam_loginuid\fR(8), \fBsystemd.scope\fR(5), \fBsystemd.slice\fR(5), \fBsystemd.service\fR(5) .SH "یادداشت‌ها (NOTES)" .IP " 1." 4 رکوردهای کاربری JSON (JSON User Records) .RS 4 \%https://systemd.io/USER_RECORD .RE .IP " 2." 4 مشخصات مدخل دسکتاپ (Desktop Entry Specification) .RS 4 \%https://standards.freedesktop.org/desktop-entry-spec/latest .RE .IP " 3." 4 مشخصات دایرکتوری پایه XDG (XDG Base Directory Specification) .RS 4 \%https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html .RE