الدرس 2: أذونات الملفات ونموذج أمان Linux
كل ملف في Linux محمي بنظام أذونات يحدّد من يمكنه قراءته والكتابة إليه وتنفيذه. في NVIDIA، يُعدّ فهم الأذونات أمراً بالغ الأهمية — سيفشل تطبيق CUDA بصمت إذا لم يكن مستخدم العملية عضواً في مجموعة video التي تمنح الوصول إلى /dev/nvidia0. يمنحك هذا الدرس كل الأدوات لإدارة الأذونات منذ اليوم الأول.
أذونات Linux تشبه مفاتيح الغرف في مبنى: لكل غرفة (ملف) ثلاثة أقفال — واحد للمالك، وواحد للمجموعة، وواحد لأي شخص آخر. الأمر chmod هو الذي يقرّر أي مفتاح يُعطى لمن.
- بتات الأذونات
- ثلاث بتات (r, w, x) لكل من ثلاثة أطراف: المالك، والمجموعة، والآخرين. معاً تحدّد من يمكنه فعل ماذا بالملف.
- UID (معرّف المستخدم)
- عدد صحيح فريد تستخدمه النواة لتحديد هوية المستخدم. المستخدم root له دائماً UID 0. تعمل كل عملية بـ UID الخاص بالمستخدم الذي أطلقها.
- GID (معرّف المجموعة)
- عدد صحيح يمثّل مجموعة من المستخدمين. يمكن للمستخدم أن ينتمي إلى عدة مجموعات. تمنح مجموعة video الوصول إلى /dev/nvidia*.
- بت setuid
- بت خاص يجعل العملية تعمل بـ UID الخاص بمالك الملف بدلاً من UID الخاص بالمستخدم المُستدعي. يستخدم sudo هذا لمنح امتيازات root مؤقتة.
- عقدة الجهاز
- ملف في /dev يمثّل جهاز عتاد. /dev/nvidia0 هو عقدة الجهاز الخاصة بأول GPU. يمكنك القراءة منه والكتابة إليه مثل ملف عادي، لكن العمليات تُمرَّر إلى برنامج التشغيل.