'\" t .\" Title: unshare .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-05-18 .\" Manual: أوامر المستخدم .\" Source: util-linux 2.42.1 .\" Language: English .\" .TH "UNSHARE" "1" "2026-05-18" "util\-linux 2.42.1" "أوامر المستخدم" .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 "الاسم" unshare \- تشغيل برنامج في مساحات أسماء جديدة .SH "موجز" .sp \fBunshare\fP [خيارات] [\fIبرنامج\fP [\fIوسائط\fP]] .SH "الوصف" .sp يُنشئ الأمر \fBunshare\fP مساحات أسماء جديدة (كما هو محدد في خيارات سطر الأوامر الموضحة أدناه) ثم يُنفّذ \fIالبرنامج\fP المحدد. إذا لم يُعطَ \fIالبرنامج\fP، تُشغّل "${SHELL}" (المبدئي: \fI/bin/sh\fP). .sp مبدئياً، تستمر مساحة الأسماء الجديدة فقط طالما أنها تحتوي على عمليات عضوة. يمكن جعل مساحة الأسماء الجديدة مستمرة حتى لو لم تكن تحتوي على عمليات عضوة عن طريق وصل ملفات /proc/\fIمعرّف\-العملية\fP/ns/\fIنوع\fP وصلاً رابطاً بمسار نظام ملفات. مساحة الأسماء التي جُعلت مستمرة بهذه الطريقة يمكن ولوجها لاحقاً باستخدام \fBnsenter\fP(1) حتى بعد إنهاء \fIالبرنامج\fP (باستثناء مساحات أسماء PID حيث يتطلب الأمر عملية init قيد التشغيل الدائم). بمجرد عدم الحاجة لمساحة أسماء مستمرة، يمكن إلغاء استمرارها باستخدام \fBumount\fP(8) لإزالة الوصل الرابط. راجع قسم \fBأمثلة\fP لمزيد من التفاصيل. .sp يستخدم \fBunshare\fP منذ util\-linux الإصدار 2.36 ملفات \fI/proc/[pid]/ns/pid_for_children\fP و \fI/proc/[pid]/ns/time_for_children\fP لمساحات أسماء PID و TIME المستمرة. يتطلب هذا التغيير نواة لينكس 4.17 أو أحدث. .sp يمكن إنشاء الأنواع التالية من مساحات الأسماء باستخدام \fBunshare\fP: .sp \fBنطاق تسمية الوصل\fP .RS 4 لن يؤثر وصل وفصل أنظمة الملفات على بقية النظام، باستثناء أنظمة الملفات الموسومة صراحةً بأنها مشاركة (باستخدام \fBmount \-\-make\-shared\fP؛ انظر \fI/proc/self/mountinfo\fP أو \fBfindmnt \-o+PROPAGATION\fP من أجل وسوم \fBshared\fP). لمزيد من التفاصيل، راجع \fBmount_namespaces\fP(7). .sp يضبط \fBunshare\fP آلياً منذ util\-linux الإصدار 2.27 الانتشار إلى \fBprivate\fP في مساحة أسماء وصل جديدة للتأكد من أن مساحة الأسماء الجديدة غير مشاركة حقاً. يمكن تعطيل هذه الميزة باستخدام الخيار \fB\-\-propagation unchanged\fP. لاحظ أن \fBprivate\fP هو المبدئي للنواة. .RE .sp \fBنطاق تسمية UTS\fP .RS 4 ضبط اسم المضيف أو اسم النطاق لن يؤثر على بقية النظام. لمزيد من التفاصيل، راجع \fButs_namespaces\fP(7). .RE .sp \fBIPC namespace\fP .RS 4 سيكون للعملية نطاق تسمية مستقل لصفوف رسائل POSIX بالإضافة إلى صفوف رسائل System V، ومجموعات السيمافور وقطع الذاكرة المشتركة. لمزيد من التفاصيل، راجع \fBipc_namespaces\fP(7). .RE .sp \fBnetwork namespace\fP .RS 4 سيكون للعملية كدسات IPv4 و IPv6 مستقلة، وجداول توجيه IP، وقواعد جدار الحماية، وأشجار أدلة \fI/proc/net\fP و \fI/sys/class/net\fP، والمقابس، وما إلى ذلك. لمزيد من التفاصيل، راجع \fBnetwork_namespaces\fP(7). .RE .sp \fBPID namespace\fP .RS 4 سيكون للأبناء مجموعة متميزة من تخطيطات معرفات العمليات (PID\-to\-process) عن أبيهم. لمزيد من التفاصيل، راجع \fBpid_namespaces\fP(7). .RE .sp \fBنطاق تسمية cgroup\fP .RS 4 سيكون للعملية عرض وهمي لـ \fI/proc/self/cgroup\fP، وستجذر عمليات وصل cgroup الجديدة عند جذر cgroup لنطاق التسمية. لمزيد من التفاصيل، راجع \fBcgroup_namespaces\fP(7). .RE .sp \fBنطاق تسمية المستخدم\fP .RS 4 سيكون للعملية مجموعة متميزة من معرفات المستخدمين (UIDs)، ومعرفات المجموعات (GIDs) والقدرات. لمزيد من التفاصيل، راجع \fBuser_namespaces\fP(7). .RE .sp \fBنطاق تسمية الوقت\fP .RS 4 يمكن للعملية أن تمتلك عرضاً متميزاً لـ \fBCLOCK_MONOTONIC\fP و/أو \fBCLOCK_BOOTTIME\fP والذي يمكن تغييره باستخدام \fI/proc/self/timens_offsets\fP. لمزيد من التفاصيل، راجع \fBtime_namespaces\fP(7). .RE .SH "الخيارات" .sp \fB\-i\fP، \fB\-\-ipc\fP[\fB=\fP\fIملف\fP] .RS 4 إنشاء مساحة أسماء IPC جديدة. إذا حُدد \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عن طريق إنشاء وصل رابط عند \fIملف\fP. .RE .sp \fB\-m\fP، \fB\-\-mount\fP[\fB=\fP\fIملف\fP] .RS 4 إنشاء مساحة أسماء وصل جديدة. إذا حُدد \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عن طريق إنشاء وصل رابط عند \fIملف\fP. لاحظ أن \fIملف\fP يجب أن يقع على وصلة ليس نوع انتشارها \fBshared\fP (وإلا سيحدث خطأ). استخدم الأمر \fBfindmnt \-o+PROPAGATION\fP عندما لا تكون متأكداً من الإعداد الحالي. انظر أيضاً الأمثلة أدناه. .RE .sp \fB\-n\fP، \fB\-\-net\fP[\fB=\fP\fIملف\fP] .RS 4 أنشئ مساحة أسماء شبكة جديدة. إذا حُدد \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عن طريق إنشاء وصل ربط عند \fIملف\fP. .RE .sp \fB\-p\fP، \fB\-\-pid\fP[\fB=\fP\fIملف\fP] .RS 4 أنشئ مساحة أسماء PID جديدة. إذا حُدد \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عن طريق إنشاء وصل ربط عند \fIملف\fP. (سيفشل إنشاء مساحة أسماء PID مستمرة إذا لم يُحدد الخيار \fB\-\-fork\fP أيضاً). .sp انظر أيضاً الخيارين \fB\-\-fork\fP و \fB\-\-mount\-proc\fP. .RE .sp \fB\-u\fP، \fB\-\-uts\fP[\fB=\fP\fIملف\fP] .RS 4 إنشاء مساحة أسماء UTS جديدة. إذا حُدد \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عن طريق إنشاء وصل رابط عند \fIملف\fP. .RE .sp \fB\-U\fP، \fB\-\-user\fP[\fB=\fP\fIملف\fP] .RS 4 أُنشئت مساحة أسماء مستخدم جديدة. إذا حُدد الـ \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عبر إنشاء وصل ربط (bind mount) عند الـ \fIملف\fP. .RE .sp \fB\-C\fP، \fB\-\-cgroup\fP[\fB=\fP\fIملف\fP] .RS 4 أُنشئت مساحة أسماء cgroup جديدة. إذا حُدد الـ \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عبر إنشاء وصل ربط عند الـ \fIملف\fP. .RE .sp \fB\-T\fP، \fB\-\-time\fP[\fB=\fP\fIملف\fP] .RS 4 أُنشئت مساحة أسماء وقت جديدة. إذا حُدد الـ \fIملف\fP، فستُجعل مساحة الأسماء مستمرة عبر إنشاء وصل ربط عند الـ \fIملف\fP. يمكن استخدام الخيارين \fB\-\-monotonic\fP و \fB\-\-boottime\fP لتحديد الإزاحة المقابلة في مساحة أسماء الوقت. .RE .sp \fB\-f\fP، \fB\-\-fork\fP .RS 4 فُرّع الـ \fIبرنامج\fP المحدد كعملية ابنة لـ \fBunshare\fP بدلاً من تشغيله مباشرة. يفيد هذا عند إنشاء مساحة أسماء PID جديدة. لاحظ أنه عندما ينتظر \fBunshare\fP العملية الابنة، فإنه يتجاهل الإشارات \fBSIGINT\fP و \fBSIGTERM\fP ولا يمرر أي إشارات إلى الابن. من الضروري إرسال الإشارات إلى العملية الابنة مباشرة. .RE .sp \fB\-\-forward\-signals\fP .RS 4 توجيه إشارات \fBSIGTERM\fP و \fBSIGINT\fP التي تتلقاها عملية \fBunshare\fP الأب إلى العملية الابن. عند عدم تحديد هذا الخيار، يتجاهل \fBunshare\fP هذه الإشارات أثناء انتظار خروج العملية الابن (السلوك المبدئي منذ util\-linux 2.36). يسمح هذا للأب بالبقاء حياً بينما تعالج العملية الابن الإشارات. .sp هذا الخيار مفيد عندما تتلقى عملية \fBunshare\fP الأب إشارات \fBSIGTERM\fP أو \fBSIGINT\fP (على سبيل المثال، أثناء إعادة تشغيل النظام أو من مدير العمليات)، وتريد إخطار العملية الابن بطلبات الإغلاق الهادئ لتتمكن من إجراء عمليات التنظيف. إذا كانت العملية الابن تملك معالجات إشارات (مثل معالجات trap في الصدفة)، فإن تفعيل هذا الخيار يسمح بتنفيذها. .sp يتضمن هذا الخيار \fB\-\-fork\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 بسهولة وموثوقية. في حال عدم تحديدها، تُستخدم الإشارة الافتراضية \fBSIGKILL\fP. يتضمن هذا الخيار استخدام \fB\-\-fork\fP. .RE .sp \fB\-\-mount\-proc\fP[\fB=\fP\fIنقطة\-الوصل\fP] .RS 4 قُبيل تشغيل البرنامج، وُصل نظام ملفات proc عند نقطة الوصل \fIنقطة\-الوصل\fP (الافتراض هو \fI/proc\fP). يفيد هذا عند إنشاء مساحة أسماء PID جديدة. كما يتضمن إنشاء مساحة أسماء وصل جديدة لأن وصل \fI/proc\fP قد يتسبب بخلاف ذلك في تداخل مع البرامج الموجودة في النظام. وُصل نظام ملفات proc الجديد صراحة بصفته خاصاً (باستخدام \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-mount\-binfmt\fP[\fB=\fP\fIنقطة\-الوصل\fP] .RS 4 قبل تشغيل البرنامج مباشرة، وُصل نظام ملفات binfmt_misc عند \fIنقطة_الوصل\fP (المبدئي هو \fI/proc/sys/fs/binfmt_misc\fP). كما يتضمن إنشاء مساحة أسماء وصل جديدة لأن وصل binfmt_misc قد يربك البرامج الموجودة على النظام بخلاف ذلك. وُصل نظام ملفات binfmt_misc الجديد صراحة كخاص (باستخدام \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-map\-user\fP \fIuid\fP|\fIخيار\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. تُنشأ هذه المطابقة عبر \fBnewuidmap\fP(1) إذا شُغّل \fBunshare\fP دون امتيازات. إذا تداخل نطاق معرّفات المستخدمين مع المطابقة المحددة بواسطة \fB\-\-map\-user\fP، فستُزال "فجوة" من المطابقة. قد يؤدي هذا إلى عدم مطابقة أعلى معرّف مستخدم في المطابقة. استخدم \fB\-\-map\-users\fP عدة مرات لمطابقة أكثر من كتلة من معرّفات المستخدمين. تطابق القيمة الخاصة \fBauto\fP أول كتلة من معرّفات المستخدمين المملوكة للمستخدم الفعلي من \fI/etc/subuid\fP بكتلة تبدأ عند معرّف المستخدم 0. تطابق القيمة الخاصة \fBsubids\fP نفس الكتلة تطابقاً ذاتياً. تنشئ القيمة الخاصة \fBall\fP خريطة تمرير لكل معرّف مستخدم متاح في مساحة الأسماء الأب. يتضمن هذا الخيار \fB\-\-user\fP. .sp قبل إصدار util\-linux رقم 2.39، كان هذا الخيار يتوقع معطى مفصولاً بفاصلة على الصيغة \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|\fIخيار\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. تُنشأ هذه المطابقة عبر \fBnewgidmap\fP(1) إذا شُغّل \fBunshare\fP دون امتيازات. إذا تداخل نطاق معرّفات المجموعات مع المطابقة المحددة بواسطة \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 رقم 2.39، كان هذا الخيار يتوقع معطى مفصولاً بفاصلة على الصيغة \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) في مساحة أسماء المستخدم المنشأة حديثاً. يتيح هذا الحصول بسهولة على القدرات اللازمة لإدارة جوانب مختلفة من مساحات الأسماء المنشأة حديثاً (مثل تكوين الواجهات في مساحة أسماء الشبكة أو وصل أنظمة الملفات في مساحة أسماء الوصل) حتى عند التشغيل دون امتيازات. لكونها مجرد ميزة تسهيلية، فهي لا تدعم حالات الاستخدام الأكثر تعقيداً، مثل مطابقة نطاقات متعددة من UIDs و GIDs. يتضمن هذا الخيار \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\-\-owner\fP \fIuid\fP\fB:\fP\fIgid\fP .RS 4 اضبط المستخدم والوصول المالكين عند إنشاء مساحة أسماء مستخدم. يحدد هذان المستخدم في مساحة أسماء الأب الذي يملك صلاحية CAP_SYS_ADMIN في مساحة أسماء الابن الجديدة ويمكنه استخدام \fBsetns\fP(2) إليها. يسمح هذا الخيار لمستخدم ذي امتيازات بإنشاء مساحة أسماء نيابة عن آخر لا يملكها، مستخدماً امتيازاته لمسح المعرفات و/أو وصل مساحة الأسماء في نظام الملفات. يتضمن هذا \fB\-\-user\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. ولكن منذ إصدار لينكس 3.19، يُطبق قيد إضافي: تمنح النواة الإذن باستدعاء \fBsetgroups\fP(2) فقط بعد ضبط خريطة معرف المجموعة (GID) (\fB/proc/\fP\fIمعرّف\-العملية\fP*/gid_map*). تكون خريطة GID قابلة للكتابة من قبل root عند تفعيل \fBsetgroups\fP(2) (أي \fBallow\fP، وهو المبدئي)، وتصبح خريطة GID قابلة للكتابة من قبل العمليات غير المميزة عند تعطيل \fBsetgroups\fP(2) نهائياً (باستخدام \fBdeny\fP). .RE .sp \fB\-R\fP، \fB\-\-root\fP \fIدليل\fP .RS 4 تشغيل الأمر مع ضبط دليل الجذر إلى \fIدليل\fP. .RE .sp \fB\-w\fP، \fB\-\-wd\fP \fIدليل\fP .RS 4 تغيير دليل العمل إلى \fIدليل\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 \fIسلسلة_محارف\fP .RS 4 تحميل تعريف binfmt_misc في مساحة الأسماء (يتضمن \fB\-\-mount\-binfmt\fP). المعطى \fIسلسلة_محارف\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 \fIإزاحة\fP .RS 4 ضبط إزاحة \fBCLOCK_MONOTONIC\fP التي ستُستخدم في مساحة أسماء الوقت التي وُلج إليها. يتطلب هذا الخيار فصل مساحة أسماء وقت باستخدام \fB\-\-time\fP. .RE .sp \fB\-\-boottime\fP \fIإزاحة\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 "ملاحظات" .sp يجب تقييد وصل أنظمة ملفات proc و sysfs كجذر في مساحة أسماء مستخدم حتى لا يتمكن مستخدم أقل امتيازاً من الحصول على وصول أكبر لملفات حساسة جعلها مستخدم أكثر امتيازاً غير متاحة. باختصار، القاعدة لملفات proc و sysfs هي أن تكون أقرب ما يكون إلى الوصل الرابط. .SH "أمثلة" .sp ينشئ الأمر التالي مساحة أسماء PID، مع استخدام \fB\-\-fork\fP لضمان تنفيذ الأمر في عملية ابنة (باعتبارها العملية الأولى في مساحة الأسماء) تملك المعرف 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 كمستخدم غير مميز، أنشئ مساحة أسماء مستخدم حيث تُمثل أول 65536 معرفاً بالكامل، وتُخطط بيانات اعتماد المستخدم إلى معرفات 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. ثم يُدمر نطاق التسمية عن طريق إزالة وصل الربط (bind mount). .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\& # لا تطبع رسائل حالة المهام # 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 $!\& # أظهر أن مهمة الخلفية هي unshare(1) unshare # kill $!\& # أنهِ unshare(1) # pidof sleep .fam .fi .if n .RE .sp لا يطبع أمر \fBpidof\fP(1) أي مخرجات، لأن عمليات \fBsleep\fP قد أُنهيت. وبشكل أدق، عندما أُنهيت عملية \fBsleep\fP التي تملك PID 1 في نطاق التسمية (أي عملية البدء في نطاق التسمية)، أدى ذلك إلى إنهاء جميع العمليات الأخرى في نطاق التسمية. على النقيض من ذلك، تظهر سلسلة مماثلة من الأوامر حيث لا يُستخدم خيار \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 يوضح المثال التالي إنشاء نطاق تسمية زمني حيث ضُبطت ساعة وقت الإقلاع على نقطة تسبق الحاضر بعدة سنوات: .sp .if n .RS 4 .nf .fam C # uptime \-p\& # أظهر وقت التشغيل في النطاق الزمني الأولي 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 إلى المجلد \fI/chroot/powerpc/jessie\fP ويُثبت المفسر \fI/bin/qemu\-ppc\-static\fP لتنفيذ ملفات 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 يحدد المفسّر لنوع معين من الأرقام السحرية (magic number) .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 "المؤلفين" .sp .MTO "dottedmag\(atdottedmag.net" "Mikhail Gusarov" "،" .MTO "kzak\(atredhat.com" "Karel Zak" "" .SH "انظر أيضاً" .sp \fBnewuidmap\fP(1)، \fBnewgidmap\fP(1)، \fBnsenter\fP(1)، \fBlsns\fP(8)، \fBclone\fP(2)، \fBunshare\fP(2)، \fBnamespaces\fP(7)، \fBmount\fP(8) .SH "التبليغ عن الأخطاء" .sp لتقارير العِلل، استخدم \c .URL "https://github.com/util\-linux/util\-linux/issues" "مُتتبع المشكلات" "." .SH "التوفر" .sp الأمر \fBunshare\fP جزء من حزمة util\-linux التي يمكن تنزيلها من \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "أرشيف نواة لينكس" "."