proc_pid_root(5) File Formats Manual proc_pid_root(5)

proc_pid_root - پیوند نمادین به دایرکتوری ریشه فرآیند

/proc/pid/root/
یونیکس و لینوکس از ایده یک ریشه سیستم‌فایل اختصاصی برای هر فرآیند که توسط فراخوان سیستمی chroot(2) تنظیم می‌شود، پشتیبانی می‌کنند. این فایل یک پیوند نمادین است که به دایرکتوری ریشه فرآیند اشاره می‌کند و رفتاری مشابه با exe و fd/* دارد.
با این حال، توجه داشته باشید که این فایل صرفاً یک پیوند نمادین نیست. این فایل همان نمایی از سیستم‌فایل (شامل فضاهای نام و مجموعه اتصالات اختصاصی فرآیند) را ارائه می‌دهد که خود فرآیند دارد. یک مثال این نکته را روشن می‌کند. در یک ترمینال، پوسته‌ای را در فضاهای نام کاربری و اتصالات (mount) جدید آغاز می‌کنیم و در آن پوسته چند اتصال جدید ایجاد می‌کنیم:

$ PS1='sh1# ' unshare -Urnm
sh1# mount -t tmpfs tmpfs /etc  # Mount empty tmpfs at /etc
sh1# mount --bind /usr /dev     # Mount /usr at /dev
sh1# echo $$
27123

در پنجره ترمینال دوم، در فضای نام اتصال اولیه، به محتویات اتصالات متناظر در فضاهای نام اولیه و جدید نگاه می‌کنیم:

$ PS1='sh2# ' sudo sh
sh2# ls /etc | wc -l                  # In initial NS
309
sh2# ls /proc/27123/root/etc | wc -l  # /etc in other NS
0                                     # The empty tmpfs dir
sh2# ls /dev | wc -l                  # In initial NS
205
sh2# ls /proc/27123/root/dev | wc -l  # /dev in other NS
11                                    # Actually bind
                                      # mounted to /usr
sh2# ls /usr | wc -l                  # /usr in initial NS
11

در یک فرآیند چندنخی، در صورتی که نخ اصلی پیش‌تر پایان یافته باشد (معمولاً با فراخوانی pthread_exit(3))، محتویات پیوند نمادین /proc/pid/root در دسترس نخواهد بود.
مجوز ارجاع‌زدایی یا خواندن (readlink(2)) این پیوند نمادین توسط بررسی حالت دسترسی ptrace به نام PTRACE_MODE_READ_FSCREDS اداره می‌شود؛ به ptrace(2) مراجعه کنید.

proc(5)

2024-05-02 Linux man-pages 6.9.1