keyrings(7)

الاسم
keyrings - وسيلة إدارة واستبقاء المفاتيح داخل النواة

الوصف
تعد وسيلة إدارة المفاتيح في لينكس بالدرجة الأولى طريقة لمكونات النواة المختلفة لاستبقاء بيانات الأمان، ومفاتيح الاستيثاق، ومفاتيح التعمية، وبيانات أخرى أو وضعها في خبيئة داخل النواة.

وُفرت واجهات استدعاء نظام لتمكين برامج مساحة المستخدم من إدارة تلك الكائنات واستخدام هذه الوسيلة لأغراضها الخاصة؛ انظر add_key(2)، وrequest_key(2)، وkeyctl(2).

تتوفر مكتبة وبعض الأدوات المساعدة في مساحة المستخدم للسماح بالوصول إلى هذه الوسيلة. انظر keyctl(1)، وkeyctl(3)، وkeyutils(7) للمزيد من المعلومات.

  المفاتيح
للمفتاح السمات التالية:

الرقم التسلسلي (المعرف)
    هذا مقبض عدد صحيح فريد يُشار به إلى المفتاح في استدعاءات النظام. يُشار إلى الرقم التسلسلي أحياناً بمرادف معرف المفتاح. برمجياً، تُمثل أرقام المفاتيح التسلسلية باستخدام النوع key_serial_t.

Type
    يحدد نوع المفتاح صنف البيانات التي يمكن حجزها في المفتاح، وكيفية معالجة محتوى المفتاح المقترح، وكيفية استخدام الحمولة.

    يتوفر عدد من الأنواع العامة، بالإضافة إلى بعض الأنواع المتخصصة المعرفة بواسطة مكونات محددة في النواة.

الوصف (الاسم)
    وصف المفتاح هو سلسلة نصية قابلة للطباعة تُستخدم كمصطلح بحث للمفتاح (بالاشتراك مع نوع المفتاح) وأيضاً كاسم عرض. أثناء البحث، قد يطابق الوصف جزئياً أو كلياً.

الحمولة (البيانات)
    الحمولة هي المحتوى الفعلي للمفتاح. تُضبط عادةً عند إنشاء المفتاح، ولكن من الممكن للنواة إجراء استدعاء صاعد لمساحة المستخدم لإنهاء تجسيد المفتاح إذا لم يكن معروفاً للنواة عند طلبه. لمزيد من التفاصيل، انظر request_key(2).

    يمكن قراءة حمولة المفتاح وتحديثها إذا كان نوع المفتاح يدعم ذلك وإذا مُنح المستدعِي الصلاحية المناسبة.

حقوق الوصول
    كما هو الحال في الملفات، لكل مفتاح معرف مستخدم مالك، ومعرف مجموعة مالكة، ولصيقة أمان. لكل مفتاح أيضاً مجموعة من الصلاحيات، رغم أنها أكثر من صلاحيات ملف UNIX العادي، وهناك فئة إضافية (الحائز) تتجاوز المستخدم والمجموعة والآخرين المعتادين (انظر الحيازة أدناه).

    لاحظ أن المفاتيح تخضع للتحكم في الحصص، لأنها تتطلب ذاكرة نواة غير قابلة للتبديل. يحدد معرف المستخدم المالك الحصة التي سيُخصم منها.

وقت الانتهاء
    يمكن ضبط وقت انتهاء لكل مفتاح. عند الوصول إلى ذلك الوقت، يوسم المفتاح بأنه منتهٍ وتفشل محاولات الوصول إليه بالخطأ EKEYEXPIRED. إذا لم يُحذف أو يُحدث أو يُستبدل، فإنه بعد مرور وقت محدد، يُزال المفتاح المنتهي آلياً (جمع المهملات) مع جميع الروابط المؤدية إليه، وتفشل محاولات الوصول إليه بالخطأ ENOKEY.

عدد المراجع
    لكل مفتاح عدد مراجع. يُشار إلى المفاتيح بواسطة حمالات المفاتيح (keyrings)، وبواسطة المستخدمين النشطين حالياً، وبواسطة اعتمادات العملية. عندما يصل عدد المراجع إلى الصفر، يُجدول المفتاح لجمع المهملات.

  أنواع المفاتيح
توفر النواة عدة أنواع رئيسة من المفاتيح:

