دستور nsenter
برنامه program
را در
فضای(های)
نام
مشخصشده
در
گزینههای
خط فرمان
(توصیفشده
در ادامه)
اجرا
میکند. اگر
program داده
نشده باشد،
"${SHELL}" اجرا
میشود
(پیشفرض:
/bin/sh).
فضاهای
نام قابل
ورود
عبارتند
از:
فضای نام
سوارکردن (mount
namespace)
سوار
کردن و
پیاده کردن
سیستمهای
فایل روی
سایر
بخشهای
سیستم
تأثیری
نخواهد
گذاشت، به
جز
سیستمهای
فایلی که
صراحتاً به
عنوان
اشتراکی
علامتگذاری
شدهاند (با
mount --make-shared؛ پرچم
shared را در
/proc/self/mountinfo
ببینید).
برای
جزئیات
بیشتر،
mount_namespaces(7)
و بحث
درباره
پرچم
CLONE_NEWNS در
clone(2) را
ببینید.
فضای نام UTS
(UTS namespace)
تنظیم
نام میزبان
(hostname) یا نام
دامنه (domainname) روی
سایر
بخشهای
سیستم
تأثیری
نخواهد
گذاشت. برای
جزئیات
بیشتر،
uts_namespaces(7)
را ببینید.
فضای نام IPC
(IPC namespace)
پردازه
دارای فضای
نام مستقلی
برای
صفهای
پیام POSIX و
همچنین
صفهای
پیام System V،
مجموعههای
سمافور و
بخشهای
حافظه
اشتراکی
خواهد بود.
برای
جزئیات
بیشتر،
ipc_namespaces(7)
را ببینید.
فضای نام
شبکه (network namespace)
پردازه
دارای
پشتههای
مستقل IPv4 و IPv6،
جدولهای
مسیریابی IP،
قوانین
دیوار آتش
(firewall)،
درختهای
دایرکتوری
/proc/net و
/sys/class/net،
سوکتها و
غیره خواهد
بود. برای
جزئیات
بیشتر،
network_namespaces(7)
را ببینید.
فضای نام PID
(PID namespace)
فرزندان
مجموعهای
از
نگاشتهای PID
به پردازه
جدا از
پردازه
nsenter
خواهند
داشت. به طور
پیشفرض در
صورت تغییر
فضای نام PID،
دستور
nsenter
اقدام به fork
میکند تا
برنامه
جدید و
فرزندانش
در یک فضای
نام PID یکسان
سهیم بوده و
برای
یکدیگر
قابل
مشاهده
باشند. در
صورت
استفاده از
--no-fork، برنامه
جدید بدون fork
کردن اجرا (exec)
خواهد شد.
برای
جزئیات
بیشتر،
pid_namespaces(7)
را ببینید.
فضای نام
کاربر (user namespace)
پردازه
مجموعهای
متمایز از
UIDها، GIDها و
قابلیتها
(capabilities) خواهد
داشت. برای
جزئیات
بیشتر،
user_namespaces(7)
را ببینید.
فضای نام
cgroup (cgroup namespace)
پردازه
نمایی
مجازیسازیشده
از
/proc/self/cgroup
خواهد داشت
و
سوارکردنهای
cgroup جدید از
ریشه cgroup فضای
نام سرچشمه
خواهند
گرفت. برای
جزئیات
بیشتر،
cgroup_namespaces(7)
را ببینید.
فضای نام
زمان (time namespace)
پردازه
میتواند
نمایی
متمایز از
CLOCK_MONOTONIC و/یا
CLOCK_BOOTTIME
داشته باشد
که با
استفاده از
/proc/self/timens_offsets قابل
تغییر است.
برای
جزئیات
بیشتر،
time_namespaces(7)
را ببینید.
اگر
میخواهید
یک فضای نام
جدید ایجاد
کنید، از unshare(1)
استفاده
کنید. پس از
ایجاد،
میتوانید
با استفاده
از nsenter
برنامهای
را در آن
اجرا کنید.
بسیاری از
گزینههای
زیر که به
فضاهای نام
مربوط
میشوند،
یک آرگومان
اختیاری file
میپذیرند.
این
آرگومان
باید یکی از
فایلهای
/proc/[pid]/ns/*
توصیفشده
در namespaces(7) یا
نام مسیر یک
اتصال
سوارکردن (bind
mount) باشد که
روی یکی از
آن فایلها
ایجاد شده
است.
-a, --all
ورود به
تمام
فضاهای نام
پردازه هدف
با استفاده
از مسیرهای
پیشفرض
فضای نام
/proc/<pid>/ns/*.
مسیرهای
پیشفرض
فضاهای نام
پردازه هدف
را میتوان
با
گزینههای
مختص فضای
نام
بازنویسی
کرد (به
عنوان
مثال،
--all --mount=path).
اگر فضای
نام کاربر
با فضای نام
کاربر فعلی
فراخوانکننده
یکسان
باشد،
نادیده
گرفته
خواهد شد.
این کار از
بازپسگیری
قابلیتها
(capabilities) توسط
فراخوانکنندهای
که آنها را
رها کرده
است، از
طریق
فراخوانی
setns(2) جلوگیری
میکند.
برای
جزئیات
بیشتر به
صفحه
راهنما
مراجعه
کنید.
-t, --target PID[:inode]
مشخص
کردن یک
پردازه هدف
برای
دریافت
زمینهها (contexts)
از آن.
مسیرهای
زمینههای
مشخصشده
توسط
PID به
ترتیب
عبارتند از:
/proc/pid/ns/mnt
فضای نام
سوارکردن
/proc/pid/ns/uts
فضای نام
UTS
/proc/pid/ns/ipc
فضای نام
IPC
/proc/pid/ns/net
فضای نام
شبکه
/proc/pid/ns/pid
فضای نام
PID
/proc/pid/ns/user
فضای نام
کاربر
/proc/pid/ns/cgroup
فضای نام
cgroup
/proc/pid/ns/time
فضای نام
زمان
/proc/pid/root
دایرکتوری
ریشه
/proc/pid/cwd
به ترتیب
دایرکتوری
کاری
به صورت
اختیاری،
یک پردازه
میتواند
با آن قالب
PID:inode
آدرسدهی
شود. مقدار
inode
توصیفکننده
فایل (file descriptor)
یکتای
پردازه را
مشخص
میکند.
برای
بازیابی
شماره inode یک
پردازه
میتوانید
از ابزار getino(1)
استفاده
کنید.
-m,
--mount[=file|=:nsid]
ورود به
فضای نام
سوارکردن.
اگر هیچ
آرگومانی
مشخص نشود،
به فضای نام
سوارکردن
پردازه هدف
وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام
سوارکردن
مشخصشده
توسط file یا nsid
وارد
میشود.
-u,
--uts[=file|=:nsid]
ورود به
فضای نام UTS.
اگر هیچ
آرگومانی
مشخص نشود،
به فضای نام UTS
پردازه هدف
وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام UTS
مشخصشده
توسط file یا nsid
وارد
میشود.
-i,
--ipc[=file|=:nsid]
ورود به
فضای نام IPC.
اگر هیچ
آرگومانی
مشخص نشود،
به فضای نام IPC
پردازه هدف
وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام IPC
مشخصشده
توسط file یا nsid
وارد
میشود.
-n,
--net[=file|=:nsid]
ورود به
فضای نام
شبکه. اگر
هیچ
آرگومانی
مشخص نشود،
به فضای نام
شبکه
پردازه هدف
وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام
شبکه
مشخصشده
توسط file یا nsid
وارد
میشود.
-N, --net-socket fd
ورود به
فضای نام
شبکه سوکت
پردازه هدف.
این گزینه
نیازمند
مشخص بودن
پردازه --target
است. از
لینوکس ۵.۶
به بعد
پشتیبانی
میشود.
-p,
--pid[=file|=:nsid]
ورود به
فضای نام PID.
اگر هیچ
آرگومانی
مشخص نشود،
به فضای نام PID
پردازه هدف
وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام PID
مشخصشده
توسط file یا nsid
وارد
میشود.
-U,
--user[=file|=:nsid]
ورود به
فضای نام
کاربر. اگر
هیچ
آرگومانی
مشخص نشود،
به فضای نام
کاربر
پردازه هدف
وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام
کاربر
مشخصشده
توسط file یا nsid
وارد
میشود.
همچنین
گزینههای
--setuid و --setgid را
ببینید.
--user-parent
ورود به
فضای نام
والد کاربر.
فضای نام
والد کاربر
از هر فضای
نام فعال
دیگری
دریافت
خواهد شد.
اگر با
گزینه --user
ترکیب شود،
فضای نام
والد کاربر
از فضای نام
کاربر
دریافت شده
و جایگزین
آن خواهد
شد.
-C,
--cgroup[=file|=:nsid]
ورود به
فضای نام cgroup.
اگر هیچ
آرگومانی
مشخص نشود،
به فضای نام
cgroup پردازه
هدف وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام cgroup
مشخصشده
توسط file یا nsid
وارد
میشود.
-T,
--time[=file|=:nsid]
ورود به
فضای نام
زمان. اگر
هیچ
آرگومانی
مشخص نشود،
به فضای نام
زمان
پردازه هدف
وارد
میشود. اگر
file یا :nsid
مشخص شده
باشد، به
فضای نام
زمان
مشخصشده
توسط file یا nsid
وارد
میشود.
-G, --setgid gid
تنظیم
شناسه
گروهی (GID) که
در فضای نام
واردشده
استفاده
خواهد شد و
رها کردن
گروههای
تکمیلی (supplementary groups).
دستور nsenter
همواره GID را
برای
فضاهای نام
کاربر
تنظیم
میکند که
پیشفرض آن 0
است. اگر
آرگومان "follow"
مشخص شود،
از GID پردازه
هدف
استفاده
میشود.
-S, --setuid uid
تنظیم
شناسه
کاربری (UID) که
در فضای نام
واردشده
استفاده
خواهد شد.
دستور nsenter
همواره UID را
برای
فضاهای نام
کاربر
تنظیم
میکند که
پیشفرض آن 0
است. اگر
آرگومان "follow"
مشخص شود،
از UID پردازه
هدف
استفاده
میشود.
--keep-caps
هنگامی
که گزینه --user
داده شده
باشد،
تضمین
میکند که
قابلیتهای
اعطاشده در
فضای نام
کاربر در
پردازه
فرزند حفظ
شوند.
--preserve-credentials
هنگام
ورود به
فضای نام
کاربر، UID و GID
را تغییر
نده.
پیشفرض
این است که
گروههای
تکمیلی رها
شده و GID و UID روی 0
تنظیم
شوند.
-r, --root[=directory]
تنظیم
دایرکتوری
ریشه. اگر
هیچ
دایرکتوری
مشخص نشود،
دایرکتوری
ریشه روی
دایرکتوری
ریشه
پردازه هدف
تنظیم
میشود. اگر
دایرکتوری
مشخص شود،
دایرکتوری
ریشه روی
دایرکتوری
مشخصشده
تنظیم
میشود.
دایرکتوری
directory
مشخصشده
قبل از
جابجایی به
فضاهای نام
درخواستی
باز
میشود.
-w, --wd[=directory]
تنظیم
دایرکتوری
کاری. اگر
هیچ
دایرکتوری
مشخص نشود،
دایرکتوری
کاری روی
دایرکتوری
کاری
پردازه هدف
تنظیم
میشود. اگر
دایرکتوری
مشخص شود،
دایرکتوری
کاری روی
دایرکتوری
مشخصشده
تنظیم
میشود.
دایرکتوری
directory
مشخصشده
قبل از
جابجایی به
فضاهای نام
درخواستی
باز
میشود، به
این معنی که
دایرکتوری
مشخصشده
به عنوان یک
"تونل" به
فضای نام
فعلی عمل
میکند.
همچنین --wdns
را ببینید.
-W, --wdns[=directory]
تنظیم
دایرکتوری
کاری.
دایرکتوری
directory پس از
جابجایی به
فضاهای نام
درخواستی و
پس از
فراخوانی
chroot(2) باز
میشود.
گزینههای
--wd و
--wdns
مانعةالجمع
هستند.
-e, --env
انتقال
متغیرهای
محیطی از
پردازه هدف
به پردازه
جدیدی که در
حال ایجاد
است. اگر این
گزینه
ارائه
نشود،
متغیرهای
محیطی
همانند
فضای نام
فعلی باقی
خواهند
ماند.
-F, --no-fork
قبل از
اجرای (exec)
برنامه
مشخصشده fork
نکن. به طور
پیشفرض،
هنگام ورود
به یک فضای
نام PID، دستور
nsenter قبل از
فراخوانی exec
اقدام به fork
میکند تا
تمام
فرزندان
نیز در فضای
نام PID
تازهواردشده
قرار
گیرند.
-Z, --follow-context
تنظیم
زمینه
امنیتی SELinux
مورد
استفاده
برای اجرای
پردازه
جدید بر
اساس
پردازه در
حال اجرایی
که توسط --target PID
مشخص شده
است. (بسته util-linux
باید با
پشتیبانی
از SELinux
کامپایل
شده باشد،
در غیر این
صورت این
گزینه در
دسترس
نخواهد
بود.)
-c, --join-cgroup
افزودن
پردازه
آغازشده به
cgroup پردازه
هدف.
-h, --help
نمایش
متن راهنما
و خروج.
-V, --version
نمایش
نسخه و
خروج.