الملفات والـ Users والصلاحيات
الملفات والـ folders والـ path، والـ users، والفرق بين user عادي و admin و root، وصلاحيات read و write و execute.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
أهلاً بيك. النهاردة هنتكلم عن حاجة هتقابلها في كل خطوة في الأمن… الملفات والصلاحيات.
كل حاجة على الجهاز محفوظة في ملفات. والملفات مِتْرَتِّبة جُوّه folders، زي الأدراج في الدولاب. والعنوان اللي بيوصلك لملف معيّن اسمه path.
في Linux، الـ path بيبدأ بـ slash، وبعدين أسماء الـ folders ورا بعض. وفي Windows بيبدأ بحرف الـ drive، زي C، وبعدين backslash. وفيه ملفات مهمة قوي للمهاجم، زي ملف الـ users في Linux… etc slash passwd. طيب مين يقدر يفتح الملفات دي؟ هنا ييجي دور الـ users. كل واحد بيستخدم الجهاز ليه user، وكل user ليه صلاحيات. زي الموَزَّفين في شركة: مش كل واحد يقدر يفتح كل الأوض.
وفيه نوعين مهمين من الـ users. user عادي، صلاحياته محدودة. و user صلاحياته كاملة: اسمه Administrator في Windows، و root في Linux. وهدف المهاجم في الآخر غالباً إنه يوصل للـ user ده.
والصلاحيات على الملف تلات أنواع أساسية: read، يعني تقرا الملف. write، يعني تعدّل فيه. و execute، يعني تشغّله كبرنامج. وغلطة صغيرة في الصلاحيات دي ممكن تفتح باب كبير للمهاجم. مِسال: لو ملف بيتشغّل بصلاحيات root، وأي user عادي يقدر يعدّل فيه… يبقى أي حد يقدر يكتب جُوّاه أوامر، والأوامر دي هتتنَفِّد بصلاحيات root. وده من أشهر الطرق اللي هنشوفها في كورسات Privilege Escalation. تعالى نعمل نِزام صلاحيات صغير بـ Python. dictionary فيها كل user، وقدامه الحاجات المسموح له يعملها. نشغّل… أحمد مسموح له يقرا بس.
permissions = {
"ahmed": ["read"],
"admin": ["read", "write", "delete"],
}
print(permissions["ahmed"])المخرجات
['read']
ونعمل function اسمها can، بتسأل: الـ user ده مسموح له يعمل الحاجة دي ولا لأ؟ نشغّل… أحمد مش مسموح له يمسح، والـ admin مسموح.
permissions = {
"ahmed": ["read"],
"admin": ["read", "write", "delete"],
}
def can(user, action):
return action in permissions.get(user, [])
print(can("ahmed", "delete"))
print(can("admin", "delete"))المخرجات
False True
دورك: ضيف user جديد اسمه sara، مسموح لها read و write، واسأل: تقدر تعمل write؟
ضيف "sara": ["read", "write"] واطبع can("sara", "write").
الحل: سطر في الـ dictionary، وسطر print. نشغّل…
permissions = {
"ahmed": ["read"],
"sara": ["read", "write"],
"admin": ["read", "write", "delete"],
}
def can(user, action):
return action in permissions.get(user, [])
print(can("ahmed", "delete"))
print(can("admin", "delete"))
print(can("sara", "write"))المخرجات
False True True
الدرس الجاي: الكمبيوتر بيشوف كل الحاجات دي إزاي؟ أرقام… صفر وواحد. يلا بينا.
03 / دروس المسار (23)
- 01أهلاً بيك — يعني إيه أمن سيبراني؟
- 02الكمبيوتر بيشتغل إزاي من جُوّه؟
- 03نظام التشغيل: المدير اللي بيدير كل حاجة
- 04الملفات والـ Users والصلاحياتانت هنا
- 05صفر وواحد: Binary و Hex و Encoding
- 06الشبكات والـ IP Address
- 07الـ Ports والـ Protocols
- 08الـ DNS والـ HTTP: إزاي الموقع بيفتح؟
- 09تطبيق الويب: Client و Server و Database
- 10مفاهيم الحماية: CIA Triad
- 11Vulnerability و Threat و Risk
- 12Authentication و Authorization
- 13Least Privilege و Defense in Depth
- 14الـ Hashing: إزاي نحفَظ الباسورد صح
- 15الـ Encryption: Symmetric و Asymmetric و HTTPS
- 16تفكير المهاجم: الثقة والمدخلات
- 17الـ Attack Surface والـ Attack Vectors
- 18الـ Social Engineering والـ Phishing
- 19أنواع المهاجمين، والأخلاق، والقانون
- 20أنواع الاختبار والـ Scope والـ Rules of Engagement
- 21مراحل اختبار الاختراق
- 22جهّز الـ Lab بتاعك
- 23مراجعة نهائية: سيناريو كامل، وإنت رايح فين