"keyring"
    حمالات المفاتيح هي مفاتيح خاصة تخزن مجموعة من الروابط لمفاتيح أخرى (بما في ذلك حمالات مفاتيح أخرى)، وهي تشبه الدليل الذي يحتوي على روابط لملفات. الغرض الرئيس من حمالة المفاتيح هو منع المفاتيح الأخرى من الخضوع لجمع المهملات لعدم وجود ما يشير إليها.

    حمالات المفاتيح التي تبدأ أوصافها (أسماؤها) بنقطة ('.') محجوزة للتنفيذ.

"user"
    هذا نوع مفتاح عام الغرض. يُحتفظ بالمفتاح بالكامل داخل ذاكرة النواة. يمكن قراءة الحمولة وتحديثها بواسطة تطبيقات مساحة المستخدم.

    الحمولة للمفاتيح من هذا النوع هي كتلة بيانات عشوائية تصل إلى 32,767 بايت.

    يمكن أن يكون الوصف أي سلسلة نصية صالحة، وإن كان من المفضل أن يبدأ ببادئة مفصولة بنقطتين تمثل الخدمة التي يهتم بها المفتاح (مثل "afs:mykey").

"logon" (منذ لينكس 3.3)
    نوع المفتاح هذا هو نفسه "user" جوهرياً، ولكنه لا يوفر إمكانية القراءة (أي عملية KEYCTL_READ في keyctl(2))، مما يعني أن حمولة المفتاح لا تظهر أبداً من مساحة المستخدم. هذا مناسب لتخزين أزواج اسم المستخدم وكلمة المرور التي يجب ألا تكون قابلة للقراءة من مساحة المستخدم.

    يجب أن يبدأ وصف مفتاح "logon" ببادئة غير فارغة مفصولة بنقطتين غرضها تحديد الخدمة التي ينتمي إليها المفتاح. (لاحظ أن هذا يختلف عن مفاتيح النوع "user"، حيث يوصى بتضمين بادئة ولكن لا يُفرض ذلك).

"big_key" (منذ لينكس 3.13)
    يشبه نوع المفتاح هذا نوع "user"، ولكنه قد يحمل حمولة يصل حجمها إلى 1 ميجابايت. هذا النوع مفيد لأغراض مثل الاحتفاظ بخبائث تذاكر كيربيروس (Kerberos).

    قد تُخزن بيانات الحمولة في نظام ملفات tmpfs بدلاً من ذاكرة النواة، إذا تجاوز حجم البيانات الكلفة الإضافية لتخزين البيانات في نظام الملفات. (يتطلب تخزين البيانات في نظام الملفات تخصيص هياكل نظام ملفات في النواة. يحدد حجم هذه الهياكل عتبة الحجم التي يُستخدم فوقها أسلوب تخزين tmpfs.) منذ لينكس 4.8، تُعمى بيانات الحمولة عند تخزينها في tmpfs، مما يمنع كتابتها غير معماة في مساحة التبادل (swap).

تتوفر أيضاً أنواع مفاتيح أكثر تخصصاً، ولكن لم تُناقش هنا لأنها ليست مخصصة لاستخدام مساحة المستخدم العادي.

أسماء أنواع المفاتيح التي تبدأ بنقطة ('.') محجوزة للتنفيذ.

  حمالات المفاتيح
كما ذُكر سابقاً، حمالات المفاتيح هي نوع خاص من المفاتيح يحتوي على روابط لمفاتيح أخرى (قد تشمل حمالات مفاتيح أخرى). يمكن أن تُربط المفاتيح بواسطة عدة حمالات. يمكن اعتبار حمالات المفاتيح مشابهة لأدلة UNIX حيث يحتوي كل دليل على مجموعة من الروابط الصلبة لملفات.

قد تُطبق عمليات مختلفة (استدعاءات نظام) على حمالات المفاتيح فقط:

الإضافة
    يمكن إضافة مفتاح إلى حمالة مفاتيح عبر استدعاءات النظام التي تنشئ المفاتيح. هذا يمنع حذف المفتاح الجديد فوراً عندما يحرر استدعاء النظام آخر مرجع له للمفتاح.

الربط
    يمكن إضافة رابط إلى حمالة مفاتيح يشير إلى مفتاح معروف مسبقاً، بشرط ألا يؤدي ذلك إلى إنشاء حلقة مرجعية ذاتية.

فك الربط
    يمكن إزالة رابط من حمالة مفاتيح. عند إزالة آخر رابط لمفتاح ما، يُجدول هذا المفتاح للحذف بواسطة جامع المهملات.

