/proc/pid/attr/ -
ویژگیها و
شناسههای
امنیتی
فرایند
برای
ماژولهای
امنیتی
لینوکس
- /proc/pid/attr/
- فایلهای
این
دایرکتوری
یک رابط
برنامهنویسی
کاربردی (API)
برای
ماژولهای
امنیتی
فراهم
میکنند.
محتویات
این
دایرکتوری
فایلهایی
هستند که
میتوان
برای تنظیم
ویژگیهای
مرتبط با
امنیت
آنها را
خواند و در
آنها نوشت.
این
دایرکتوری
برای
پشتیبانی
از SELinux اضافه
شد، اما هدف
این بود که
این API به
اندازه
کافی عمومی
باشد تا از
سایر
ماژولهای
امنیتی نیز
پشتیبانی
کند. برای
اهداف
توضیحی،
مثالهایی
از چگونگی
استفاده SELinux
از این
فایلها در
زیر ارائه
شده است.
- این
دایرکتوری
تنها در
صورتی وجود
دارد که
هسته با CONFIG_SECURITY
پیکربندی
شده باشد.
- /proc/pid/attr/current (از
لینوکس 2.6.0)
- محتویات
این فایل
بیانگر
ویژگیهای
امنیتی
فعلی
فرایند
است.
- در SELinux، این
فایل برای
دریافت
زمینه
امنیتی یک
فرایند
استفاده
میشود. پیش
از لینوکس
2.6.11، از این
فایل
نمیشد
برای تنظیم
زمینه
امنیتی
استفاده
کرد (عملیات
نوشتن
همواره رد
میشد)، چرا
که SELinux
گذارهای
امنیتی
فرایند را
به execve(2) محدود
کرده بود
(توضیحات
مربوط به
/proc/pid/attr/exec در
ادامه را
ببینید). از
لینوکس 2.6.11، SELinux
این
محدودیت را
برداشت و
شروع به
پشتیبانی
از عملیات
«تنظیم» (set)
از طریق
نوشتن در
این گره در
صورت مجاز
بودن توسط
خطمشی
کرد؛ اگرچه
استفاده از
این عملیات
فقط برای
برنامههایی
مناسب است
که برای حفظ
هرگونه
تفکیک مورد
نظر بین
زمینههای
امنیتی
قدیم و جدید
مورد
اعتماد
باشند.
- پیش از
لینوکس 2.6.28، SELinux
به ریسهها
درون یک
فرایند
چندریسهای
اجازه
نمیداد
زمینه
امنیتی خود
را از طریق
این گره
تنظیم
کنند، چرا
که این امر
موجب
ناپایداری
و
ناسازگاری
میان
زمینههای
امنیتی
ریسههایی
میشد که
فضای حافظه
یکسانی را
به اشتراک
میگذاشتند.
از لینوکس
2.6.28، SELinux این
محدودیت را
برداشت و
پشتیبانی
از عملیات
«تنظیم» را
برای
ریسهها
درون یک
فرایند
چندریسهای
آغاز کرد،
مشروط بر
اینکه
زمینه
امنیتی
جدید توسط
زمینه
امنیتی
قدیم مقید
(bounded) شده
باشد، جایی
که رابطه
قیدشده در
خطمشی
تعریف شده و
تضمین
میکند که
زمینه
امنیتی
جدید دارای
زیرمجموعهای
از مجوزهای
زمینه
امنیتی
قدیم است.
- سایر
ماژولهای
امنیتی نیز
ممکن است
پشتیبانی
از عملیات
«تنظیم» از
طریق نوشتن
در این گره
را انتخاب
کنند.
- /proc/pid/attr/exec (از
لینوکس 2.6.0)
- این فایل
بیانگر
ویژگیهایی
است که پس
از فراخوان
بعدی execve(2) به
فرایند
تخصیص
مییابد.
- در SELinux، این
فایل برای
پشتیبانی
از گذار
نقش/دامنه
مورد نیاز
است و execve(2)
نقطه
ترجیحی
برای انجام
چنین
گذارهایی
است زیرا
کنترل
بهتری را بر
راهاندازی
اولیه
فرایند در
برچسب
امنیتی
جدید و
وراثت
وضعیت
ارائه
میدهد. در
SELinux، این
ویژگی پس از
execve(2)
بازنشانی
میشود تا
برنامه
جدید برای
هر فراخوان
execve(2) که ممکن
است اجرا
کند، به
رفتار
پیشفرض
بازگردد. در
SELinux، یک
فرایند فقط
میتواند
ویژگی /proc/pid/attr/exec
مربوط به
خودش را
تنظیم کند.
- /proc/pid/attr/fscreate (از
لینوکس 2.6.0)
- این فایل
بیانگر
ویژگیهایی
است که به
فایلهای
ایجادشده
با
فراخوانهای
بعدی open(2)،
mkdir(2)، symlink(2) و mknod(2)
اختصاص
مییابد.
- سامانه SELinux از
این فایل
برای
پشتیبانی
از ایجاد یک
فایل (با
استفاده از
فراخوانهای
سیستمی
یادشده) در
وضعیتی امن
بهره
میبرد تا
هیچ خطری
برای به دست
آوردن
دسترسی
نامناسب
بین زمان
ایجاد و
زمان تنظیم
ویژگیها
وجود
نداشته
باشد. در SELinux،
این ویژگی
پس از execve(2)
بازنشانی
میشود تا
برنامه
جدید برای
هر فراخوان
ایجاد
فایلی که
ممکن است
اجرا کند به
رفتار
پیشفرض
بازگردد،
اما این
ویژگی در
طول چندین
فراخوان
ایجاد فایل
درون یک
برنامه
پایدار
خواهد ماند
مگر اینکه
صراحتاً
بازنشانی
شود. در SELinux،
یک فرایند
فقط
میتواند
ویژگی
/proc/pid/attr/fscreate
مربوط به
خودش را
تنظیم کند.
- /proc/pid/attr/keycreate (از
لینوکس 2.6.18)
- اگر
فرایندی یک
زمینه
امنیتی در
این فایل
بنویسد،
تمام
کلیدهایی
که پس از آن
ایجاد
میشوند
(add_key(2)) با این
زمینه
برچسبگذاری
خواهند شد.
برای
اطلاعات
بیشتر،
فایل منبع
هسته
Documentation/security/keys/core.rst (یا
فایل Documentation/security/keys.txt
بین لینوکس
3.0 و لینوکس 4.13،
یا Documentation/keys.txt پیش
از لینوکس 3.0)
را ببینید.
- /proc/pid/attr/prev (از
لینوکس 2.6.0)
- این فایل
شامل زمینه
امنیتی
فرایند پیش
از آخرین
فراخوان execve(2)
است؛ یعنی
مقدار قبلی
/proc/pid/attr/current.
- /proc/pid/attr/socketcreate (از
لینوکس 2.6.18)
- اگر
فرایندی یک
زمینه
امنیتی در
این فایل
بنویسد،
تمام
سوکتهایی
که پس از آن
ایجاد
میشوند با
این زمینه
برچسبگذاری
خواهند شد.