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) مراجعه
کنید.