التصفية
    يمكن إزالة كافة الروابط من حمالة مفاتيح.

البحث
    يمكن اعتبار حمالة المفاتيح جذراً لشجرة أو شجرة فرعية حيث تشكل حمالات المفاتيح الفروع والمفاتيح الأخرى الأوراق. يمكن البحث في هذه الشجرة عن مفتاح يطابق نوعاً ووصفاً معينين.

انظر keyctl_clear(3)، وkeyctl_link(3)، وkeyctl_search(3)، وkeyctl_unlink(3) للمزيد من المعلومات.

  إرساء المفاتيح
لمنع مفتاح من الخضوع لجمع المهملات، يجب إرساؤه لإبقاء عدد مراجعة مرتفعاً عندما لا يكون قيد الاستخدام النشط من قبل النواة.

تُستخدم حمالات المفاتيح لإرساء مفاتيح أخرى: كل رابط هو مرجع للمفتاح. لاحظ أن حمالات المفاتيح نفسها هي مجرد مفاتيح وتخضع أيضاً لنفس متطلبات الإرساء لمنع جمعها كمهملات.

توفر النواة عدداً من حمالات مفاتيح الإرساء. لاحظ أن بعض هذه الحمالات لن تُنشأ إلا عند أول وصول إليها.

حمالات مفاتيح العملية
    تشير اعتمادات العملية نفسها إلى حمالات مفاتيح بدلالات محددة. تُثبت هذه الحمالات طالما كانت مجموعة الاعتمادات موجودة، وهو ما يكون عادةً طوال فترة وجود العملية.

    هناك ثلاث حمالات مفاتيح بقواعد توريث ومشاركة مختلفة: session-keyring(7) (تُورث وتتشاركها جميع العمليات الأبناء)، وprocess-keyring(7) (تتشاركها جميع الخيوط في عملية ما)، وthread-keyring(7) (خاصة بخيط معين).

    كبديل لاستخدام معرفات حمالات المفاتيح الفعلية، في استدعاءات add_key(2)، وkeyctl(2)، وrequest_key(2)، يمكن استخدام قيم الحمالات الخاصة KEY_SPEC_SESSION_KEYRING، وKEY_SPEC_PROCESS_KEYRING، وKEY_SPEC_THREAD_KEYRING للإشارة إلى نسخ المستدعِي الخاصة من هذه الحمالات.

حمالات مفاتيح المستخدم
    لكل معرف مستخدم (UID) معروف للنواة سجل يحتوي على حمالتي مفاتيح: user-keyring(7) وuser-session-keyring(7). تظل هذه الحمالات موجودة طالما ظل سجل UID موجوداً في النواة.

    كبديل لاستخدام معرفات حمالات المفاتيح الفعلية، في استدعاءات add_key(2)، وkeyctl(2)، وrequest_key(2)، يمكن استخدام قيم الحمالات الخاصة KEY_SPEC_USER_KEYRING وKEY_SPEC_USER_SESSION_KEYRING للإشارة إلى نسخ المستدعِي الخاصة من هذه الحمالات.

    يُوضع رابط لحمالة مفاتيح المستخدم في حمالة مفاتيح جلسة جديدة بواسطة pam_keyinit(8) عند بدء جلسة ولوج جديدة.

حمالات المفاتيح المستديمة
    تتوفر persistent-keyring(7) لكل UID معروف للنظام. قد تستمر إلى ما بعد حياة سجل UID المذكور سابقاً، ولكن لها وقت انتهاء مضبوط بحيث تُنظف آلياً بعد وقت محدد. تسمح حمالة المفاتيح المستديمة، على سبيل المثال، لسكربتات cron(8) باستخدام الاعتمادات المتبقية في حمالة المفاتيح المستديمة بعد خروج المستخدم.

    لاحظ أن وقت انتهاء حمالة المفاتيح المستديمة يُصفر في كل مرة يُطلب فيها المفتاح المستديم.

حمالات مفاتيح خاصة
    There are special keyrings owned by the kernel that can anchor keys for special purposes. An example of this is the system keyring used for holding encryption keys for module signature verification.

    تكون حمالات المفاتيح الخاصة هذه عادةً مغلقة أمام التعديل المباشر من مساحة المستخدم.

