.\" t .\" Copyright © 2005-2010 Roger Leigh .\" Copyright © 2006 Andreas Bombe .\" .\" schroot is free software: you can redistribute it and/or modify it .\" under the terms of the GNU General Public License as published by .\" the Free Software Foundation, either version 3 of the License, or .\" (at your option) any later version. .\" .\" schroot is distributed in the hope that it will be useful, but .\" WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU .\" General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see .\" . .\" .ds RELEASE_DATE 14 Aug 2022 .ds VERSION 1.6.13 .ds SCHROOT_LIBEXEC_DIR /usr/lib/schroot .ds SCHROOT_MOUNT_DIR /var/run/schroot/mount .ds SCHROOT_SESSION_DIR /var/lib/schroot/session .ds SCHROOT_FILE_UNPACK_DIR /var/lib/schroot/unpack .ds SCHROOT_OVERLAY_DIR /var/lib/schroot/union/overlay .ds SCHROOT_UNDERLAY_DIR /var/lib/schroot/union/underlay .ds SCHROOT_SYSCONF_DIR /etc/schroot .ds SCHROOT_CONF /etc/schroot/schroot.conf .ds SCHROOT_CONF_CHROOT_D /etc/schroot/chroot.d .ds SCHROOT_CONF_SETUP_D /etc/schroot/setup.d .ds SCHROOT_DATA_DIR /usr/share/schroot .ds SCHROOT_SETUP_DATA_DIR /usr/share/schroot/setup .ds SCHROOT_LOCALE_DIR /usr/share/locale .ds PACKAGE_LOCALE_DIR /usr/share/locale .ds PROGRAM schroot .TH SCHROOT 1 "\*[RELEASE_DATE]" "Version \*[VERSION]" "Debian sbuild" .SH "نام (NAME)" schroot \- ورود امن به یک محیط chroot .SH "خلاصه دستور (SYNOPSIS)" .B schroot .RB [ \-h \[or] \-\-help " \[or] " \-V \[or] \-\-version .RB " \[or] " \-l \[or] \-\-list " \[or] " \-i \[or] \-\-info .RB " \[or] " \-\-config " \[or] " \-\-location .RB " \[or] " \-\-automatic\-session .RB " \[or] " \-b \[or] \-\-begin\-session " \[or] " \-\-recover\-session .RB " \[or] " \-r \[or] \-\-run\-session " \[or] " \-e \[or] \-\-end\-session ] .RB [ \-f \[or] "\-\-force" ] .RB [ "\-n \fIsession-name\fP" \[or] "\-\-session\-name=\fIsession-name\fP" ] .RB [ "\-d \fIdirectory\fP" \[or] "\-\-directory=\fIdirectory\fP" ] .RB [ "\-u \fIuser\fP" \[or] "\-\-user=\fIuser\fP" ] .RB [ \-p \[or] \-\-preserve\-environment ] .RB [ "\-s \fIshell\fP" \[or] "\-\-shell=\fIshell\fP" ] .RB [ \-q \[or] \-\-quiet " \[or] " \-v \[or] \-\-verbose ] .RB [ "\-c \fIchroot\fP" \[or] "\-\-chroot=\fIchroot\fP" .RB " \[or] [" \-\-all " \[or] " \-\-all\-chroots " \[or] " \-\-all\-source\-chroots " \[or] " \-\-all\-sessions ] .RB [ \-\-exclude\-aliases ]] .RB [ -o \[or] "\-\-option=\fIkey=value\fP" ] .RB [ \-\- ] .RB [ COMMAND " [ " ARG1 " [ " ARG2 " [ " ARGn ]]]] .SH "توضیحات (DESCRIPTION)" دستور \fBschroot\fP به کاربر اجازه می‌دهد تا یک فرمان یا یک شل ورود (login shell) را در یک محیط chroot اجرا کند. اگر هیچ فرمانی مشخص نشود، یک شل ورود در دایرکتوری کاری فعلی کاربر در داخل chroot آغاز خواهد شد. .PP فرمان شامل یک برنامه به همراه تعداد دلخواهی از آرگومان‌های اختیاری است. هر آرگومان می‌تواند به طور جداگانه داخل گیومه قرار گیرد. .PP دایرکتوری‌ای که فرمان یا شل ورود در آن اجرا می‌شود به زمینهٔ اجرا بستگی دارد. برای توضیحات کامل، گزینهٔ \fI\-\-directory\fP را در ادامه ببینید. .PP تمامی استفاده‌ها از chroot در گزارش‌های وقایع سیستم ثبت خواهد شد. تحت شرایطی خاص، ممکن است از کاربر خواسته شود هویت خود را احراز کند؛ بخش \[lq]\fIاحراز هویت (Authentication)\fP\[rq] را در ادامه ببینید. .PP اگر هیچ chroot مشخص نشده باشد، نام chroot یا نام‌مستعار \[oq]default\[cq] به عنوان پیش‌فرضِ جایگزین استفاده خواهد شد. این حالت معادل \[lq]\-\-chroot=default\[rq] است. .SH "نمای کلی (OVERVIEW)" اغلب نیاز است که برنامه‌ها به‌جای اجرا روی سیستم میزبان به طور مستقیم، در یک محیط مجازی‌سازی‌شده اجرا شوند. برخلاف سایر سیستم‌های مجازی‌سازی مانند \fBkvm\fP یا \fBXen\fP، برنامهٔ schroot کل سیستم را مجازی‌سازی نمی‌کند؛ بلکه تنها فایل‌سیستم را مجازی می‌کند و حتی ممکن است بخش‌هایی از فایل‌سیستم همچنان با میزبان به اشتراک گذاشته شوند. از این رو سریع، سبک و انعطاف‌پذیر است. با این حال، سایر جنبه‌های سیستم مانند حافظهٔ مشترک (shared memory)، شبکه، دستگاه‌ها و غیره را مجازی‌سازی نمی‌کند و بنابراین بسته به کاربرد مورد نظر، ممکن است امنیت کمتری نسبت به سایر سیستم‌ها داشته باشد. برخی از نمونه‌های کاربرد فعلی schroot عبارتند از: .IP \[bu] اجرای یک برنامهٔ غیرقابل‌اعتماد در یک محیط ایزوله (sandbox)، به گونه‌ای که نتواند با فایل‌های سیستم میزبان تداخل پیدا کند؛ این کار همچنین می‌تواند برای محدود کردن آسیبی که یک سرویس به خطر افتاده می‌تواند به میزبان وارد کند، استفاده شود .IP \[bu] استفاده از یک محیط \fIتعریف‌شده\fP یا \fIپاک\fP، جهت تضمین تکرارپذیری و یکپارچگی یک وظیفهٔ مشخص .IP \[bu] استفاده از نسخه‌های مختلف یک سیستم‌عامل، یا حتی سیستم‌های عامل کاملاً متفاوت؛ مثلاً توزیع‌های مختلف GNU/Linux .IP \[bu] اجرای برنامه‌های ۳۲ بیتی با استفاده از یک chroot ۳۲ بیتی روی یک سیستم میزبان ۶۴ بیتی .IP \[bu] ساخت خودکار بسته‌های Debian با استفاده از .BR sbuild (1) که هنگام استفاده از اسنپ‌شات‌های LVM یا unionها، هر بسته را در یک اسنپ‌شات chroot دست‌نخورده می‌سازد .IP \[bu] پشتیبانی از چندین تصویر (image) سیستمی در یک پیکربندی خوشه‌ای (cluster)، جایی که تغییر تصویر پایه زمان‌بر است و/یا پشتیبانی از تمام پیکربندی‌های مورد نیاز کاربران دشوار است: chrootهای مختلف می‌توانند از تمامی پیکربندی‌های مختلفِ مورد نیاز پشتیبانی کنند و به کاربران کلاستر می‌توان دسترسی به chrootهای مورد نیازشان را اعطا کرد (که می‌تواند شامل دسترسی root برای کاربران مورد اعتماد جهت نگهداری تصاویر خودشان باشد) .PP یک chroot می‌تواند با دسترسی root و مستقیماً با اجرای .BR chroot (8) مورد استفاده قرار گیرد، اما کاربران عادی قادر به استفاده از این فرمان نیستند. \fBschroot\fP با استفاده از همان سازوکار اما با چندین ویژگی اضافی، دسترسی به chrootها را برای کاربران عادی فراهم می‌کند. در حالی که schroot دقیقاً مانند .BR chroot (8) از یک دایرکتوری به عنوان chroot استفاده می‌کند، اما الزامی ندارد که این دایرکتوری حتماً یک دایرکتوری معمولی در فایل‌سیستم باشد. اگرچه این حالت پیش‌فرض است، اما chroot می‌تواند از یک فایل، یک فایل‌سیستم، از جمله اسنپ‌شات‌های LVM و Btrfs و سوارکردن‌های loopback ایجاد شود، یا از یک لایهٔ هم‌پوشان (overlay) unionfs تشکیل گردد. با توجه به قابلیت گسترش توسط کاربر، محدودهٔ ایجاد chroot از منابع مختلف تنها به تخیل شما محدود می‌شود. schroot بررسی دسترسی‌ها را انجام می‌دهد و امکان برپایی خودکار بیشتر محیط chroot، مانند سوار کردن فایل‌سیستم‌های اضافی و سایر وظایف پیکربندی را فراهم می‌سازد. این برپایی خودکار از طریق عملکرد \fIاسکریپت‌های راه‌اندازی (setup scripts)\fP انجام می‌شود که می‌توان آن‌ها را برای انجام هر اقدامِ مورد نیازی سفارشی‌سازی و گسترش داد. اقدامات متداول شامل سوار کردن دایرکتوری خانگی کاربر، تنظیم شبکه و پایگاه‌داده‌های سیستمی و حتی راه‌اندازی سرویس‌ها است. این موارد نیز کاملاً توسط مدیر سیستم قابل سفارشی‌سازی هستند. اسکریپت‌های راه‌اندازی برای تمام انواع chroot اجرا می‌شوند، به استثنای نوع \[oq]plain\[cq] که ساده‌ترین نوع chroot است و هیچ قابلیت راه‌اندازی خودکاری ارائه نمی‌دهد. پیکربندی schroot با جزئیات بیشتر در .BR schroot.conf (5) شرح داده شده است..SH "گزینه‌ها (OPTIONS)" \fBschroot\fP گزینه‌های زیر را می‌پذیرد: .SS عملیات‌ها .TP .BR \-h ", " \-\-help نمایش خلاصهٔ راهنما. .TP .BR \-V ", " \-\-version چاپ اطلاعات نسخه. .TP .BR \-l ", " \-\-list فهرست کردن تمام chrootهای موجود. .TP .BR \-i ", " \-\-info چاپ اطلاعات دقیق دربارهٔ chrootهای مشخص‌شده. .TP .BR \-\-config چاپ پیکربندی chrootهای مشخص‌شده. این گزینه برای بررسی یکسان بودن پیکربندی مورد استفاده با فایل پیکربندی کاربرد دارد. هرگونه یادداشت (کامنت) موجود در فایل اصلی نشان داده نخواهد شد. .TP .BR \-\-location چاپ مکان (مسیر) chrootهای مشخص‌شده. توجه داشته باشید نوع‌هایی از chroot که تنها درون یک نشست قابل استفاده هستند، تا زمانی که فعال نشوند مکانی نخواهند داشت. .SS گزینه‌های عمومی .TP .BR \-q ", " \-\-quiet تنها چاپ پیام‌های ضروری. .TP .BR \-v ", " \-\-verbose چاپ تمام پیام‌ها (پرگو). .SS انتخاب chroot .TP .BR \-c ", " \-\-chroot=\fIchroot\fP مشخص کردن یک chroot یا نشست فعال برای استفاده. این گزینه می‌تواند چندین بار برای تعیین بیش از یک chroot استفاده شود که در این حالت اثری مشابه \fI\-\-all\fP خواهد داشت. نام chroot می‌تواند پیشوندی از یک \fInamespace\fP داشته باشد؛ بخش \[lq]\fIChroot Namespaces\fP\[rq] را در ادامه ببینید. .TP .BR \-a ", " \-\-all انتخاب تمام chrootها، source chrootها و نشست‌های فعال. هنگامی که دستوری مشخص شده باشد، آن دستور در تمام chrootها، source chrootها و نشست‌های فعال اجرا خواهد شد. در صورت استفاده از \fI\-\-info\fP، اطلاعات تمام chrootها نمایش داده می‌شود. استفاده از این گزینه همراه با یک پوستهٔ ورود (login shell؛ زمانی که دستوری تعیین نشده باشد اجرا می‌شود) منطقی نیست. این گزینه معادل \[lq]\-\-all\-chroots \-\-all\-source\-chroots \-\-all\-sessions\[rq] است. .TP .BR \-\-all\-chroots انتخاب تمام chrootها. همسان با \fI\-\-all\fP، به جز این‌که source chrootها و نشست‌های فعال در نظر گرفته نمی‌شوند. .TP .BR \-\-all\-sessions انتخاب تمام نشست‌های فعال. همسان با \fI\-\-all\fP، به جز این‌که chrootها و source chrootها در نظر گرفته نمی‌شوند. .TP .BR \-\-all\-source\-chroots انتخاب تمام source chrootها. همسان با \fI\-\-all\fP، به جز این‌که chrootها و نشست‌ها در نظر گرفته نمی‌شوند. .TP .BR \-\-exclude\-aliases عدم انتخاب نام‌های مستعار (aliases) در کنار chrootها. این گزینه تضمین می‌کند که تنها chrootهای واقعی انتخاب شده و هر کدام فقط یک بار فهرست شوند. .SS محیط chroot .TP .BR \-d ", " \-\-directory=\fIdirectory\fP تغییر مسیر به \fIdirectory\fP درون chroot پیش از اجرای دستور یا پوستهٔ ورود. اگر \fIdirectory\fP در دسترس نباشد، schroot با وضعیت خطا خارج می‌شود. .IP رفتار پیش‌فرض بدین صورت است (تمام مسیرهای دایرکتوری درون chroot هستند): یک پوستهٔ ورود در دایرکتوری کاری فعلی اجرا می‌شود. اگر این دایرکتوری در دسترس نباشد، به‌ترتیب $HOME (هنگامی که از \fI\-\-preserve\-environment\fP استفاده شده باشد)، سپس دایرکتوری خانگی کاربر، و در نهایت \fI/\fP درون chroot امتحان خواهد شد. یک دستور همواره در دایرکتوری کاری فعلی درون chroot اجرا می‌شود. اگر هیچ‌یک از دایرکتوری‌ها در دسترس نباشند، schroot با وضعیت خطا خارج خواهد شد. .TP .BR \-u ", " \-\-user=\fIuser\fP اجرا به عنوان کاربری دیگر. حالت پیش‌فرض اجرا با کاربر فعلی است. در صورت نیاز، ممکن است لازم باشد کاربر هویت خود را با یک گذرواژه احراز کند. برای اطلاعات بیشتر، بخش \[lq]\fIAuthentication\fP\[rq] را در ادامه ببینید. .TP .BR \-p ", " \-\-preserve\-environment حفظ محیط کاربر درون محیط chroot. حالت پیش‌فرض استفاده از یک محیط تمیز است؛ این گزینه تمام متغیرهای محیطی کاربر را کپی کرده و آن را در نشست اعمال می‌کند. متغیرهای محیطی مجاز تابع محدودیت‌های خاصی هستند؛ بخش \[lq]\fIEnvironment\fP\[rq] را در ادامه ببینید. .TP .BR \-s ", " \-\-shell=\fIshell\fP استفاده از \fIshell\fP به عنوان پوستهٔ ورود. هنگام اجرای یک پوستهٔ ورود، چند پوستهٔ بالقوه به‌ترتیب اولویت بررسی خواهند شد: دستور موجود در متغیر محیطی SHELL (در صورتی که از \fI\-\-preserve\-environment\fP استفاده شده یا \f[CI]preserve\-environment\fP فعال باشد)، پوستهٔ کاربر در پایگاه‌دادهٔ \[oq]passwd\[cq]، سپس \fI/bin/bash\fP و در نهایت \fI/bin/sh\fP. این گزینه بر این فهرست اولویت داشته و از پوستهٔ تعیین‌شده استفاده خواهد کرد. همچنین در صورت تنظیم بودن کلید پیکربندی \f[CI]shell\fP، این گزینه آن را لغو و بازنویسی می‌کند. .TP .BR \-o ", " \-\-option=\fIkey=value\fP تنظیم یک گزینه. مقدار کلیدهای پیکربندی انتخاب‌شده در \fIschroot.conf\fP را می‌توان با استفاده از این گزینه تغییر داد. این کلید باید در کلید پیکربندی \f[CI]user\-modifiable\-keys\fP در \fIschroot.conf\fP تعریف شده باشد، یا علاوه بر آن، در صورت اجرا به عنوان (یا جابه‌جایی به) کاربر root در کلید \f[CI]user\-modifiable\-keys\fP موجود باشد. کلید و مقدار تعیین‌شده در اینجا، در محیط اسکریپت‌های راه‌اندازی (setup scripts) تنظیم می‌شود و در نتیجه می‌توان از آن برای سفارشی‌سازی chroot برای هر نشست استفاده کرد. .SS عملیات‌های نشست .TP .BR \-\-automatic\-session آغاز، اجرا و پایان خودکار یک نشست. این عمل، رفتار پیش‌فرض است، بنابراین در استفاده‌های عادی نیازی به تعیین آن نیست. .TP .BR \-b ", " \-\-begin\-session آغاز یک نشست. یک شناسهٔ یکتای نشست (session ID) در خروجی استاندارد بازگردانده می‌شود. شناسهٔ نشست برای استفاده از سایر گزینه‌های مربوط به نشست مورد نیاز است. توجه داشته باشید که شناسهٔ نشست را می‌توان با استفاده از گزینهٔ \fI\-\-session\-name\fP نیز مشخص کرد. .TP .BR \-\-recover\-session بازیابی یک نشست موجود. اگر یک نشست موجود از دسترس خارج شده باشد، برای نمونه به دلیل راه‌اندازی مجدد سیستم unmount شده باشد، این گزینه نشست را مجدداً برای استفاده در دسترس قرار می‌دهد (مثلاً از طریق mount کردن دوبارهٔ آن). شناسهٔ نشست از طریق گزینهٔ \fI\-\-chroot\fP مشخص می‌شود. .TP .BR \-r ", " \-\-run\-session اجرای یک نشست موجود. شناسهٔ نشست با گزینهٔ \fI\-\-chroot\fP مشخص می‌شود. .TP .BR \-e ", " \-\-end\-session پایان دادن به یک نشست موجود. شناسهٔ نشست با گزینهٔ \fI\-\-chroot\fP مشخص می‌شود..SS "گزینه‌های نشست (Session options)" .TP .BR \-n ", " \-\-session\-name=\fIsession-name\fP نام‌گذاری یک نشست. \fIsession-name\fP مشخص‌شده جایگزین نام پیش‌فرض نشست می‌شود که حاوی یک شناسهٔ نشست (session ID) به‌طور خودکار تولیدشده است. نام نشست نباید شامل مشخص‌کنندهٔ فضای نام باشد، زیرا نشست‌ها همواره درون فضای نام \[oq]session:\[cq] ایجاد می‌شوند. نام نشست همچنین تابع محدودیت‌های نام‌گذاری chroot است که در .BR schroot.conf (5) مستند شده است. .TP .BR \-f ", " \-\-force اجبار در انجام عملیات نشست، حتی اگر در غیر این صورت با شکست مواجه شود. این گزینه ممکن است برای پایان دادن اجباری به یک نشست، حتی در صورت وجود کاربران فعال، به کار رود. این کار تضمین نمی‌کند که نشست به شکلی پاک خاتمه یابد؛ برای نمونه، ممکن است سیستم‌های فایل unmount نشوند. .SS "جداکننده (Separator)" .TP .BR \-\- پایان گزینه‌ها. برای مشخص کردن پایان گزینه‌های schroot به کار می‌رود؛ هر گزینه‌ای پس از این به دستوری که در حال اجراست منتقل خواهد شد، نه به schroot. .SH "احراز هویت (AUTHENTICATION)" اگر کاربر، یک کاربر مجاز یا عضوی از گروه‌های مجاز (یا در صورت تغییر به root، از کاربران مجاز root یا گروه‌های مجاز root) برای chroot(های) مشخص‌شده نباشد، مجوز فوراً رد خواهد شد. در صورت تغییر کاربر، چنانچه کاربر اجراکنندهٔ دستور دسترسی داشته باشد، کاربر ملزم خواهد بود تا با استفاده از اطلاعات هویتی کاربری که به آن تغییر می‌یابد، احراز هویت کند. .PP روی سیستم‌هایی که از ماژول‌های احراز هویت قابل اتصال (PAM) پشتیبانی می‌کنند، schroot از PAM برای احراز هویت و اعطای مجوز به کاربران استفاده خواهد کرد. در صورت نیاز، schroot برای دریافت گذرواژه درخواست خواهد داد. اگر PAM در دسترس نباشد، تمام فرآیندهای احراز هویت به‌طور خودکار با شکست مواجه خواهند شد (تغییر کاربر بدون PAM پشتیبانی \fIنمی‌شود\fP). .PP توجه داشته باشید که هنگام استفاده از PAM، کاربر root به‌طور پیش‌فرض هیچ امتیاز ویژه‌ای در برنامه ندارد. با این حال، پیکربندی پیش‌فرض PAM به root اجازه می‌دهد بدون گذرواژه وارد شود (\fIpam_rootok.so\fP)، اما می‌توان این مورد را غیرفعال کرد تا از دسترسی root به هرگونه chroot جلوگیری شود مگر آنکه صراحتاً مجاز شده باشد. در چنین شرایطی، root نیز همانند هر کاربر یا گروه دیگری باید به کاربران یا گروه‌های مجاز افزوده شود. اگر PAM در دسترس نباشد، کاربر root مجاز خواهد بود به تمام chrootها دسترسی داشته باشد، حتی زمانی که صراحتاً این دسترسی اعطا نشده باشد. .SH "فضاهای نام CHROOT (CHROOT NAMESPACES)" .SS "مبانی فضای نام (Namespace basics)" سه نوع مختلف chroot وجود دارد: chrootهای عادی، chrootهای منبع و chrootهای نشست. این انواع مختلف chroot در \fIفضاهای نام\fP متفاوتی از یکدیگر تفکیک شده‌اند. یک فضای نام، پیشوندی برای نام chroot است. در حال حاضر سه فضای نام وجود دارد: \[oq]chroot:\[cq]، \[oq]source:\[cq] و \[oq]session:\[cq]. از \fI\-\-list \-\-all\fP برای فهرست کردن تمامی chrootهای موجود در تمامی فضاهای نام استفاده کنید. از آنجا که \[oq]:\[cq] به عنوان جداکننده میان فضای نام و نام‌های chroot به کار می‌رود، استفاده از این نویسه در نام‌های chroot مجاز نیست. .PP بسته به کنشی که از schroot درخواست می‌کنید، ممکن است به دنبال chroot در یکی از این سه فضای نام بگردد، یا اینکه یک فضای نام مشخص تعیین شده باشد. برای نمونه، یک chroot با نام \[lq]sid\[rq]، در صورت گنجاندن فضای نام، در واقع نامش \[lq]chroot:sid\[rq] است، اما می‌توان فضای نام را برای اکثر کنش‌ها نادیده گرفت. .SS "chrootهای منبع (Source chroots)" برخی از انواع chroot، برای نمونه اسنپ‌شات‌های LVM و اسنپ‌شات‌های Btrfs، اسنپ‌شات‌های رونوشت هنگام نوشتن (copy-on-write) با مدیریت نشست را از chroot فراهم می‌کنند. این‌ها همچنین یک \fIsource chroot\fP برای دسترسی آسان به سیستم فایلی که به عنوان منبع اسنپ‌شات‌گیری استفاده می‌شود ارائه می‌دهند. این‌ها نیز chrootهای معمولی هستند که تنها اسنپ‌شات‌گیری در آن‌ها غیرفعال شده است. برای یک chroot با نام \[lq]sid\-snapshot\[rq] (یعنی با یک نام کاملاً واجد شرایط به صورت \[lq]chroot:sid\-snapshot\[rq])، یک chroot منبع متناظر به نام \[lq]source:sid\-snapshot\[rq] نیز وجود خواهد داشت. نسخه‌های پیشین schroot، چروت‌های منبع را با پسوند \[oq]\-source\[cq] ارائه می‌دادند. این‌ها نیز جهت سازگاری فراهم شده‌اند. در این مثال، این chroot با عنوان \[lq]chroot:sid\-snapshot\-source\[rq] نامیده خواهد شد. این نام‌های سازگاری در نسخه‌های آینده حذف خواهند شد، بنابراین برنامه‌ها و اسکریپت‌ها باید به جای پسوند قدیمی، به استفاده از نام‌های واجد شرایط با فضای نام روی آورند. .SS "chrootهای نشست (Session chroots)" تمام نشست‌های ایجادشده با \fI\-\-begin\-session\fP درون فضای نام \[oq]session:\[cq] قرار می‌گیرند. نشستی که با \fI\-\-session\-name\fP نام‌گذاری شده است می‌تواند هر نامی داشته باشد، حتی همان نام chrootای که از آن ایجاد شده است، به شرط آنکه درون این فضای نام یکتا باشد. این مورد در نسخه‌های پیشین schroot که فاقد فضاهای نام بودند مجاز نبود. .SS "کنش‌ها و فضاهای نام پیش‌فرض (Actions and default namespaces)" تمام کنش‌ها از \[oq]chroot:\[cq] به عنوان فضای نام پیش‌فرض استفاده می‌کنند، به استثنای برخی کنش‌های مربوط به نشست. گزینه‌های \fI\-\-run\-session\fP، \fI\-\-recover\-session\fP و \fI\-\-end\-session\fP در عوض از \[oq]session:\[cq] به عنوان فضای نام پیش‌فرض استفاده می‌کنند، چرا که این کنش‌ها روی chrootهای نشست عمل می‌کنند. نتیجه اینکه معمولاً هرگز به فضای نام نیازی نیست مگر زمانی که بخواهید با یک chroot در فضای نامی غیر از پیش‌فرض کار کنید، مانند زمان استفاده از یک chroot منبع. برای برطرف کردن هرگونه ابهام در انتخاب chroot، همواره ممکن است از نام کامل شامل فضای نام استفاده شود، حتی زمانی که لزوماً مورد نیاز نباشد. .SH "کارایی (PERFORMANCE)" .PP کارایی در برخی سیستم‌های فایل، برای نمونه Btrfs، هنگام اجرای dpkg به دلیل تعداد بالای عملیات‌های fsync انجام‌شده نامناسب است. این مشکل می‌تواند با نصب بستهٔ eatmydata و سپس افزودن eatmydata به کلید پیکربندی \f[CI]command\-prefix\fP که تمام عملیات‌های fsync را غیرفعال می‌کند، کاهش یابد. توجه داشته باشید که این کار تنها باید در chrootهای اسنپ‌شات انجام شود که در آن‌ها از دست رفتن داده‌ها اهمیتی ندارد. این قابلیت به عنوان مثال هنگام استفاده از یک chroot برای ساخت بسته‌ها مفید است. .SH "مسیرهای جایگزین دایرکتوری (DIRECTORY FALLBACKS)" .PP ابزار schroot دایرکتوری مناسبی را برای استفاده درون chroot بر اساس اینکه آیا یک شل لاگین تعاملی به کار خواهد رفت یا دستوری فراخوانی می‌شود، و علاوه بر آن در صورت استفاده از گزینهٔ \fI\-\-directory\fP، انتخاب خواهد کرد. در صورت اجرای مستقیم دستورها یا تعیین صریح یک دایرکتوری، برای حفظ ایمنی و یکپارچگی تنها از یک دایرکتوری استفاده خواهد شد، در حالی که برای یک شل لاگین ممکن است احتمالات متعددی آزموده شود. زیربخش‌های زیر توالی جایگزینی را برای هر حالت فهرست می‌کنند. CWD دایرکتوری کاری جاری است و DIR دایرکتوری مشخص‌شده با \fI\-\-directory\fP است. .SS "شل لاگین (Login shell)" .TS box; l|lw(4i). انتقال (میزبان \[->] Chroot) توضیح _ CWD \[->] CWD T{ رفتار عادی (اگر \fI\-\-directory\fP استفاده نشود) T} CWD \[->] $HOME T{ اگر CWD وجود نداشته باشد و \-\-preserve\-environment استفاده شود T} CWD \[->] passwd pw_dir T{ اگر CWD وجود نداشته باشد (یا \-\-preserve\-environment استفاده شود و هیچ $HOMEای وجود نداشته باشد) T} CWD \[->] / T{ هیچ‌یک از موارد بالا وجود نداشته باشند T} \fBFAIL\fP T{ اگر / وجود نداشته باشد T} .TE.SS دستور (Command) .TS box; l|lw(4i). انتقال (میزبان \[->] Chroot) توضیح _ CWD \[->] CWD T{ رفتار عادی (اگر \fI\-\-directory\fP استفاده نشود) T} \fBFAIL\fP T{ اگر CWD وجود نداشته باشد T} .TE .PP تحت هیچ شرایطی نباید هیچ سازوکار جایگزینی وجود داشته باشد. .SS استفاده از \-\-directory .TS box; l|lw(4i). انتقال (میزبان \[->] Chroot) توضیح _ CWD \[->] DIR رفتار عادی \fBFAIL\fP اگر DIR وجود نداشته باشد .TE .PP تحت هیچ شرایطی نباید هیچ سازوکار جایگزینی وجود داشته باشد. .SS اشکال‌زدایی (Debugging) .PP توجه داشته باشید که \fI\-\-debug=notice\fP فهرست جایگزین‌های داخلی محاسبه‌شده برای نشست را نشان خواهد داد. .SH "مثال‌ها (EXAMPLES)" .SS فهرست کردن chrootهای موجود .EX % \f[CB]schroot \-l\fP\[CR] chroot:default chroot:etch chroot:sid chroot:testing chroot:unstable .EE .SS دریافت اطلاعات درباره یک chroot .EX % \f[CB]schroot \-i \-c sid\fP\[CR] \[em]\[em]\[em] Chroot \[em]\[em]\[em] Name sid Description Debian sid (unstable) Type plain Priority 3 Users rleigh Groups sbuild Root Users Root Groups sbuild Aliases unstable unstable\-sbuild unstable\-p owerpc\-sbuild Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|I\\ FS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMA\\ IN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TE\\ RMPATH)$ Run Setup Scripts true Script Configuration script\-defaults Session Managed true Personality linux32 Location /srv/chroot/sid .EE .LP به ترتیب از \fI\-\-all\fP یا چندین بار از \fI\-c\fP برای استفاده از همه chrootها یا چندتایی از آن‌ها استفاده کنید. .SS اجرای دستورها در یک chroot .EX % \f[CB]schroot \-c sid /bin/ls\fP\[CR] [sid chroot] Running command: \[lq]/bin/ls\[rq] CVS sbuild\-chroot.c sbuild\-session.h schroot.conf.5 Makefile sbuild\-chroot.h schroot.1 schroot.conf.5.in Makefile.am sbuild\-config.c schroot.1.in Makefile.in sbuild\-config.h schroot.c pam sbuild\-session.c schroot.conf % \f[CB]schroot \-c sid \-\- ls \-1 | head \-n 5\fP\[CR] [sid chroot] Running command: \[lq]ls \-1\[rq] ABOUT\-NLS AUTHORS COPYING ChangeLog INSTALL .EE .LP از \fI\-\-\fP برای مجاز کردن گزینه‌هایی که با \[oq]\-\[cq] یا \[oq]\-\-\[cq] در دستور اجرایی درون chroot آغاز می‌شوند، استفاده کنید. این کار مانع از تفسیر شدن آن‌ها به عنوان گزینه‌های خود schroot می‌شود. توجه داشته باشید که خط اول به خطای استاندارد و خطوط باقی‌مانده به خروجی استاندارد ارسال شده‌اند. این رفتار عمدی است، تا خروجی برنامه از دستورهای اجرا شده در chroot بتواند در صورت نیاز پایپ و هدایت شود؛ داده‌ها به همان صورتی خواهند بود که گویی دستور مستقیماً روی سیستم میزبان اجرا شده است. .SS تعویض کاربر .EX % \f[CB]schroot \-c sid \-u root\fP\[CR] Password: [sid chroot] (rleigh\[->]root) Running login shell: \[lq]/bin/bash\[rq] # .EE .LP اگر کاربر \[oq]rleigh\[cq] در \f[CI]root\-users\fP در \fI\*[SCHROOT_CONF]\fP بود، یا یکی از گروه‌هایی که به آن تعلق داشت در \f[CI]root\-groups\fP قرار داشت، دسترسی ریشه بدون احراز هویت به آن‌ها اعطا می‌شد، اما مرحله مجوزدهی PAM همچنان اعمال می‌شود. .SS نشست‌ها (Sessions) ممکن است یک chroot برای اجرای بیش از یک دستور مورد نیاز باشد. به‌ویژه، هنگامی که chroot به‌صورت لحظه‌ای از یک LV در LVM یا یک فایل روی دیسک ایجاد می‌شود، نیاز است که chroot تا زمان انجام یک کار معین (یا مجموعه‌ای از کارها) پابرجا بماند. نشست‌ها به همین منظور وجود دارند. برای انواع ساده chroot مانند \[oq]plain\[cq] و \[oq]directory\[cq]، ممکن است نشست‌ها ایجاد شوند اما اکیداً ضروری نیستند. .PP بیایید با نگاهی به یک chroot با قابلیت پشتیبانی از نشست شروع کنیم: .PP .EX % \f[CB]schroot \-i \-c sid\-snap\fP\[CR] \[em]\[em]\[em] Chroot \[em]\[em]\[em] Name sid\-snap Description Debian sid snapshot Type lvm\-snapshot Priority 3 Users maks rleigh Groups sbuild Root Users Root Groups root sbuild Aliases Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|I\\ FS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMA\\ IN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TE\\ RMPATH)$ Run Setup Scripts true Script Configuration script\-defaults Session Managed true Personality linux Device /dev/hda_vg/sid_chroot Mount Options \-o atime,async,user_xattr Source Users Source Groups root rleigh Source Root Users Source Root Groups root rleigh LVM Snapshot Options \-\-size 2G \-c 128 .EE .PP توجه داشته باشید که گزینه \fISession Managed\fP روی \[oq]true\[cq] تنظیم شده است. این یک پیش‌نیاز برای استفاده از مدیریت نشست است و توسط اکثر انواع chroot پشتیبانی می‌شود. در ادامه، یک نشست جدید ایجاد خواهیم کرد: .PP .EX % \f[CB]schroot \-b \-c sid\-snap\fP\[CR] sid\-snap\-46195b04\-0893\-49bf\-beb8\-0d4ccc899f0f .EE .PP شناسه نشست (session ID) مربوط به نشست تازه‌ایجادشده در خروجی استاندارد بازگردانده می‌شود. ذخیره کردن آن بدین صورت رایج است: .PP .EX % \f[CB]SESSION=$(schroot \-b \-c sid\-snap)\fP\[CR] % \f[CB]echo $SESSION\fP\[CR] sid\-snap\-46195b04\-0893\-49bf\-beb8\-0d4ccc899f0f .EE .PP این نشست می‌تواند درست مانند هر chroot عادی دیگری استفاده شود. نشست بدین شکل خواهد بود: .PP .EX % \f[CB]schroot \-i \-c sid\-snap\-46195b04\-0893\-49bf\-beb8\-0d4ccc899f0f\fP\[CR] \[em]\[em]\[em] Session \[em]\[em]\[em] Name sid\-snap\-46195b04\-0893\-49bf\-beb8\-0d\\ 4ccc899f0f Description Debian sid snapshot Type lvm\-snapshot Priority 3 Users maks rleigh Groups sbuild Root Users Root Groups root sbuild Aliases Environment Filter ^(BASH_ENV|CDPATH|ENV|HOSTALIASES|I\\ FS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMA\\ IN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TE\\ RMPATH)$ Run Setup Scripts true Script Configuration script\-defaults Session Managed true Personality linux Mount Location /var/lib/schroot/mount/sid\-snap\-461\\ 95b04\-0893\-49bf\-beb8\-0d4ccc899f0f Path /var/lib/schroot/mount/sid\-snap\-461\\ 95b04\-0893\-49bf\-beb8\-0d4ccc899f0f Mount Device /dev/hda_vg/sid\-snap\-46195b04\-0893\-\\ 49bf\-beb8\-0d4ccc899f0f Device /dev/hda_vg/sid_chroot Mount Options \-o atime,async,user_xattr Source Users Source Groups root rleigh Source Root Users Source Root Groups root rleigh LVM Snapshot Device /dev/hda_vg/sid\-snap\-46195b04\-0893\-\\ 49bf\-beb8\-0d4ccc899f0f LVM Snapshot Options \-\-size 2G \-c 128 .EE.PP اکنون که نشست ایجاد شد، می‌توان دستورها را درون آن اجرا کرد: .PP .EX % \f[CB]schroot \-r \-c sid\-snap\-46195b04\-0893\-49bf\-beb8\-0d4ccc899f0f \-\- \\ uname \-sr\fP\[CR] I: [sid\-snap\-46195b04\-0893\-49bf\-beb8\-0d4ccc899f0f chroot] Running \\ command: \[lq]uname \-sr\[rq] Linux 2.6.18\-3\-powerpc % \f[CB]schroot \-r \-c $SESSION \-\- uname \-sr\fP\[CR] I: [sid\-snap\-fe170af9\-d9be\-4800\-b1bd\-de275858b938 chroot] Running \\ command: \[lq]uname \-sr\[rq] Linux 2.6.18\-3\-powerpc .EE .PP هنگامی که تمام دستورهای مورد نظر در نشست اجرا شدند، می‌توان به نشست پایان داد: .PP .EX \f[CR]% \f[CB]schroot \-e \-c sid\-snap\-46195b04\-0893\-49bf\-beb8\-0d4ccc899f0f\fP\fP\[CR] \f[CR]% \f[CB]schroot \-e \-c $SESSION\fP\fP\[CR] .EE .PP در نهایت، نام نشست‌ها ممکن است طولانی و نامناسب باشد. می‌توان به‌جای استفاده از شناسه نشست که به‌طور خودکار ایجاد می‌شود، یک نام مشخص کرد: .PP .EX \f[CR]% \f[CB]schroot \-b \-c sid\-snap \-n my\-session\-name\fP\fP\[CR] \f[CR]my\-session\-name\fP .EE .SH "عیب‌یابی (TROUBLESHOOTING)" اگر چیزی به‌درستی کار نمی‌کند و از روی پیام‌های خطا مشخص نیست که مشکل از کجاست، گزینه \fB\-\-debug=\fP\fIlevel\fP را برای فعال کردن پیام‌های اشکال‌زدایی به کار ببرید. این کار اطلاعات بسیار بیشتری فراهم می‌کند. سطوح معتبر اشکال‌زدایی به ترتیب افزایش حساسیت عبارتند از: \[oq]none\[cq]، و \[oq]notice\[cq]، \[oq]info\[cq]، \[oq]warning\[cq] و \[oq]critical\[cq]. هرچه سطح حساسیت پایین‌تر باشد، خروجی بیشتری تولید خواهد شد. .PP اگر همچنان با مشکل مواجه هستید، می‌توانید با توسعه‌دهندگان از طریق فهرست ایمیل تماس بگیرید: .br \f[CR]Debian\ buildd-tools\ Developers .br \fP .SH "گزارش باگ‌ها (BUGS)" در معماری‌های \fBmips\fP و \fBmipsel\fP، هسته‌های لینوکس تا نسخه ۲.۶.۱۷ و خود آن، پشتیبانی ناقصی از .BR personality (2) دارند که منجر به شکست در تعیین personality می‌شود. این مسئله به‌صورت خطای \[lq]Operation not permitted\[rq] (EPERM) مشاهده خواهد شد. برای دور زدن این مشکل، \f[CI]personality\fP را روی \[oq]undefined\[cq] تنظیم کنید، یا هسته را به نسخه‌ای جدیدتر ارتقا دهید. .SH "محیط (ENVIRONMENT)" به‌طور پیش‌فرض، متغیرهای محیطی حفظ نمی‌شوند و متغیرهای محیطی زیر تعریف می‌شوند: HOME، LOGNAME، PATH، SHELL، TERM (در صورت تعریف بودن از قبل، حفظ می‌شود) و USER. متغیرهای محیطی SCHROOT_COMMAND، SCHROOT_USER، SCHROOT_GROUP، SCHROOT_UID و SCHROOT_GID در داخل chroot تنظیم می‌شوند و به ترتیب دستور در حال اجرا، نام کاربر، نام گروه، شناسه کاربر و شناسه گروه را مشخص می‌کنند. علاوه بر این، متغیرهای محیطی SCHROOT_SESSION_ID، SCHROOT_CHROOT_NAME و SCHROOT_ALIAS_NAME به ترتیب شناسه نشست، نام اولیه chroot پیش از ایجاد نشست و نام مستعار مورد استفاده برای شناسایی اولیه chroot انتخاب‌شده را مشخص می‌کنند. .PP متغیرهای محیطی زیر که بالقوه خطرناک هستند، به‌طور پیش‌فرض برای امنیت حذف می‌شوند: BASH_ENV، CDPATH، ENV، HOSTALIASES، IFS، KRB5_CONFIG، KRBCONFDIR، KRBTKFILE، KRB_CONF، LD_.*، LOCALDOMAIN، NLSPATH، PATH_LOCALE، RES_OPTIONS، TERMINFO، TERMINFO_DIRS و TERMPATH. در صورت تمایل، کلید پیکربندی \f[CI]environment\-filter\fP امکان ویرایش فهرست استثناها را فراهم می‌کند؛ برای جزئیات بیشتر به .BR schroot.conf (5) مراجعه کنید. .SH "فایل‌ها (FILES)" .SS "فایل‌های پیکربندی" .TP \f[BI]\*[SCHROOT_CONF]\fP فایل سراسری تعریف‌های chroot در سیستم. مالک این فایل باید کاربر ریشه (root) باشد و نباید توسط دیگران قابل نوشتن باشد. .TP \f[BI]\*[SCHROOT_CONF_CHROOT_D]\fP تعریف‌های تکمیلی chroot می‌توانند درون فایل‌هایی در این دایرکتوری قرار گیرند. با آن‌ها دقیقاً مانند \fI\*[SCHROOT_CONF]\fP رفتار می‌شود. هر فایل می‌تواند شامل یک یا چند تعریف chroot باشد. توجه داشته باشید که نام فایل‌ها در این دایرکتوری، از همان قوانین نام‌گذاری .BR run\-parts (8) هنگام اجرا با گزینه \fI\-\-lsbsysinit\fP پیروی می‌کنند. .TP \f[BI]\*[SCHROOT_CONF_SETUP_D]\fP دایرکتوری‌های سراسری اسکریپت‌های راه‌اندازی chroot در سیستم. ببینید: .BR schroot-setup (5). .TP \f[BI]/etc/pam.d/schroot\fP پیکربندی PAM. .SS "دایرکتوری‌های سیستم" .TP \f[BI]\*[SCHROOT_LIBEXEC_DIR]\fP دایرکتوری حاوی برنامه‌های کمکی مورد استفاده توسط اسکریپت‌های راه‌اندازی. .SS "دایرکتوری‌های نشست" هر دایرکتوری شامل یک دایرکتوری یا فایل با نام هر نشست است. همه انواع chroot از تمام دایرکتوری‌های زیر استفاده نمی‌کنند. .TP \f[BI]\*[SCHROOT_SESSION_DIR]\fP دایرکتوری حاوی پیکربندی نشست برای هر نشست فعال. .TP \f[BI]\*[SCHROOT_MOUNT_DIR]\fP دایرکتوری مورد استفاده برای سوار کردن (mount) سیستم‌های فایلی که توسط هر نشست فعال استفاده می‌شوند. .TP \f[BI]\*[SCHROOT_UNDERLAY_DIR]\fP دایرکتوری مورد استفاده برای منبع پیوند سیستم فایل (underlay). .TP \f[BI]\*[SCHROOT_OVERLAY_DIR]\fP دایرکتوری مورد استفاده برای لایه روکش قابل نوشتن پیوند سیستم فایل (overlay). .TP \f[BI]\*[SCHROOT_FILE_UNPACK_DIR]\fP دایرکتوری مورد استفاده برای استخراج chrootهای فایلی. .SH "نویسندگان (AUTHORS)" Roger Leigh. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" Copyright \(co 2005\-2012 Roger Leigh \f[CR]\fP .PP \fB\*[PROGRAM]\fP یک نرم‌افزار آزاد است: شما می‌توانید تحت شرایط «اجازه‌نامه عمومی همگانی گنو» (GNU General Public License) که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است؛ چه نسخه ۳ اجازه‌نامه و چه (به انتخاب خودتان) هر نسخه بعدی آن، به بازتوزیع یا تغییر آن بپردازید..SH "همچنین ببینید (SEE ALSO)" .BR dchroot (1), .BR sbuild (1), .BR chroot (2), .BR schroot.conf (5). .BR schroot\-setup (5), .BR schroot\-faq (7), .BR run\-parts (8), .\"# .\"# The following sets edit modes for GNU EMACS .\"# Local Variables: .\"# mode:nroff .\"# fill-column:79 .\"# End: