| podman-unshare(1) | General Commands Manual | podman-unshare(1) |
نام (NAME)
podman-unshare - اجرای یک دستور درون فضای نام کاربری تغییریافته
خلاصه دستور (SYNOPSIS)
podman unshare [گزینهها] [دستور]
توضیحات (DESCRIPTION)
فرایندی را (بهطور پیشفرض، $SHELL) درون یک فضای نام کاربری (user namespace) جدید اجرا میکند. این فضای نام کاربری بهگونهای پیکربندی میشود که شناسه کاربری (UID) و شناسه گروهی اصلی (GID) کاربر فراخواننده به ترتیب برابر با UID 0 و GID 0 به نظر برسند. هر محدودهای که با آن کاربر و گروه در /etc/subuid و /etc/subgid مطابقت داشته باشد نیز به کمک برنامههای کمکی newuidmap(1) و newgidmap(1) با همان هویت خودشان نگاشت میشوند.
دستور podman unshare برای عیبیابی عملیاتهای بدون دسترسی ریشه (unprivileged) و برای پاکسازی دستی فضای ذخیرهسازی و سایر دادههای مربوط به ایمیجها و کانتینرها مفید است.
همچنین برای استفاده از دستور podman mount کاربرد دارد. اگر یک کاربر غیرریشه بخواهد کانتینری را سوار کرده و با آن کار کند، باید podman unshare را اجرا نماید. اجرای podman mount برای کاربران غیرریشه با شکست مواجه میشود مگر اینکه کاربر درون یک نشست podman unshare در حال اجرا باشد.
نشست unshare دو متغیر محیطی را تعریف میکند:
- CONTAINERS_GRAPHROOT: مسیر دادههای پایدار (persistent) کانتینر.
- CONTAINERS_RUNROOT: مسیر دادههای موقت و فرار (volatile) کانتینر.
مهم: این دستور در کلاینت ریموت پادمن در دسترس نیست.
گزینهها (OPTIONS)
--help, -h
چاپ بیانیه راهنمای استفاده
--rootless-netns
پیوستن به فضای نام شبکه بدون ریشه (rootless network namespace) که برای شبکهبندی netavark استفاده میشود. این گزینه میتواند برای اتصال به یک کانتینر بدون ریشه از طریق نشانی IP (شبکهبندی bridge) استفاده شود. در غیر این صورت، این کار از فضای نام شبکه میزبان امکانپذیر نیست.
کدهای خروج (EXIT CODES)
کد خروج از podman unshare اطلاعاتی درباره علت شکست اجرای کانتینر یا پایان یافتن آن ارائه میدهد. هنگامی که دستورات podman unshare با یک کد غیر صفر خارج میشوند، کدهای خروج از استاندارد chroot پیروی میکنند (به زیر مراجعه کنید):
125 خطا از خود پادمن است
$ podman unshare --foo; echo $? Error: unknown flag: --foo 125
126 هنگام اجرای یک دستور محصور و زمانی که این دستور قابل فراخوانی نیست
$ podman unshare /etc; echo $? Error: fork/exec /etc: permission denied 126
127 هنگام اجرای یک دستور محصور و زمانی که این دستور یافت نمیشود
$ podman unshare foo; echo $? Error: fork/exec /usr/bin/bogus: no such file or directory 127
کد خروج کد خروج دستور محصور
$ podman unshare /bin/sh -c 'exit 3'; echo $? 3
مثالها (EXAMPLES)
اجرای دستور مشخصشده درون فضای نام کاربری بدون ریشه:
$ podman unshare id uid=0(root) gid=0(root) groups=0(root),65534(nobody)
نمایش نگاشتهای فضای نام کاربری برای کانتینرهای بدون ریشه:
$ podman unshare cat /proc/self/uid_map /proc/self/gid_map
0 1000 1
1 10000 65536
0 1000 1
1 10000 65536
نمایش اطلاعات netns بدون ریشه در فضای نام کاربری برای کانتینرهای بدون ریشه:
$ podman unshare --rootless-netns ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tap0: <BROADCAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether aa:8c:0b:73:98:f6 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.100/24 brd 10.0.2.255 scope global tap0
valid_lft forever preferred_lft forever
inet6 fd00::a88c:bff:fe73:98f6/64 scope global dynamic mngtmpaddr
valid_lft 86389sec preferred_lft 14389sec
inet6 fe80::a88c:bff:fe73:98f6/64 scope link
valid_lft forever preferred_lft forever
همچنین ببینید (SEE ALSO)
podman(1), podman-mount(1), namespaces(7), newuidmap(1), newgidmap(1), user_namespaces(7)