"حمالة مفاتيح المجموعة" التي كان مخططاً لها أصلاً، لتخزين المفاتيح المرتبطة بكل معرف مجموعة (GID) معروف للنواة، لم تُنفذ حتى الآن، ومن غير المرجح تنفيذها. ومع ذلك، عُرف الثابت KEY_SPEC_GROUP_KEYRING لهذه الحمالة.

  الحيازة
يعد مفهوم الحيازة مهماً لفهم نموذج أمان حمالات المفاتيح. تُحدد حيازة الخيط لمفتاح ما وفقاً للقواعد التالية:

(1) أي مفتاح أو حمالة مفاتيح لا تمنح صلاحية البحث للمستدعِي تُتجاهل في جميع القواعد التالية.

(2) يحوز الخيط على session-keyring(7)، وprocess-keyring(7)، وthread-keyring(7) الخاصة به مباشرة لأن اعتماداته تشير إلى تلك الحمالات.

(3) إذا كانت حمالة المفاتيح محازة، فإن أي مفتاح تربط به يكون محازاً أيضاً.

(4) إذا كان أي مفتاح تربط به الحمالة هو نفسه حمالة مفاتيح، فتطبق القاعدة (3) تكرارياً.

(5) إذا وُجه استدعاء صاعد لعملية ما من النواة لتجسيد مفتاح (انظر request_key(2))، فإنها تحوز أيضاً حمالات مفاتيح الطالب كما في القاعدة (1) كما لو كانت هي الطالب.

لاحظ أن الحيازة ليست خاصية جوهرية للمفتاح، بل يجب حسابها في كل مرة يُحتاج فيها للمفتاح.

صُممت الحيازة للسماح للبرامج التي تحمل وسم set-user-ID والتي تعمل من صدفة المستخدم مثلاً بالوصول إلى مفاتيح المستخدم. إن منح الصلاحيات لحائز المفتاح مع منعها عن مالك المفتاح ومجموعته يسمح بمنع الوصول إلى المفاتيح على أساس تطابق UID وGID.

عند إنشاء حمالة مفاتيح الجلسة، يضيف pam_keyinit(8) رابطاً لـ user-keyring(7)، وبذلك تصبح حمالة مفاتيح المستخدم وكل ما تحتويه محازة مبدئياً.

  حقوق الوصول
لكل مفتاح السمات الأمنية التالية:

•   معرف المستخدم المالك

•   معرف المجموعة المسموح لها بالوصول إلى المفتاح

•   لصيقة أمان

•   قناع صلاحيات

يحتوي قناع الأذونات على أربع مجموعات من الحقوق. أول ثلاث مجموعات مانعة تبادليًا. واحدة وواحدة فقط ستكون سارية لفحص وصول معين. وترتيب هذه المجموعات الثلاث حسب الأولوية التنازلية هو:

user
    تحدد هذه المجموعة الحقوق الممنوحة إذا تطابق معرف مستخدم المفتاح مع معرف مستخدم نظام الملفات الخاص بـ المستدعِي.

group
    تحدد هذه المجموعة الحقوق الممنوحة إذا لم يتطابق معرف المستخدم وتطابق معرف مجموعة المفتاح مع معرف مجموعة نظام الملفات الخاص بـ المستدعِي أو أحد معرفات المجموعات التكميلية لـ المستدعِي.

other
    تحدد هذه المجموعة الحقوق الممنوحة في حال لم يتطابق معرف مستخدم المفتاح ولا معرف مجموعته.

مجموعة الحقوق الرابعة هي:

possessor
    تحدد هذه المجموعة الحقوق الممنوحة إذا تقرر أن المفتاح في حوزة المستدعِي.

مجموعة الحقوق الكاملة للمفتاح هي اتحاد أي من المجموعات الثلاث الأولى القابلة للتطبيق بالإضافة إلى المجموعة الرابعة إذا كان المفتاح ممسوكًا.

مجموعة الحقوق التي يمكن منحها في كل من الأقنعة الأربعة هي كما يلي:

view
    يمكن قراءة سمات المفتاح. يشمل ذلك النوع، والوصف، وحقوق الوصول (باستثناء لصيقة الأمان).

read
    بخصوص المفتاح: يمكن قراءة حمولة المفتاح. وبخصوص حلقة المفاتيح: يمكن قراءة قائمة الأرقام التسلسلية (المفاتيح) التي ترتبط بها حلقة المفاتيح.

write
    يمكن تحديث حمولة المفتاح ويمكن إبطاله. وبالنسبة لحلقة المفاتيح، يمكن إضافة الروابط إليها أو إزالتها منها، ويمكن مسح حلقة المفاتيح تمامًا (تُزال جميع الروابط)،

search
    بخصوص المفتاح (أو حلقة مفاتيح): يمكن العثور على المفتاح عبر البحث. وبخصوص حلقة المفاتيح: يمكن البحث في المفاتيح وحلقات المفاتيح المرتبطة بحلقة المفاتيح.

link
    يمكن إنشاء روابط من حلقات المفاتيح إلى المفتاح. الرابط المبدئي للمفتاح الذي يُنشأ عند تكوين المفتاح لا يتطلب هذا الإذن.

setattr
    يمكن تغيير تفاصيل الملكية ولصيقة أمان المفتاح، ويمكن ضبط وقت انتهاء صلاحية المفتاح، ويمكن إبطال المفتاح.

بالإضافة إلى حقوق الوصول، قد تمنع أي وحدة أمن لينكس (LSM) نشطة الوصول إلى مفتاح إذا أملت سياستها ذلك. قد يُعطى المفتاح لصيقة أمان أو سمة أخرى بواسطة LSM؛ ويمكن استرداد هذه اللصيقة عبر keyctl_get_security(3).

انظر keyctl_chown(3)، و keyctl_describe(3)، و keyctl_get_security(3)، و keyctl_setperm(3)، و selinux(8) لمزيد من المعلومات.

  البحث عن المفاتيح
إحدى الميزات الرئيسة لمرفق إدارة مفاتيح لينكس هي القدرة على العثور على مفتاح تحتفظ به عملية ما. استدعاء النظام request_key(2) هو نقطة الوصول الرئيسة لتطبيقات مساحة المستخدم للعثور على مفتاح. (داخليًا، تملك النواة شيئًا مشابهًا متاحًا للاستخدام من المكونات الداخلية التي تستخدم المفاتيح.)

تعمل خوارزمية البحث كما يلي:

(1) تُبحث حلقات مفاتيح العملية بالترتيب التالي: thread-keyring(7) إن وجدت، ثم process-keyring(7) إن وجدت، ثم إما session-keyring(7) إن وجدت أو user-session-keyring(7) إن وجدت تلك.

(2) إذا كان المستدعِي عملية استُدعيت بواسطة آلية upcall الخاصة بـ request_key(2)، فستُبحث حلقات مفاتيح المستدعِي الأصلي لـ request_key(2) أيضًا.

(3) البحث في شجرة حلقات المفاتيح يكون بترتيب العرض أولاً: تُبحث كل حلقة مفاتيح أولاً عن مطابقة، ثم تُبحث حلقات المفاتيح المشار إليها بواسطة حلقة المفاتيح تلك.

(4) إذا وُجد مفتاح مطابق وصالح، ينتهي البحث ويُعاد ذلك المفتاح.

(5) إذا وُجد مفتاح مطابق ملحق به حالة خطأ، تُسجل حالة الخطأ تلك ويستمر البحث.

(6) إذا لم يُعثر على مفتاح مطابق صالح، تُعاد أول حالة خطأ سُجلت؛ وإلا، يُعاد خطأ ENOKEY.

من الممكن أيضًا البحث في حلقة مفاتيح محددة، وفي هذه الحالة تنطبق الخطوات من (3) إلى (6) فقط.

انظر request_key(2) و keyctl_search(3) لمزيد من المعلومات.

  إنشاء المفاتيح عند الطلب
إذا تعذر العثور على مفتاح، فإن request_key(2) سيقوم، إذا أُعطي معامل callout_info، بإنشاء مفتاح جديد ثم إجراء upcall إلى مساحة المستخدم لتجسيد المفتاح. يسمح هذا بإنشاء المفاتيح حسب الحاجة.

عادةً ما يتضمن ذلك قيام النواة بإنشاء عملية جديدة تنفذ برنامج request-key(8)، والذي سينفذ بدوره المعالج المناسب بناءً على إعداده.

يُمرر إلى المعالج مفتاح استيثاق خاص يسمح له وحده بتجسيد المفتاح الجديد. يُستخدم هذا أيضًا للسماح لعمليات البحث التي يجريها برنامج المعالج بالبحث في حلقات مفاتيح طالب الخدمة أيضًا.

