المقدمة

كلنا بنحتاج chmod في وقت من الأوقات، ولو مدرسناش Linux فبتبقي الأرقام اللي بتعبر عن الصلاحيات مٌحيرة فعلاً ، وما بنكونش عارفين هما جابوا الكلام دا منين. فورقة وقلم ويلا بينا نتكلم عن الـ Linux File Permissions 🚀

Linux File Permissions Explained
Linux File Permissions Explained

Linux File Permissions

موضوع صلاحيات ال Linux دا متقسم ل ٣ أقسام بنجمعهم مع بعض زى الـ puzzle. 

  • الأمر Command 
  • المستخدمين Users  
  • الصلاحيات Permissions 

كل ملف أو مجلد في Linux بينقسم مستخدميه لل ٣ فئات دي :

  • مالك (Owner) وهو الذي أنشأ الملف أو المجلد
  • مجموعة (Group) قائمة بيها مجموعة من المستخدمين لهم صلاحيات محددة
  • آخرون (Others) أي مستخدم آخر 

و كل فئة من الفئات دي ليها صلاحيات محتملة:

Linux File Permissions
Linux File Permissions

تغيير الصلاحيات ما هو إلا تعديل الصلاحيات لكل فئة من دي، وخلونا نشرحه بمثال فلو حبينا نعرض الملفات في Directory معينة مع صلاحيتها  بنستخدم 

Ls -l

فهيعرضلنا 

[الاسم] [التاريخ] [الحجم] [المجموعة] [المالك] [عدد الروابط] [الصلاحيات]

-rwxr-xr–- 1 user dev 4096 Feb 10 script.
drwxr-xr–- 1 user dev 6952 Jan 20 MyProjects

هنا الصلاحيات بالنسبة للملف -rwxr-xr– ولكن معناها إيه؟!

لينكس بيوضح دائما الصلاحيات بترتيب الملكية فدائمًا هنعرض صلاحيات ال Owner ثم ال Group ثم ال Others بدون فاصلة 

  • هنلاقي إن صلاحيات المالك: -rwx ودا يعني إن له صلاحيات القراءة والتعديل والتنفيذ 
  • هنلاقي إن صلاحيات المجموعة : R-x ودا يعني إن للمجموعة صلاحيات القراءة و التنفيذ فقط
  • هنلاقي إن صلاحيات الآخرين: R– وعلامة - في البداية تشير إن دا ملف وكذلك علامة d في البداية تشير إن دا مجلد Directory 

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

Linux File Permissions
Linux File Permissions

تغيير الصلاحيات chmod 

لتغيير صلاحيات ملف أو مجلد بنستخدم أمر chmod واللي هو اختصار لـ change mode.

فكمثال بالطريقة الرقمية 

chmod 754 script.sh

هنا الرقم 754 يعني rwxr-xr–  ودا نتيجة إننا جمعنا الصلاحيات لكل فئة ووضعناها في رقم 

  • فئة المالك (الخانة الأولي) | rwx | 4+2+1 = 7 |
  • فئة المجموعة (الخانة الثانية) | r-x | 4+0+1 = 5 |
  • فئة الآخرين (الخانة الثالثة) | r– | 4+0+0 = 4 |

طبعًا بيجي من هنا الميم لما مبرمج يكون مخنوق من ال Permissions ويفضل يعمل chmod 777 لكل الملفات عشان مشاكل ال Access تتحل، طبعًا مش محتاجين نوضح إن دا حل خطر أمنيًا لأنه بيدي كل الصلاحيات لكل المستخدمين. 

و استخدام 755 بيكون مناسب في معظم الأحوال لأنه بيحتفظ بالتعديل فقط للمالك.

أمثلة علي الطريقة الرمزية 

chmod u+x script.sh   # إضافة execute للمالك
chmod g-w script.sh   # إزالة write من المجموعة
chmod o=r script.sh   # جعل الآخرين قراءة فقط

طبعًا في Special Permissions زي SUID و SGID و Sticky Bit ولكنهم أقل استخدامًا لأنهم بيوفروا ميزات متقدمة في تحديد الصلاحيات مش بنحتاجها كل يوم إلا لو بندير Servers وتقدروا تطلعوا عليهم أكثر في المصادر  


المصادر

Linux file permissions explained
File permissions are core to the security model used by Linux systems. They determine who can access files and directories on a system and how. This article…