'\" t .\" Title: unshare .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-06-16 .\" Manual: User Commands .\" Source: util-linux 2.41.5 .\" Language: Persian .\" .TH "UNSHARE" "1" "2026-06-16" "util\-linux 2.41.5" "دستورات کاربر" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "نام (NAME)" unshare \- اجرای برنامه با فضاهای نام جداشده از والد .SH "خلاصه دستور (SYNOPSIS)" .sp \fBunshare\fP [options] [\fIprogram\fP [\fIarguments\fP]] .SH "توضیحات (DESCRIPTION)" .sp دستور \fBunshare\fP فضاهای نام جدیدی (بر اساس گزینه‌های خط فرمان توصیف‌شده در ادامه) ایجاد کرده و سپس \fIprogram\fP مشخص‌شده را اجرا می‌کند. اگر \fIprogram\fP داده نشده باشد، "${SHELL}" اجرا می‌شود (پیش‌فرض: \fI/bin/sh\fP). .sp به طور پیش‌فرض، یک فضای نام جدید تنها تا زمانی که فرآیندهای عضو داشته باشد باقی می‌ماند. می‌توان یک فضای نام جدید را حتی در زمانی که هیچ فرآیند عضوی ندارد، با اتصال سوارکردن (bind mount) فایل‌های /proc/\fIpid\fP/ns/\fItype\fP به یک مسیر در سیستم‌فایل ماندگار کرد. فضای نامی که به این شیوه ماندگار شده است می‌تواند متعاقباً با \fBnsenter\fP(1) حتی پس از پایان یافتن \fIprogram\fP وارد شود (به جز فضاهای نام PID که در آن‌ها به یک فرآیند init همواره در حال اجرا نیاز است). زمانی که یک فضای نام ماندگار دیگر مورد نیاز نباشد، می‌توان با استفاده از \fBumount\fP(8) برای حذف اتصال سوارکردن آن را از حالت ماندگار خارج کرد. برای جزئیات بیشتر به بخش \fBمثال‌ها (EXAMPLES)\fP مراجعه کنید. .sp ابزار \fBunshare\fP از نسخه ۲.۳۶ util\-linux از فایل‌های \fI/proc/[pid]/ns/pid_for_children\fP و \fI/proc/[pid]/ns/time_for_children\fP برای فضاهای نام ماندگار PID و TIME استفاده می‌کند. این تغییر نیازمند هسته لینوکس ۴.۱۷ یا جدیدتر است. .sp انواع زیر از فضاهای نام را می‌توان با \fBunshare\fP ایجاد کرد: .sp \fBفضای نام سوارکردن (mount namespace)\fP .RS 4 سوار کردن و پیاده کردن سیستم‌های فایل روی سایر بخش‌های سیستم تأثیری نخواهد گذاشت، به جز سیستم‌های فایلی که صراحتاً به عنوان اشتراکی علامت‌گذاری شده‌اند (با \fBmount \-\-make\-shared\fP؛ پرچم‌های \fBshared\fP را در \fI/proc/self/mountinfo\fP یا \fBfindmnt \-o+PROPAGATION\fP ببینید). برای جزئیات بیشتر، \fBmount_namespaces\fP(7) را ببینید. .sp ابزار \fBunshare\fP از نسخه ۲.۲۷ util\-linux انتشار (propagation) را به طور خودکار در فضای نام سوارکردن جدید روی \fBprivate\fP تنظیم می‌کند تا اطمینان حاصل شود که فضای نام جدید واقعاً جدا شده است. غیرفعال کردن این ویژگی با گزینه \fB\-\-propagation unchanged\fP امکان‌پذیر است. توجه داشته باشید که \fBprivate\fP پیش‌فرض هسته است. .RE .sp \fBفضای نام UTS (UTS namespace)\fP .RS 4 تنظیم نام میزبان (hostname) یا نام دامنه (domainname) روی سایر بخش‌های سیستم تأثیری نخواهد گذاشت. برای جزئیات بیشتر، \fButs_namespaces\fP(7) را ببینید. .RE .sp \fBفضای نام IPC (IPC namespace)\fP .RS 4 فرآیند دارای فضای نام مستقلی برای صف‌های پیام POSIX و همچنین صف‌های پیام System V، مجموعه‌های سمافور و بخش‌های حافظه اشتراکی خواهد بود. برای جزئیات بیشتر، \fBipc_namespaces\fP(7) را ببینید. .RE .sp \fBفضای نام شبکه (network namespace)\fP .RS 4 فرآیند دارای پشته‌های مستقل IPv4 و IPv6، جدول‌های مسیریابی IP، قوانین فایروال، درخت‌های دایرکتوری \fI/proc/net\fP و \fI/sys/class/net\fP، سوکت‌ها و غیره خواهد بود. برای جزئیات بیشتر، \fBnetwork_namespaces\fP(7) را ببینید. .RE .sp \fBفضای نام PID (PID namespace)\fP .RS 4 فرآیندهای فرزند مجموعه‌ای مجزا از نگاشت‌های شناسه فرآیند به فرآیند (PID-to-process) نسبت به والد خود خواهند داشت. برای جزئیات بیشتر، \fBpid_namespaces\fP(7) را ببینید. .RE .sp \fBفضای نام cgroup (cgroup namespace)\fP .RS 4 فرآیند نمایی مجازی‌سازی‌شده از \fI/proc/self/cgroup\fP خواهد داشت و سوارکردن‌های cgroup جدید از ریشه cgroup فضای نام سرچشمه خواهند گرفت. برای جزئیات بیشتر، \fBcgroup_namespaces\fP(7) را ببینید. .RE .sp \fBفضای نام کاربر (user namespace)\fP .RS 4 فرآیند مجموعه‌ای متمایز از UIDها، GIDها و قابلیت‌ها (capabilities) خواهد داشت. برای جزئیات بیشتر، \fBuser_namespaces\fP(7) را ببینید. .RE .sp \fBفضای نام زمان (time namespace)\fP .RS 4 فرآیند می‌تواند نمایی متمایز از \fBCLOCK_MONOTONIC\fP و/یا \fBCLOCK_BOOTTIME\fP داشته باشد که با استفاده از \fI/proc/self/timens_offsets\fP قابل تغییر است. برای جزئیات بیشتر، \fBtime_namespaces\fP(7) را ببینید. .RE .SH "گزینه‌ها (OPTIONS)" .sp \fB\-i\fP, \fB\-\-ipc\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام IPC جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن (bind mount) در \fIfile\fP ماندگار می‌شود. .RE .sp \fB\-m\fP, \fB\-\-mount\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام سوارکردن جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن در \fIfile\fP ماندگار می‌شود. توجه داشته باشید که \fIfile\fP باید روی نقطه‌ای سوار شده باشد که نوع انتشار آن \fBshared\fP نباشد (در غیر این صورت خطا رخ می‌دهد). در صورت عدم اطمینان از تنظیمات فعلی از دستور \fBfindmnt \-o+PROPAGATION\fP استفاده کنید. همچنین مثال‌های زیر را ببینید. .RE .sp \fB\-n\fP, \fB\-\-net\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام شبکه جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن در \fIfile\fP ماندگار می‌شود. .RE .sp \fB\-p\fP, \fB\-\-pid\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام PID جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن در \fIfile\fP ماندگار می‌شود. (ایجاد یک فضای نام PID ماندگار در صورتی که گزینه \fB\-\-fork\fP نیز مشخص نشده باشد با شکست مواجه خواهد شد.) .sp همچنین گزینه‌های \fB\-\-fork\fP و \fB\-\-mount\-proc\fP را ببینید. .RE .sp \fB\-u\fP, \fB\-\-uts\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام UTS جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن در \fIfile\fP ماندگار می‌شود. .RE .sp \fB\-U\fP, \fB\-\-user\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام کاربر جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن در \fIfile\fP ماندگار می‌شود. .RE .sp \fB\-C\fP, \fB\-\-cgroup\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام cgroup جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن در \fIfile\fP ماندگار می‌شود. .RE .sp \fB\-T\fP, \fB\-\-time\fP[\fB=\fP\fIfile\fP] .RS 4 ایجاد یک فضای نام زمان جدید. اگر \fIfile\fP مشخص شده باشد، فضای نام با ایجاد یک اتصال سوارکردن در \fIfile\fP ماندگار می‌شود. از گزینه‌های \fB\-\-monotonic\fP و \fB\-\-boottime\fP می‌توان برای مشخص کردن آفست متناظر در فضای نام زمان استفاده کرد. .RE .sp \fB\-f\fP, \fB\-\-fork\fP .RS 4 منشعب کردن \fIprogram\fP مشخص‌شده به عنوان یک فرآیند فرزند از \fBunshare\fP به جای اجرای مستقیم آن. این گزینه هنگام ایجاد یک فضای نام PID جدید مفید است. توجه داشته باشید که وقتی \fBunshare\fP منتظر فرآیند فرزند است، سیگنال‌های \fBSIGINT\fP و \fBSIGTERM\fP را نادیده می‌گیرد و هیچ سیگنالی را به فرزند ارسال نمی‌کند. لازم است سیگنال‌ها مستقیماً به فرآیند فرزند ارسال شوند. .RE .sp \fB\-\-keep\-caps\fP .RS 4 هنگامی که گزینه \fB\-\-user\fP داده شده است، اطمینان حاصل می‌کند که قابلیت‌های اعطا شده در فضای نام کاربر در فرآیند فرزند حفظ شوند. .RE .sp \fB\-\-kill\-child\fP[\fB=\fP\fIsigname\fP] .RS 4 هنگامی که \fBunshare\fP خاتمه می‌یابد، باعث می‌شود \fIsigname\fP به فرآیند فرزند منشعب‌شده ارسال شود. ترکیب این گزینه با \fB\-\-pid\fP امکان خاتمه آسان و قابل‌اطمینان کل درخت فرآیند زیر \fBunshare\fP را فراهم می‌کند. در صورت مشخص نشدن، \fIsigname\fP به طور پیش‌فرض \fBSIGKILL\fP است. این گزینه مستلزم \fB\-\-fork\fP است. .RE .sp \fB\-\-mount\-proc\fP[\fB=\fP\fImountpoint\fP] .RS 4 درست پیش از اجرای برنامه، سیستم‌فایل proc را در \fImountpoint\fP سوار می‌کند (پیش‌فرض \fI/proc\fP است). این گزینه هنگام ایجاد یک فضای نام PID جدید مفید است. همچنین مستلزم ایجاد یک فضای نام سوارکردن جدید است چرا که در غیر این صورت سوار کردن \fI/proc\fP برنامه‌های موجود در سیستم را مختل می‌کند. سیستم‌فایل proc جدید صراحتاً به صورت خصوصی سوار می‌شود (با \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-mount\-binfmt\fP[\fB=\fP\fImountpoint\fP] .RS 4 درست پیش از اجرای برنامه، سیستم‌فایل binfmt_misc را در \fImountpoint\fP سوار می‌کند (پیش‌فرض /proc/sys/fs/binfmt_misc است). همچنین مستلزم ایجاد یک فضای نام سوارکردن جدید است چرا که در غیر این صورت سوار کردن binfmt_misc برنامه‌های موجود در سیستم را مختل می‌کند. سیستم‌فایل binfmt_misc جدید صراحتاً به صورت خصوصی سوار می‌شود (با \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-map\-user\fP \fIuid\fP|\fIname\fP .RS 4 اجرای برنامه تنها پس از اینکه شناسه کاربر مؤثر فعلی به \fIuid\fP نگاشت شد. اگر این گزینه چندین بار مشخص شود، آخرین مورد اولویت خواهد داشت. این گزینه مستلزم \fB\-\-user\fP است. .RE .sp \fB\-\-map\-users\fP \fIinneruid\fP\fB:\fP\fIouteruid\fP\fB:\fP\fIcount\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP .RS 4 اجرای برنامه تنها پس از اینکه بلوکی از شناسه‌های کاربر با اندازه \fIcount\fP که از \fIouteruid\fP شروع می‌شود به بلوکی از شناسه‌های کاربر که از \fIinneruid\fP شروع می‌شود نگاشت شد. اگر \fBunshare\fP بدون دسترسی‌های ریشه اجرا شده باشد، این نگاشت با \fBnewuidmap\fP(1) ایجاد می‌شود. اگر محدوده شناسه‌های کاربر با نگاشت مشخص‌شده توسط \fB\-\-map\-user\fP همپوشانی داشته باشد، یک "حفره" از نگاشت حذف خواهد شد. این ممکن است منجر به نگاشت نشدن بالاترین شناسه کاربر در نگاشت شود. برای نگاشت بیش از یک بلوک از شناسه‌های کاربر، چندین بار از \fB\-\-map\-users\fP استفاده کنید. مقدار ویژه \fBauto\fP اولین بلوک از شناسه‌های کاربر متعلق به کاربر مؤثر از \fI/etc/subuid\fP را به بلوکی که از شناسه کاربر 0 شروع می‌شود نگاشت می‌کند. مقدار ویژه \fBsubids\fP همان بلوک را به صورت همانی نگاشت می‌کند. مقدار ویژه \fBall\fP یک نگاشت عبوری (pass\-through) برای هر شناسه کاربر موجود در فضای نام والد ایجاد می‌کند. این گزینه مستلزم \fB\-\-user\fP است. .sp قبل از نسخه ۲.۳۹ util\-linux، این گزینه یک آرگومان جداشده با ویرگول به صورت \fIouteruid\fP\fB,\fP\fIinneruid\fP\fB,\fP\fIcount\fP دریافت می‌کرد اما آن قالب اکنون جهت هماهنگی با ترتیبی که در \fI/proc/[pid]/uid_map\fP و گزینه سوارکردن \fIX\-mount.idmap\fP استفاده می‌شود، منسوخ شده است. .RE .sp \fB\-\-map\-group\fP \fIgid\fP|\fIname\fP .RS 4 اجرای برنامه تنها پس از اینکه شناسه گروه مؤثر فعلی به \fIgid\fP نگاشت شد. اگر این گزینه چندین بار مشخص شود، آخرین مورد اولویت خواهد داشت. این گزینه مستلزم \fB\-\-setgroups=deny\fP و \fB\-\-user\fP است. .RE .sp \fB\-\-map\-groups\fP \fIinnergid\fP\fB:\fP\fIoutergid\fP\fB:\fP\fIcount\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP .RS 4 اجرای برنامه تنها پس از اینکه بلوکی از شناسه‌های گروه با اندازه \fIcount\fP که از \fIoutergid\fP شروع می‌شود به بلوکی از شناسه‌های گروه که از \fIinnergid\fP شروع می‌شود نگاشت شد. اگر \fBunshare\fP بدون دسترسی‌های ریشه اجرا شده باشد، این نگاشت با \fBnewgidmap\fP(1) ایجاد می‌شود. اگر محدوده شناسه‌های گروه با نگاشت مشخص‌شده توسط \fB\-\-map\-group\fP همپوشانی داشته باشد، یک "حفره" از نگاشت حذف خواهد شد. این ممکن است منجر به نگاشت نشدن بالاترین شناسه گروه در نگاشت شود. برای نگاشت بیش از یک بلوک از شناسه‌های گروه، چندین بار از \fB\-\-map\-groups\fP استفاده کنید. مقدار ویژه \fBauto\fP اولین بلوک از شناسه‌های گروه متعلق به گروه مؤثر از \fI/etc/subgid\fP را به بلوکی که از شناسه گروه 0 شروع می‌شود نگاشت می‌کند. مقدار ویژه \fBsubids\fP همان بلوک را به صورت همانی نگاشت می‌کند. مقدار ویژه \fBall\fP یک نگاشت عبوری برای هر شناسه گروه موجود در فضای نام والد ایجاد می‌کند. این گزینه مستلزم \fB\-\-user\fP است. .sp قبل از نسخه ۲.۳۹ util\-linux، این گزینه یک آرگومان جداشده با ویرگول به صورت \fIoutergid\fP\fB,\fP\fIinnergid\fP\fB,\fP\fIcount\fP دریافت می‌کرد اما آن قالب اکنون جهت هماهنگی با ترتیبی که در \fI/proc/[pid]/gid_map\fP و گزینه سوارکردن \fIX\-mount.idmap\fP استفاده می‌شود، منسوخ شده است. .RE .sp \fB\-\-map\-auto\fP .RS 4 نگاشت اولین بلوک از شناسه‌های کاربر متعلق به کاربر مؤثر از \fI/etc/subuid\fP به بلوکی که از شناسه کاربر 0 شروع می‌شود. به همین ترتیب، نگاشت اولین بلوک از شناسه‌های گروه متعلق به گروه مؤثر از \fI/etc/subgid\fP به بلوکی که از شناسه گروه 0 شروع می‌شود. این گزینه برای رسیدگی به حالت معمول طراحی شده است که در آن اولین بلوک از شناسه‌های کاربر و گروه زیرمجموعه می‌تواند کل فضای شناسه‌های کاربر و گروه را نگاشت کند. این گزینه معادل مشخص کردن \fB\-\-map\-users=auto\fP و \fB\-\-map\-groups=auto\fP است. .RE .sp \fB\-\-map\-subids\fP .RS 4 نگاشت همانی اولین بلوک از شناسه‌های کاربر متعلق به کاربر مؤثر از \fI/etc/subuid\fP. به همین ترتیب، نگاشت همانی اولین بلوک از شناسه‌های گروه متعلق به گروه مؤثر از \fI/etc/subgid\fP. این گزینه معادل مشخص کردن \fB\-\-map\-users=subids\fP و \fB\-\-map\-groups=subids\fP است. .RE .sp \fB\-r\fP, \fB\-\-map\-root\-user\fP .RS 4 اجرای برنامه تنها پس از اینکه شناسه‌های کاربر و گروه مؤثر فعلی به UID و GID کاربر ارشد (superuser) در فضای نام کاربر تازه‌ایجادشده نگاشت شدند. این امر به دست آوردن قابلیت‌های مورد نیاز برای مدیریت جنبه‌های مختلف فضاهای نام تازه‌ایجادشده (مانند پیکربندی رابط‌ها در فضای نام شبکه یا سوار کردن سیستم‌های فایل در فضای نام سوارکردن) را حتی در صورت اجرا بدون دسترسی ریشه به راحتی ممکن می‌سازد. به عنوان یک ویژگی صرفاً جهت راحتی، این گزینه از موارد کاربرد پیچیده‌تر، مانند نگاشت چندین محدوده از UIDها و GIDها، پشتیبانی نمی‌کند. این گزینه مستلزم \fB\-\-setgroups=deny\fP و \fB\-\-user\fP است. این گزینه معادل \fB\-\-map\-user=0 \-\-map\-group=0\fP است. .RE .sp \fB\-c\fP, \fB\-\-map\-current\-user\fP .RS 4 اجرای برنامه تنها پس از اینکه شناسه‌های کاربر و گروه مؤثر فعلی به همان UID و GID در فضای نام کاربر تازه‌ایجادشده نگاشت شدند. این گزینه مستلزم \fB\-\-setgroups=deny\fP و \fB\-\-user\fP است. این گزینه معادل \fB\-\-map\-user=$(id \-ru) \-\-map\-group=$(id \-rg)\fP است. .RE .sp \fB\-\-propagation\fP \fBprivate\fP|\fBshared\fP|\fBslave\fP|\fBunchanged\fP .RS 4 تنظیم بازگشتی پرچم انتشار سوارکردن در فضای نام سوارکردن جدید. مقدار پیش‌فرض تنظیم انتشار روی \fIprivate\fP است. غیرفعال کردن این ویژگی با آرگومان \fBunchanged\fP امکان‌پذیر است. در صورتی که فضای نام سوارکردن (\fB\-\-mount\fP) درخواست نشده باشد، این گزینه نادیده گرفته می‌شود. .RE .sp \fB\-\-setgroups\fP \fBallow\fP|\fBdeny\fP .RS 4 مجاز یا غیرمجاز کردن فراخوانی سیستمی \fBsetgroups\fP(2) در یک فضای نام کاربر. .sp برای فراخوانی \fBsetgroups\fP(2)، فرآیند فراخواننده باید حداقل قابلیت \fBCAP_SETGID\fP را داشته باشد. اما از لینوکس ۳.۱۹ محدودیت دیگری نیز اعمال می‌شود: هسته تنها پس از تنظیم نگاشت GID (\fB/proc/\fP\fIpid\fP*/gid_map*) اجازه فراخوانی \fBsetgroups\fP(2) را می‌دهد. زمانی که \fBsetgroups\fP(2) فعال است (یعنی \fBallow\fP، مقدار پیش‌فرض)، نگاشت GID توسط root قابل نوشتن است و زمانی که \fBsetgroups\fP(2) به طور دائم غیرفعال می‌شود (با \fBdeny\fP)، نگاشت GID توسط فرآیندهای بدون امتیاز قابل نوشتن می‌شود. .RE .sp \fB\-R\fP, \fB\-\-root\fP \fIdir\fP .RS 4 اجرای دستور با تنظیم دایرکتوری ریشه بر روی \fIdir\fP. .RE .sp \fB\-w\fP, \fB\-\-wd\fP \fIdir\fP .RS 4 تغییر دایرکتوری کاری به \fIdir\fP. .RE .sp \fB\-S\fP, \fB\-\-setuid\fP \fIuid\fP .RS 4 تنظیم شناسه کاربری که در فضای نام واردشده استفاده خواهد شد. .RE .sp \fB\-G\fP, \fB\-\-setgid\fP \fIgid\fP .RS 4 تنظیم شناسه گروهی که در فضای نام واردشده استفاده خواهد شد و حذف گروه‌های تکمیلی. .RE .sp \fB\-l\fP, \fB\-\-load\-interp\fP \fIstring\fP .RS 4 بارگذاری تعریف binfmt_misc در فضای نام (مستلزم \fB\-\-mount\-binfmt\fP). آرگومان \fIstring\fP به صورت \f(CR:name:type:offset:magic:mask:interpreter:flags\fP است. برای جزئیات بیشتر درباره ثبت نوع باینری جدید به \c .URL "https://www.kernel.org/doc/Documentation/admin\-guide/binfmt\-misc.rst" "" "." مراجعه کنید. برای مدیریت پرچم F در \f(CRflags\fP با پارامتر \fB\-\-root\fP، binfmt_misc دو بار سوار می‌شود: یک بار قبل از chroot برای بارگذاری مفسر از سیستم‌فایل فراخواننده و یک بار پس از آن برای در دسترس قرار دادن آن از فضای کاربری chroot. .RE .sp \fB\-\-monotonic\fP \fIoffset\fP .RS 4 تنظیم آفست \fBCLOCK_MONOTONIC\fP که در فضای نام زمان واردشده استفاده خواهد شد. این گزینه نیازمند جداسازی یک فضای نام زمان با \fB\-\-time\fP است. .RE .sp \fB\-\-boottime\fP \fIoffset\fP .RS 4 تنظیم آفست \fBCLOCK_BOOTTIME\fP که در فضای نام زمان واردشده استفاده خواهد شد. این گزینه نیازمند جداسازی یک فضای نام زمان با \fB\-\-time\fP است. .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 نمایش متن راهنما و خروج. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 نمایش نسخه و خروج. .RE .SH "نکات (NOTES)" .sp سوارکردن سیستم‌های فایل proc و sysfs به عنوان root در یک فضای نام کاربر باید محدود شود تا یک کاربر با دسترسی کمتر نتواند به فایل‌های حساسی که یک کاربر با دسترسی بالاتر غیرقابل دسترس کرده است، دسترسی بیشتری پیدا کند. به طور خلاصه قاعده برای proc و sysfs این است که تا حد امکان مشابه یک اتصال سوارکردن (bind mount) باشد. .SH "مثال‌ها (EXAMPLES)" .sp دستور زیر یک فضای نام PID با استفاده از \fB\-\-fork\fP ایجاد می‌کند تا اطمینان حاصل شود دستور اجراشده در فرآیند فرزندی اجرا می‌شود که (به عنوان اولین فرآیند در فضای نام) دارای PID 1 است. گزینه \fB\-\-mount\-proc\fP تضمین می‌کند که یک فضای نام سوارکردن جدید نیز هم‌زمان ایجاد شده و یک سیستم‌فایل جدید \fBproc\fP(5) سوار می‌شود که حاوی اطلاعات متناظر با فضای نام PID جدید است. با پایان یافتن دستور \fBreadlink\fP(1)، فضاهای نام جدید به طور خودکار برچیده می‌شوند. .sp .if n .RS 4 .nf .fam C # unshare \-\-fork \-\-pid \-\-mount\-proc readlink /proc/self 1 .fam .fi .if n .RE .sp به عنوان یک کاربر بدون دسترسی ویژه، یک فضای نام کاربر جدید ایجاد کنید که در آن اعتبارنامه‌های کاربر به شناسه‌های root درون فضای نام نگاشت می‌شوند: .sp .if n .RS 4 .nf .fam C $ id \-u; id \-g 1000 1000 $ unshare \-\-user \-\-map\-root\-user \(rs sh \-c \*(Aqwhoami; cat /proc/self/uid_map /proc/self/gid_map\*(Aq root 0\& 1000\& 1 0\& 1000\& 1 .fam .fi .if n .RE .sp به عنوان یک کاربر بدون دسترسی ویژه، یک فضای نام کاربر ایجاد کنید که در آن ۶۵۵۳۶ شناسه اول همگی نگاشت شده‌اند و اعتبارنامه‌های کاربر به شناسه‌های root درون فضای نام نگاشت می‌شوند. این نگاشت با شناسه‌های زیرمجموعه تعیین‌شده در \fBsubuid\fP(5) و \fBsubgid\fP(5) مشخص می‌شود. این نگاشت را با ایجاد فایلی با شناسه کاربر 1 و شناسه گروه 1 نشان دهید. برای اختصار، تنها نگاشت‌های شناسه کاربر نشان داده شده‌اند: .sp .if n .RS 4 .nf .fam C $ id \-u 1000 $ cat /etc/subuid 1000:100000:65536 $ unshare \-\-user \-\-map\-auto \-\-map\-root\-user # id \-u 0 # cat /proc/self/uid_map 0\& 1000\& 1 1\& 100000\& 65535 # touch file; chown 1:1 file # ls \-ln \-\-time\-style=+ file \-rw\-r\-\-r\-\- 1 1 1 0\& file # exit $ ls \-ln \-\-time\-style=+ file \-rw\-r\-\-r\-\- 1 100000 100000 0\& file .fam .fi .if n .RE .sp اولین دستور از دستورهای زیر یک فضای نام UTS ماندگار جدید ایجاد می‌کند و نام میزبان را آن‌گونه که در آن فضای نام دیده می‌شود تغییر می‌دهد. سپس برای نمایش نام میزبان تغییریافته، با \fBnsenter\fP(1) وارد فضای نام می‌شود؛ این مرحله نشان می‌دهد که فضای نام UTS حتی با وجود اینکه پس از پایان دستور \fBunshare\fP هیچ فرآیند عضوی نداشت، همچنان به وجود خود ادامه می‌دهد. سپس فضای نام با حذف اتصال سوارکردن نابود می‌شود. .sp .if n .RS 4 .nf .fam C # touch /root/uts\-ns # unshare \-\-uts=/root/uts\-ns hostname FOO # nsenter \-\-uts=/root/uts\-ns hostname FOO # umount /root/uts\-ns .fam .fi .if n .RE .sp دستورهای زیر یک فضای نام سوارکردن ماندگار را ایجاد می‌کنند که توسط اتصال سوارکردن \fI/root/namespaces/mnt\fP مورد ارجاع قرار می‌گیرد. به منظور اطمینان از موفقیت‌آمیز بودن ایجاد آن اتصال سوارکردن، دایرکتوری والد (\fI/root/namespaces\fP) به یک اتصال سوارکردن تبدیل می‌شود که نوع انتشار آن \fBshared\fP نیست. .sp .if n .RS 4 .nf .fam C # mount \-\-bind /root/namespaces /root/namespaces # mount \-\-make\-private /root/namespaces # touch /root/namespaces/mnt # unshare \-\-mount=/root/namespaces/mnt .fam .fi .if n .RE .sp دستورهای زیر نحوه استفاده از گزینه \fB\-\-kill\-child\fP را هنگام ایجاد یک فضای نام PID نشان می‌دهند، تا اطمینان حاصل شود که هنگام پایان یافتن یا کشته شدن \fBunshare\fP، تمام فرآیندهای درون فضای نام PID کشته می‌شوند. .sp .if n .RS 4 .nf .fam C # set +m\& # Don\*(Aqt print job status messages # unshare \-\-pid \-\-fork \-\-mount\-proc \-\-kill\-child \-\- \(rs bash \-\-norc \-c \*(Aq(sleep 555 &) && (ps a &) && sleep 999\*(Aq & [1] 53456 #\& PID TTY\& STAT\& TIME COMMAND 1 pts/3\& S+\& 0:00 sleep 999 3 pts/3\& S+\& 0:00 sleep 555 5 pts/3\& R+\& 0:00 ps a # ps h \-o \*(Aqcomm\*(Aq $!\& # Show that background job is unshare(1) unshare # kill $!\& # Kill unshare(1) # pidof sleep .fam .fi .if n .RE .sp دستور \fBpidof\fP(1) هیچ خروجی چاپ نمی‌کند، زیرا فرآیندهای \fBsleep\fP کشته شده‌اند. به طور دقیق‌تر، هنگامی که فرآیند \fBsleep\fP دارای PID 1 در فضای نام (یعنی فرآیند init فضای نام) کشته شد، این امر باعث کشته شدن تمام فرآیندهای دیگر در آن فضای نام گردید. در مقابل، سری مشابهی از دستورها که در آن‌ها از گزینه \fB\-\-kill\-child\fP استفاده نشده است نشان می‌دهد که با خاتمه یافتن \fBunshare\fP، فرآیندهای درون فضای نام PID کشته نمی‌شوند: .sp .if n .RS 4 .nf .fam C # unshare \-\-pid \-\-fork \-\-mount\-proc \-\- \(rs bash \-\-norc \-c \*(Aq(sleep 555 &) && (ps a &) && sleep 999\*(Aq & [1] 53479 #\& PID TTY\& STAT\& TIME COMMAND 1 pts/3\& S+\& 0:00 sleep 999 3 pts/3\& S+\& 0:00 sleep 555 5 pts/3\& R+\& 0:00 ps a # kill $! # pidof sleep 53482 53480 .fam .fi .if n .RE .sp مثال زیر ایجاد یک فضای نام زمان را نشان می‌دهد که در آن ساعت boottime روی نقطه‌ای چند سال در گذشته تنظیم شده است: .sp .if n .RS 4 .nf .fam C # uptime \-p\& # Show uptime in initial time namespace up 21 hours, 30 minutes # unshare \-\-time \-\-fork \-\-boottime 300000000 uptime \-p up 9 years, 28 weeks, 1 day, 2 hours, 50 minutes .fam .fi .if n .RE .sp مثال زیر یک chroot را به دایرکتوری /chroot/powerpc/jessie اجرا می‌کند و مفسر /bin/qemu\-ppc\-static را برای اجرای باینری‌های powerpc نصب می‌کند. .sp .if n .RS 4 .nf .fam C $\& unshare \-\-map\-root\-user \-\-fork \-\-pid \-\-load\-interp=":qemu\-ppc:M::\(rs\(rsx7fELF\(rsx01\(rs\(rsx02\(rs\(rsx01\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx02\(rs\(rsx00\(rs\(rsx14:\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsx00\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxfe\(rs\(rsxff\(rs\(rsxff:/bin/qemu\-ppc\-static:OCF" \-\-root=/chroot/powerpc/jessie /bin/bash \-l .fam .fi .if n .RE .sp پارامتر \f(CRload\-interp\fP را می‌توان به صورت زیر خواند .RS 4 .sp \f(CRqemu\-ppc\fP .RS 4 نام فایل جدید ایجادشده در زیر \f(CR/proc/sys/fs/binfmt_misc\fP برای ثبت مفسر است .RE .sp \f(CRM\fP .RS 4 مفسر را برای یک نوع مشخص از عدد جادویی تعریف می‌کند .RE .sp \f(CR\(rs\(rsx7fELF\(rsx01\(rs\(rsx02\(rs\(rsx01\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx02\(rs\(rsx00\(rs\(rsx1\fP .RS 4 عدد جادویی برای شناسایی فایل جهت تفسیر است (در این حالت، هدر ELF برای PPC32) .RE .sp \f(CR\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsx00\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxfe\(rs\(rsxff\(rs\(rsxff\fP .RS 4 ماسک اعمال‌شده روی عدد جادویی .RE .sp \f(CR/bin/qemu\-ppc\-static\fP .RS 4 مفسر مورد استفاده با فایل .RE .sp \f(CROCF\fP .RS 4 فایل توسط هسته با اعتبارنامه‌ها و توکن‌های امنیتی خود فایل باز شده و به محض ثبت شدن بارگذاری می‌شود. .RE .RE .SH "نویسندگان (AUTHORS)" .sp .MTO "dottedmag\(atdottedmag.net" "Mikhail Gusarov" "," .MTO "kzak\(atredhat.com" "Karel Zak" "" .SH "همچنین ببینید (SEE ALSO)" .sp \fBnewuidmap\fP(1), \fBnewgidmap\fP(1), \fBclone\fP(2), \fBunshare\fP(2), \fBnamespaces\fP(7), \fBmount\fP(8) .SH "گزارش باگ‌ها (REPORTING BUGS)" .sp برای گزارش باگ‌ها از \c .URL "https://github.com/util\-linux/util\-linux/issues" "ردیاب مشکلات" "." استفاده کنید. .SH "دسترس‌پذیری (AVAILABILITY)" .sp دستور \fBunshare\fP بخشی از بسته util\-linux است که می‌توان آن را از \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux" "آرشیو هسته لینوکس" "." دریافت کرد.