انظر request_key(2)، و keyctl_assume_authority(3)، و keyctl_instantiate(3)، و keyctl_negate(3)، و keyctl_reject(3)، و request-key(8)، و request-key.conf(5) لمزيد من المعلومات.

  المستخدمون
يحتوي مرفق إدارة مفاتيح لينكس على عدد من المستخدمين والاستخدامات، لكنه ليس مقتصرًا على تلك الموجودة حاليًا.

مستخدمو هذا المرفق داخل النواة يشملون:

أنظمة ملفات الشبكة - DNS
    تستخدم النواة آلية upcall التي توفرها المفاتيح لإجراء upcall إلى مساحة المستخدم للقيام بعمليات بحث DNS ثم تخزين النتائج في الخبيئة.

AF_RXRPC و kAFS - الاستيثاق
    يستخدم بروتوكول الشبكة AF_RXRPC ونظام ملفات AFS داخل النواة المفاتيح لتخزين التذكرة اللازمة لإجراء حركة مرور مؤمنة أو معمّاة. وتُبحث هذه التذاكر لاحقًا بواسطة عمليات الشبكة على AF_RXRPC وعمليات نظام الملفات على kAFS.

NFS - مطابقة معرف المستخدم
    يستخدم نظام ملفات NFS المفاتيح لتخزين مطابقات معرفات المستخدمين الخارجية بمعرفات المستخدمين المحلية.

CIFS - كلمة المرور
    يستخدم نظام ملفات CIFS المفاتيح لتخزين كلمات المرور للوصول إلى المشاركات البعيدة.

التحقق من الوحدة
    يمكن جعل عملية بناء النواة توقع الوحدات تعمويًا. ويُفحص ذلك التوقيع عند تحميل الوحدة.

مستخدمو هذا المرفق في مساحة المستخدم يشملون:

تخزين مفاتيح كيربيروس
    يمكن لمرفق MIT Kerberos 5 ‏(libkrb5) استخدام المفاتيح لتخزين رموز الاستيثاق التي يمكن جعلها تُنظف آليًا بعد وقت محدد من آخر استخدام للمستخدم لها، ولكن حتى ذلك الحين يسمح لها بالبقاء بعد تسجيل خروج المستخدم لكي تتمكن سكربتات cron(8) من استخدامها.

الملفات
توفر النواة ملفات /proc متنوعة تعرض معلومات عن المفاتيح أو تحدد قيودًا على استخدام المفاتيح.

