| PORTABLECTL(1) | portablectl | PORTABLECTL(1) |
نام (NAME)
portablectl - متصل کردن، جدا کردن یا بازرسی سرویسهای قابلحمل (Portable Services)
خلاصه دستور (SYNOPSIS)
portablectl [OPTIONS...] {COMMAND} [NAME...]
توضیحات (DESCRIPTION)
portablectl میتواند برای متصل کردن، جدا کردن یا بازرسی ایمیجهای سرویس قابلحمل استفاده شود. این ابزار اساساً دستوری برای تعامل با systemd-portabled.service(8) است.
ایمیجهای سرویس قابلحمل حاوی یک درخت سیستمفایل سیستمعامل به همراه اطلاعات فایل واحد systemd(1) هستند. یک ایمیج سرویس میتواند به سیستم محلی «متصل» (attach) شود. در صورت اتصال، مجموعهای از فایلهای واحد از ایمیج به میزبان کپی میشوند، و با تخصیصهای RootDirectory= یا RootImage= (در مورد واحدهای سرویس) که به فایل یا دایرکتوری ایمیج اشاره دارند گسترش مییابند، تا اطمینان حاصل شود که سرویسها در بستر سیستمفایل ایمیج اجرا خواهند شد.
ایمیجهای سرویس قابلحمل روشی کارآمد برای بستهبندی چندین سرویس مرتبط و سایر واحدها در کنار یکدیگر و انتقال یکپارچه آنها بین سیستمها هستند. هنگامی که این ایمیجها به سیستم محلی متصل میشوند، واحدهای موجود در آنها در بیشتر موارد مانند واحدهای معمولی ارائهشده توسط سیستم، یا با امتیازات کامل یا درون ایزولهسازی دقیق (سندباکس)، بسته به پیکربندی انتخابشده، اجرا میشوند. برای جزئیات بیشتر، ببینید: Portable Services[1].
ایمیجهای سرویس قابلحمل ممکن است از انواع زیر باشند:
دستورات (COMMANDS)
دستورات زیر پشتیبانی میشوند:
list
افزوده شده در نسخه 239.
attach IMAGE [PREFIX...]
هنگامی که یک سرویس قابلحمل متصل میشود، چهار عملیات اجرا میگردد:
بهطور پیشفرض، تمام فایلهای واحدی که نام آنها با پیشوندی برگرفته از نام فایل ایمیج آغاز میشود، به بیرون کپی میشوند. بهطور خاص، پیشوند از نام فایل ایمیج با حذف هرگونه پسوند مانند .raw تعیین شده و در صورت وجود نویسه خط زیرین ("_")، در اولین وقوع آن کوتاه میشود. منطق خط زیرین برای نسخهبندی در نظر گرفته شده است، به طوری که یک فایل ایمیج مانند foobar_47.11.raw منجر به پیشوند تطبیق فایل واحد foobar خواهد شد. سپس این پیشوند با نام تمام فایلهای واحد موجود در دایرکتوریهای معمول ایمیج مقایسه میشود، اما تنها نامهای فایل واحدی که در آنها پس از پیشوند نویسههای "-"، "." یا "@" قرار گرفته باشد در نظر گرفته میشوند. مثال: اگر نام یک فایل ایمیج سرویس قابلحمل foobar_47.11.raw باشد، آنگاه بهطور پیشفرض تمام فایلهای واحد آن با نامهایی نظیر foobar-quux-waldi.service، foobar.service یا foobar@.service در نظر گرفته خواهند شد. امکان بازنویسی پیشوند تطبیق وجود دارد: تمام رشتههای ذکرشده در خط فرمان پس از نام فایل ایمیج به عنوان پیشوند در نظر گرفته میشوند، و بر منطق ضمنی مشتق شدن پیشوند از نام فایل ایمیج ارجحیت مییابند.
بهطور پیشفرض، پس از اتصال فایلهای واحد، پیکربندی مدیر سرویس مجدداً بارگذاری (reload) میشود، مگر زمانی که --no-reload مشخص شده باشد (به زیر مراجعه کنید). این امر تضمین میکند که واحدهای جدید فراهمشده برای مدیر سرویس توسط آن دیده شوند.
اگر --now و/یا --enable ارسال شوند، سرویسهای قابلحمل بلافاصله پس از متصل کردن ایمیج راهاندازی (عملیات مسدودکننده، مگر اینکه --no-block ارسال شده باشد) و/یا فعال میشوند.
هنگام اتصال ایمیجها، یک خطمشی ایمیج (image policy) ایجاد میشود که ایمیج متصلشده را دقیقاً بر اساس محتوایی که هنگام اتصال یافت شده سنجاق (pin) میکند، تا نتوان آن را با تنزل امنیت (مانند حذف محافظت dm-verity) بدون نصب مجدد کامل جایگزین کرد. برای جزئیات بیشتر در مورد خطمشیها، به systemd.image-policy(7) مراجعه کنید.
به جای مسیر ایمیج، میتوان یک دایرکتوری دارای نسخه ".v/" را مشخص کرد، برای جزئیات به systemd.v(7) مراجعه کنید.
به جای مسیر دایرکتوری، میتوان یک دایرکتوری دارای نسخه ".v/" را مشخص کرد، برای جزئیات به systemd.v(7) مراجعه کنید.
افزوده شده در نسخه 239.
detach IMAGE [PREFIX...]
اگر --now و/یا --enable ارسال شوند، سرویسهای قابلحمل بلافاصله قبل از جدا کردن ایمیج متوقف میشوند (عملیات مسدودکننده) و/یا غیرفعال میگردند. پیشوند(ها) نیز پذیرفته میشوند، تا در صورتی که نام واحدها با نام ایمیج مطابق آنچه در attach توصیف شد یکسان نباشد، مورد استفاده قرار گیرند.
افزوده شده در نسخه 239.
reattach IMAGE [PREFIX...]
اگر --now و/یا --enable ارسال شوند، سرویسهای قابلحمل در صورت حذف شدن بلافاصله متوقف میشوند، در صورت اضافه شدن راهاندازی و/یا فعال میگردند، و در صورت بهروزرسانی مجدداً راهاندازی میشوند. پیشوندها نیز به همان شیوهای که در attach شرح داده شد پذیرفته میشوند.
افزوده شده در نسخه 248.
inspect IMAGE [PREFIX...]
افزوده شده در نسخه 239.
is-attached IMAGE
جدول ۱. وضعیتهای اتصال ایمیج
| وضعیت | توضیحات |
| detached | ایمیج در حال حاضر متصل نیست. |
| attached | ایمیج در حال حاضر متصل است، یعنی فایلهای واحد آن در دسترس سیستم میزبان قرار گرفتهاند. |
| attached-runtime | مانند attached، اما فایلهای واحد تنها بهصورت گذرا در دسترس قرار گرفتهاند، یعنی دستور attach با گزینه --runtime فراخوانی شده است. |
| enabled | ایمیج در حال حاضر متصل است، و دستکم یکی از فایلهای واحد مرتبط با آن فعال شده است. |
| enabled-runtime | مانند enabled، اما فایلهای واحد تنها بهصورت گذرا در دسترس قرار گرفتهاند، یعنی دستور attach با گزینه --runtime فراخوانی شده است. |
| running | ایمیج در حال حاضر متصل است، و دستکم یکی از فایلهای واحد مرتبط با آن در حال اجرا است. |
| running-runtime | ایمیج در حال حاضر بهصورت گذرا متصل است، و دستکم یکی از فایلهای واحد مرتبط با آن در حال اجرا است. |
افزوده
شده در نسخه
239.
read-only IMAGE [BOOL]
افزوده شده در نسخه 239.
remove IMAGE...
افزوده شده در نسخه 239.
set-limit [IMAGE] BYTES
توجه داشته باشید که محدودیتهای اندازه به ازای هر ایمیج تنها روی سیستمفایلهای btrfs پشتیبانی میشوند. همچنین، بسته به تنظیمات BindPaths= در فایلهای واحد سرویس قابلحمل، دایرکتوریهایی از میزبان ممکن است در طول زمان اجرا در محیط ایمیج قابل مشاهده باشند که تحت تأثیر این تنظیم قرار نمیگیرند، زیرا فقط خود ایمیج در این محدودیت محاسبه میشود.
افزوده شده در نسخه 239.
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
-q, --quiet
افزوده شده در نسخه 239.
-p PROFILE, --profile=PROFILE
افزوده شده در نسخه 239.
--copy=
افزوده شده در نسخه 239.
--runtime
افزوده شده در نسخه 239.
--no-reload
افزوده شده در نسخه 239.
--cat
افزوده شده در نسخه 239.
--enable
افزوده شده در نسخه 245.
--now
افزوده شده در نسخه 245.
--no-block
افزوده شده در نسخه 245.
--clean
افزوده شده در نسخه 256.
--extension=PATH
توجه داشته باشید که هنگام متصل کردن و جدا کردن، باید همان افزونهها به همان ترتیب مشخص شوند.
به جای مسیر ایمیج میتوان یک دایرکتوری نسخهبندیشده ".v/" را مشخص کرد، برای جزئیات به systemd.v(7) مراجعه فرمایید.
به جای مسیر دایرکتوری میتوان یک دایرکتوری نسخهبندیشده ".v/" را مشخص کرد، برای جزئیات به systemd.v(7) مراجعه فرمایید.
افزوده شده در نسخه 249.
--force
افزوده شده در نسخه 252.
-H, --host=
-M, --machine=
--no-pager
--no-legend
--no-ask-password
-h, --help
--version
فایلها و دایرکتوریها (FILES AND DIRECTORIES)
ایمیجهای سرویس قابلحمل ترجیحاً در /var/lib/portables/ ذخیره میشوند، اما در مسیرهای /etc/portables/، /run/portables/، /usr/local/lib/portables/ و /usr/lib/portables/ نیز جستجو میگردند. توصیه میشود فایلهای ایمیج مستقیماً در /etc/portables/ یا /run/portables/ قرار داده نشوند (چرا که این مسیرها عموماً برای ذخیره دادههای بزرگ یا غیرمتنی مناسب نیستند)، بلکه از این دایرکتوریها تنها برای پیوند دادن ایمیجهای قرارگرفته در نقاط دیگر به مسیر جستجوی ایمیج استفاده شود.
هنگامی که یک ایمیج سرویس قابلحمل متصل میشود، فایلهای واحد منطبق روی میزبان در دایرکتوریهای /etc/systemd/system.attached/ و /run/systemd/system.attached/ کپی میگردند. هنگامی که یک ایمیج جدا میشود، فایلهای واحد دوباره از این دایرکتوریها حذف میشوند.
پروفایلها (PROFILES)
هنگامی که ایمیجهای سرویس قابلحمل متصل میشوند، یک دراپاین "profile" پیوند داده میشود که میتواند برای اعمال محدودیتهای امنیتی (و سایر محدودیتها) بهصورت محلی استفاده شود. چهار دراپاین پروفایل بهطور پیشفرض تعریف شدهاند و در /usr/lib/systemd/portable/profile/ ارائه میشوند. پروفایلهای محلی اضافی را میتوان با قرار دادن آنها در /etc/systemd/portable/profile/ تعریف کرد. پروفایلهای پیشفرض عبارتند از:
جدول ۲. پروفایلها
| نام | توضیحات |
| default | این پروفایل پیشفرض است، چنانچه هیچ نام پروفایل دیگری از طریق --profile= تنظیم نشده باشد (به بالا مراجعه کنید). نسبتاً محدودکننده است، اما برای بارهای کاری متداول و بدون امتیاز ویژه سیستم کارآمد خواهد بود. این شامل دسترسی نوشتن به چارچوب ثبت وقایع، و همچنین دسترسی IPC به سیستم D-Bus میشود. |
| nonetwork | بسیار شبیه به default است، اما شبکه برای تمام سرویسهای ایمیج سرویس قابلحمل غیرفعال است. |
| strict | پروفایلی با تنظیمات بسیار سختگیرانه. این پروفایل دسترسی IPC (D-Bus) و شبکه را مستثنی و مسدود میکند. |
| trusted | پروفایلی با تنظیمات بسیار آسانگیرانه. در این پروفایل، سرویسها با امتیازات کامل اجرا میشوند. |
برای
جزئیات
درباره این
پروفایلها
و اثرات
آنها، به
تعاریف
دقیق آنها
مراجعه
فرمایید،
به عنوان
مثال
/usr/lib/systemd/portable/profile/default/service.conf و
موارد
مشابه.
کدهای خروج (EXIT STATUS)
در صورت موفقیت، مقدار 0 بازگردانده میشود، و در غیر این صورت یک کد خطای غیرصفر بازمیگردد.
محیط (ENVIRONMENT)
$SYSTEMD_LOG_LEVEL
$SYSTEMD_LOG_COLOR
این تنظیم تنها زمانی مفید است که پیامها مستقیماً در ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگها را نمایش میدهند پیامها را خودشان بر اساس سطح لاگ رنگآمیزی میکنند.
$SYSTEMD_LOG_TIME
این تنظیم تنها زمانی سودمند است که پیامها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگها را نمایش میدهند برچسبهای زمانی را خودشان بر اساس فرادادههای ورودی پیوست میکنند.
$SYSTEMD_LOG_LOCATION
توجه داشته باشید که مکان لاگ اغلب به هر حال به عنوان فراداده به ورودیهای ژورنال پیوست میشود. با این حال گنجاندن مستقیم آن در متن پیام میتواند هنگام عیبیابی برنامهها بسیار کارآمد باشد.
$SYSTEMD_LOG_TID
توجه داشته باشید که این اطلاعات اغلب به هر حال به عنوان فراداده به ورودیهای ژورنال پیوست میشود. با این حال گنجاندن مستقیم آن در متن پیام میتواند هنگام عیبیابی برنامهها کارآمد باشد.
$SYSTEMD_LOG_TARGET
$SYSTEMD_LOG_RATELIMIT_KMSG
$SYSTEMD_PAGER, $PAGER
نکته: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER تنها میتوانند برای غیرفعال کردن صفحهبند (با "cat" یا "") استفاده شوند و در غیر این صورت نادیده گرفته میشوند.
$SYSTEMD_LESS
کاربران ممکن است به طور خاص مایل به تغییر دو گزینه باشند:
K
اگر مقدار $SYSTEMD_LESS شامل "K" نباشد و صفحهبند فراخوانیشده less باشد، Ctrl+C توسط برنامه اجرایی نادیده گرفته شده و باید توسط صفحهبند مدیریت شود.
X
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ اثری بر فراخوانیهای less توسط ابزارهای systemd ندارد.
برای توضیحات بیشتر به less(1) مراجعه کنید.
$SYSTEMD_LESSCHARSET
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ اثری بر فراخوانیهای less توسط ابزارهای systemd ندارد.
$SYSTEMD_PAGERSECURE
این گزینه یک آرگومان بولی میپذیرد. در صورت تنظیم روی true، «حالت امن» صفحهبند فعال میشود. در «حالت امن»، هنگام فراخوانی صفحهبند متغیر LESSSECURE=1 تنظیم خواهد شد که به صفحهبند دستور میدهد دستوراتی را که فایلهای جدید باز میکنند یا میسازند، یا زیرپردازشهای جدید را آغاز مینمایند، غیرفعال کند. در حال حاضر تنها less(1) شناخته شده است که این متغیر را درک کرده و «حالت امن» را پیادهسازی مینماید.
در صورت تنظیم روی false، هیچ محدودیتی بر صفحهبند اعمال نمیشود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از محیط به ارث رسیده ممکن است به کاربر اجازه اجرای دستورات دلخواه را بدهد.
هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd تلاش میکنند بهطور خودکار تشخیص دهند که آیا «حالت امن» باید فعال شود و آیا صفحهبند از آن پشتیبانی میکند یا خیر. اگر شناسه کاربری مؤثر (UID) با مالک نشست ورود یکسان نباشد (به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید)، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه (که متغیر $SUDO_UID تنظیم شده باشد [2])، «حالت امن» فعال میشود. در این حالتها، SYSTEMD_PAGERSECURE=1 تنظیم خواهد شد و صفحهبندهایی که اجرای «حالت امن» توسط آنها شناخته نشده است اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار تنها متداولترین سازوکارهای ارتقای اختیارات را پوشش میدهد و برای راحتی کار در نظر گرفته شده است. توصیه میشود صراحتاً $SYSTEMD_PAGERSECURE را تنظیم کنید یا صفحهبند را غیرفعال نمایید.
توجه داشته باشید که اگر قرار باشد متغیرهای $SYSTEMD_PAGER یا $PAGER رعایت شوند، به جز برای غیرفعال کردن صفحهبند، باید $SYSTEMD_PAGERSECURE نیز تنظیم شده باشد.
$SYSTEMD_COLORS
true
false
"16"، "256"، "24bit"
"auto-16"، "auto-256"، "auto-24bit"
$SYSTEMD_URLIFY
همچنین ببینید (SEE ALSO)
systemd(1), systemd-sysext(8), org.freedesktop.portable1(5), systemd-portabled.service(8), importctl(1)
نکات (NOTES)
- 1.
- Portable Services
- 2.
- توصیه میشود که سایر ابزارها نیز متغیر $SUDO_UID را بر حسب نیاز تنظیم و بررسی کنند، و با آن به عنوان یک رابط مشترک رفتار نمایند.
| systemd 261.2 |