/proc/keys (منذ لينكس 2.6.10)
    يعرض هذا الملف قائمة بالمفاتيح التي يملك خيط القراءة إذن view لها، ويوفر معلومات متنوعة عن كل مفتاح. لا يشترط أن يمسك الخيط بالمفتاح ليكون مرئيًا في هذا الملف.

    المفاتيح الوحيدة المضمنة في القائمة هي تلك التي تمنح إذن view لعملية القراءة (بغض النظر عما إذا كانت تملكها أم لا). لا تزال فحوصات أمان LSM تُجرى، وقد تُصفي مفاتيح أخرى غير مصرح للعملية بعرضها.

    مثال على البيانات التي قد يراها المرء في هذا الملف (مع ترقيم الأعمدة لسهولة الرجوع إليها أدناه) هو ما يلي:

          (1)     (2)     (3)(4)    (5)     (6)   (7)   (8)        (9)
        009a2028 I--Q---   1 perm 3f010000  1000  1000 user     krb_ccache:primary: 12
        1806c4ba I--Q---   1 perm 3f010000  1000  1000 keyring  _pid: 2
        25d3a08f I--Q---   1 perm 1f3f0000  1000 65534 keyring  _uid_ses.1000: 1
        28576bd8 I--Q---   3 perm 3f010000  1000  1000 keyring  _krb: 1
        2c546d21 I--Q--- 190 perm 3f030000  1000  1000 keyring  _ses: 2
        30a4e0be I------   4   2d 1f030000  1000 65534 keyring  _persistent.1000: 1
        32100fab I--Q---   4 perm 1f3f0000  1000 65534 keyring  _uid.1000: 2
        32a387ea I--Q---   1 perm 3f010000  1000  1000 keyring  _pid: 2
        3ce56aea I--Q---   5 perm 3f030000  1000  1000 keyring  _ses: 1

    الحقول الموضحة في كل سطر من هذا الملف هي كما يلي:

    المعرف (1)
        معرف (الرقم التسلسلي) المفتاح، معبرًا عنه بالنظام الست عشري.

    الأعلام (2)
        مجموعة من الأعلام تصف حالة المفتاح:

        I   المفتاح جُسّد.

        R   المفتاح أُبطل.

        D   المفتاح ميت (أي أن نوع المفتاح أُلغي تسجيله). (قد يكون المفتاح لفترة وجيزة في هذه الحالة أثناء عملية جمع المهملات).

        Q   يساهم المفتاح في حصة المستخدم.

        U   المفتاح قيد الإنشاء عبر معاودة نداء إلى مساحة المستخدم؛ انظر request-key(2).

        N   المفتاح جُسّد سلبيًا.

        i   أُبطلت صلاحية المفتاح.

    الاستخدام (3)
        هذا عدد لهياكل اعتمادات النواة التي تثبت المفتاح (تقريبًا: عدد الخيوط ومراجع الملفات المفتوحة التي تشير إلى هذا المفتاح).

    المهلة (4)
        مقدار الوقت المتبقي حتى تنتهي صلاحية المفتاح، معبرًا عنه بصيغة مقروءة للبشر (أسابيع، وأيام، وساعات، ودقائق، وثوانٍ). السلسلة perm هنا تعني أن المفتاح دائم (بلا مهلة). السلسلة expd تعني أن المفتاح قد انتهت صلاحيته بالفعل، ولكن لم يُجمع كمهملات بعد.

    الأذونات (5)
        أذونات المفتاح، معبرًا عنها بأربع بايتات ست عشرية تحتوي، من اليسار إلى اليمين، على أذونات الممسك، والمستخدم، والمجموعة، والآخرين. وداخل كل بايت، تكون بتات الإذن كما يلي:

        0x01
            view
        0x02
            read
        0x04
            write
        0x08
            search
        0x10
            link
        0x20
            setattr

    UID (6)
        معرف المستخدم لمالك المفتاح.

    GID (7)
        معرف المجموعة للمفتاح. تعني القيمة -1 هنا أن المفتاح ليس له معرف مجموعة؛ ويمكن أن يحدث هذا في ظروف معينة للمفاتيح التي تُنشئها النواة.

    النوع (8)
        نوع المفتاح (مستخدم، حلقة مفاتيح، إلخ.)

    الوصف (9)
        وصف المفتاح (الاسم). يحتوي هذا الحقل على معلومات وصفية عن المفتاح. يأخذ هذا الحقل في معظم أنواع المفاتيح الشكل التالي

            name[: extra-info]

        الحقل الفرعي name هو وصف المفتاح (الاسم). ويوفر حقل extra-info الاختياري بعض المعلومات الإضافية عن المفتاح. تعتمد المعلومات التي تظهر هنا على نوع المفتاح، كما يلي:

        "user"
        "logon"
            حجم حمولة المفتاح بالبايت (يُعبر عنه بالنظام العشري).

        "keyring"
            عدد المفاتيح المربوطة بحلقة المفاتيح، أو السلسلة النصية empty إذا لم تكن هناك مفاتيح مربوطة بحلقة المفاتيح.

        "big_key"
            حجم الحمولة بالبايت، متبوعًا إما بالسلسلة [file] إذا تجاوزت حمولة المفتاح العتبة مما يعني أن الحمولة مخزنة في نظام ملفات tmpfs(5) (قابل للتبديل)، أو السلسلة [buff] بخلاف ذلك، مما يشير إلى أن المفتاح صغير بما يكفي ليستقر في ذاكرة النواة.

        لنوع المفتاح ".request_key_auth" (مفتاح تخويل؛ انظر request_key(2))، يأخذ حقل الوصف الشكل الموضح في المثال التالي:

            key:c9a9b19 pid:28880 ci:10

        الحقول الفرعية الثلاثة هي كما يلي:

        key المعرف الست عشري للمفتاح الذي يُنشأ في البرنامج الطالب.

        pid معرف العملية (PID) للبرنامج الطالب.

        ci  طول بيانات الاستدعاء التي يجب إنشاء المفتاح المطلوب بها (أي طول الحمولة المرتبطة بمفتاح التخويل).

/proc/key-users (منذ لينكس 2.6.10)
    يسرد هذا الملف معلومات متنوعة لكل معرف مستخدم لديه مفتاح واحد على الأقل في النظام. مثال على البيانات التي قد تُرى في هذا الملف هو ما يلي:

           0:    10 9/9 2/1000000 22/25000000
          42:     9 9/9 8/200 106/20000
        1000:    11 11/11 10/200 271/20000

    الحقول الموضحة في كل سطر هي كما يلي:

    uid معرف المستخدم.

    usage
        هذا عداد استخدام داخلي للنواة لهيكل النواة المستخدم لتسجيل مستخدمي المفاتيح.

    nkeys/nikeys
        إجمالي عدد المفاتيح التي يملكها المستخدم، وعدد تلك المفاتيح التي أُنشئت.

    qnkeys/maxkeys
        عدد المفاتيح التي يملكها المستخدم، والحد الأقصى للمفاتيح التي قد يملكها.

    qnbytes/maxbytes
        عدد البايتات المستهلكة في حمولات المفاتيح التي يملكها هذا المستخدم، والحد الأعلى لعدد البايتات في حمولات مفاتيح ذلك المستخدم.

/proc/sys/kernel/keys/gc_delay (منذ لينكس 2.6.32)
    تحدد القيمة في هذا الملف الفاصل الزمني، بالثواني، الذي تُجمع بعده المفاتيح الملغاة والمنتهية الصلاحية كمهملات. الغرض من وجود مثل هذا الفاصل الزمني هو توفير نافذة زمنية يمكن لمساحة المستخدم فيها رؤية خطأ (EKEYREVOKED و EKEYEXPIRED على التوالي) يشير إلى ما حدث للمفتاح.

    القيمة المبدئية في هذا الملف هي 300 (أي 5 دقائق).

/proc/sys/kernel/keys/persistent_keyring_expiry (منذ لينكس 3.13)
    يحدد هذا الملف فاصلاً زمنيًا، بالثواني، يُعاد ضبط مؤقت انتهاء صلاحية حلقة المفاتيح الدائمة إليه في كل مرة يتم فيها الوصول إلى حلقة المفاتيح (عبر keyctl_get_persistent(3) أو عملية KEYCTL_GET_PERSISTENT في keyctl(2).)

    القيمة المبدئية في هذا الملف هي 259200 (أي 3 أيام).

تُستخدم الملفات التالية (التي يمكن للعمليات ذات الامتيازات الكتابة فيها) لفرض حصص (quotas) على عدد المفاتيح وعدد بايتات البيانات التي يمكن تخزينها في حمولات المفاتيح:

/proc/sys/kernel/keys/maxbytes (منذ لينكس 2.6.26)
    هذا هو الحد الأقصى لعدد بايتات البيانات التي يمكن لمستخدم غير جذري (nonroot) الاحتفاظ بها في حمولات المفاتيح التي يملكها.

    القيمة المبدئية في هذا الملف هي 20,000.

/proc/sys/kernel/keys/maxkeys (منذ لينكس 2.6.26)
    هذا هو الحد الأقصى للمفاتيح التي قد يملكها مستخدم غير جذري (nonroot).

    القيمة المبدئية في هذا الملف هي 200.

/proc/sys/kernel/keys/root_maxbytes (منذ لينكس 2.6.26)
    هذا هو الحد الأقصى لعدد بايتات البيانات التي يمكن للمستخدم الجذري (root) (المعرف 0 في مساحة اسم المستخدم الجذري) الاحتفاظ بها في حمولات المفاتيح التي يملكها.

    القيمة المبدئية في هذا الملف هي 25,000,000 (كانت 20,000 قبل لينكس 3.17).

/proc/sys/kernel/keys/root_maxkeys (منذ لينكس 2.6.26)
    هذا هو الحد الأقصى للمفاتيح التي قد يملكها المستخدم الجذري (root) (المعرف 0 في مساحة اسم المستخدم الجذري).

    القيمة المبدئية في هذا الملف هي 1,000,000 (كانت 200 قبل لينكس 3.17).

فيما يتعلق بحلقات المفاتيح، لاحظ أن كل رابط في حلقة المفاتيح يستهلك 4 بايتات من حمولة حلقة المفاتيح.

انظر أيضًا
keyctl(1), add_key(2), keyctl(2), request_key(2), keyctl(3), keyutils(7), persistent-keyring(7), process-keyring(7), session-keyring(7), thread-keyring(7), user-keyring(7), user-session-keyring(7), pam_keyinit(8), request-key(8)

linux.git/Documentation/crypto/asymmetric-keys.rst
linux.git/Documentation/security/keys/

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.