FANDOM


نتطرق لموضوع مهم يخص الأمن على أنظمة unix-like بشكل عام وهو موضوع التصريحات على الملفات أو File permission . وبالطبع الموضوع من الأهمية بمكان لمن يتعامل بشكل يومى على بيئة اللينوكس سواء كان مستخدم عادى أو محترف أو مدير سيرفر

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


فى البداية أحب أن أشير لنقطة قد ﻻ يتنبه لها البعض وخصوصا المستخدم العادى عندم تقوم بعمل مستخدم على لينوكس بشكل افتراضى يقوم النظام بانشاء مجموعة تابعة لهذا المستخدم تلقائيا دون تدخل من المستخدم نفسه وقد يتساءل البعض ولم ؟

طبعا أهمية هذا الأمر تكمن فى إمكانية اعطاء عدد من الأفراد صلاحيات واحدة تندرج تحت مجموعة تخص مستخدم معين على النظام دون الحاجة إلى إنشاء مستخدمين جدد ، وبالتالى يسهل الأمر على مدراء السيرفرات فى احكام السيطرة على ما يمكن كل فرد فعله كما ذكرنا سابقا وبالتالى يتحكم مدير السيرفر فى عدد من المجموعات بدلا ً من مئات المستخدمين . وتعتبر المجموعات أو groups من الركائز الرئيسية والتى تعتمدها أنظمة لينوكس فى التعامل مع الملفات أى تقسيم المهام على مجموعات معينة كلٌ منها تقوم بوظيفة مختلفة عن الأخرى .

وبالتالى نستنتج من ذلك أن كل مستخدم يستطيع التحكم فى تنفيذ الأشياء التى تخصه دون الآخرين اللهم إﻻ إذا كان هذا المستخدم مشترك بالفعل فى مجموعات أخرى تقوم بمهام معينة ، فمثلا عند إنشاء مستخدم جديد يكون له home directory خاص به تحت المجلد الرئيسى home/ يستطيع من خلاله حفظ أى بيانات تخصه وله القدرة على التعديل ، الحذف ، النسخ إلخ من تلك المهام على العكس بالنسبة للمجلدات الأخرى لا يستطيع تنفيذ مهام عليها إﻻ إذا كانت له التصاريح الكافية لعمل تلك المهمات ، فمثلا قد يكون له القدرة على قراءة ملف تحت المجلد dev/ ولا يكون له حق التعديل عليه وهكذا...

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

ونتيجة لذلك نستطيع تقسيم الصلاحيات على أى ملف او مجلد بالنظام إلى ثلاثة أقسام :

الأولى : صلاحيات المستخدم نفسه (User permission)

الثانية : صلاحيات المجموعة التابعة لهذا المستخدم (Group Permission)

الثالثة : صلاحيات لأفراد آخرين قد يكون أو ﻻ يكون لهم تعامل مباشر بالنظام (Everyone Else's Permisiion)

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

1- تصريح القراءة (read permission) ويرمز إلى الحرف r

2- تصريح الكتابة (write permission) ويرمز إلى الحرف w

3- تصريح التنفيذ (execute permission) ويرمز إلى الحرف x

ولكن قد يتبادر سؤال إلى الأذهان أﻻ وهو هل التصاريح الخاصة بالملفات والمجلدات واحدة ؟؟ بمعنى من القراءة الأولية للعناصر السابقة لأنواع التصاريح قد نفهم بشكل أو بآخر أنّ تصريح القراءة والكتابة بالنسبة للملف والمجلد على حد سواء متقارب ، بمعنى أنه إذا كان الملف يحمل تصريح القراءة فبالتالى نستطيع قراءة محتوياته ، بالمثل إذا كان المجلد يحمل تصريح القراءة فبالتالى نستطيع سرد محتويات المجلد باستخدام الأمر ls ، كذلك إذا كان الملف يحمل تصريح الكتابة فبالتالى تستطيع الكتابة من وإلى الملف كذلك الحذف أو التعديل ، أيضا المجلد تستطيع النسخ من وإليه ، الحذف أو الإضافة وهكذا ....ولكن عند الحديث عن تصريح التنفيذ فيبدو للوهلة الأولى منطقيا بالنسبة للملف حيث يمكن اعتبار الملف عبارة عن برنامج معين ولذلك ﻻ ضير فى استخدام التصريح معه بهذا الشكل ولكن كيف يمكن لنا أن نقوم بتنفيذ مجلد باستخدام ذلك التصريح ؟؟

مفهوم تصريح التنفيذ عند الحديث عن المجلدات هو إمكانية تغيير المسار إلى ذلك المجلد باستخدام الأمر cd وإﻻ فى حالة عدم وجود تصريح التنفيذ بالنسبة للمجلدات عندها سوف تظهر عبارة bash: cd: foldername/: Permission denied

كانت هذه مقدمة بسيطة عن التصاريح وما فائدتها بالنسبة لمستخدمى أنظمة unix-like ككل بداية من المبتدئين انتهاءً بمدراء السيرفرات والآن لنبدأ فى ذكر أمثلة عملية على الموضوع ونبدأ بكيفية سرد التصاريح لأى ملف على النظام باستخدام الأمر ls مع الخيار l- ليكون الأمر بالشكل التالى فى الطرفية :

ls -l

-rw-r--r-- 1 shuffl shuffl 94996 2007-03-14 07:10 wget-log drwxr-xr-x 5 oem oem 4096 2007-03-16 09:44 mysql

كما تلاحظون قمت باستعراض الملفات الموجودة على المسار الخاص بى home/shuffl/ ( يختلف من شخص لآخر ) وظهرت نتيجة الأمر فى الطرفية كما بالشكل السابق وما علينا الآن فعله هو تحليل الناتج من اليسار إلى اليمين على الملف الأول wget-log :

أوﻻ : كما ذكرنا سابقا توجد مجموعة من التصاريح المعينة تستخدمها أنظمة unix-like لبيان ما يمكن فعله على الملف ، ذكرنا منها تصريح القراءة والذى يرمز إلى الحرف r أو ناتج اختصار كلمة read ، وتصريح الكتابة والذى يرمز إلى الحرف w أو ناتج اختصار كلمة write ، وأخيرا تصريح التنفيذ والذى يرمز إلى الحرف x أو ناتج اختصار كلمة execute

ثانيا : الرقم بجوار التصريح مثلا فى حالة الملف wget-log أو المجلد mysql له حالتان :

1- إذا كان الرقم فى سطر خاص بملف عادى فهو يوضح عدد ال hard links الموجودة لذلك الملف .

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

ولكن توجد بعض المصطلحات التى قد ﻻ يفهما البعض ماهى ال links أو الhardlinks كما ذكرت بأعلى ؟؟

لفهم هذه النقطة نضرب مثال : نفترض أنك تريد عمل نسخة من ملف معين على جهازك وتريد وضعه على ال Desktop الخاصة بك مثلا وكان حجم الملف كبير بشكل ما قد يصيبك بالإحباط وتريد حل عملى من خلاله تستطيع عمل نسخة من الملف دون اشغال حيز جديد من المساحة ما الحل ؟؟

هنا يأتى دور ال links فأنظمة unix-like تتيح لك هذه الخاصية أى تستطيع عمل عدة نسخ من الملف دون الحاجة إلى نسخ الملف بحجمه الكامل إلى الجهة المراد نسخه عليها وبالتالى تستطيع توفير مساحة قد تصل فى بعض الأحيان بالجيجا بيت اعتمادا على حجم الملف المراد نسخه أو قد تستخدم ال links لنقل ملفات من نظام ملفات إلى آخر .

وبالتالى كل link تقوم أنت بإنشائها تشير إلى النسخة الأصلية للملف ، ونتيجة لذلك توجد لدينا طريقتان لعمل ال links كل منها تعتمد على الوظيفة المطلوب عملها أو ما تسمى فى هذه الحالة hardlinks أو soft links or symbolic links .

وعذرا إن كنت خرجت عن نطاق الموضوع الرئيسى أﻻ وهو التصاريح ولكن أحببت التطرق إلى هذه الجزئية حتى تكون واضحة المعالم بالنسبة لمن ﻻ يعلم عنها شياً وإن شاء نستعرض الlinks بشكل تفصيلى فى مواضيع ﻻحقة.

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

ثالثا : الإسم shuffl من جهة اليسار يوضح المالك الأصلى للملف ( المستخدم الذى قام بإنشاء الملف ) .

رابعا : الإسم shuffl من جهة اليمين يوضح المجموعة المالكة للملف .

خامسا : الرقم 94996 يوضح حجم الملف wget-log ولكن بال bytes

سادسا : الأرقام 2007-03-14 و 07:10 تدل على التاريخ والساعة اللذان تم فيهما التعديل الأخير على الملف .

سابعا : إسم الملف وفى حالتنا هذه wget-log

والآن ما يهمنا هو النقطة الأولى أﻻ وهى التصاريخ الخاصة بالملف وفهمها بشكل عملى كالتالى :

الرموز drwxr-xr-x وتشير إلى التصريح الخاص بالملف mysql ، ولكن من الوهلة الأولى يبدو وكأنه شفرة سرية !! ولكنه فى الحقية من الأمور السهل جداً فهمُها واستيعابها بقليل من المعرفة ، لاحظ معى هناك عشرة أحرف مقسمين إلى أربع مجموعات ( قد ﻻ يبدو الأمر كذلك ) .

المجموعة الأولى : تتكون من الحرف الأول (1).

المجموعة الثانية : تتكون من الحرف الثانى إلى الحرف الرابع (2-4)

المجموعة الثالثة : تتكون من الحرف الخامس إلى الحرف السابع (5-7)

المجموعة الرابعة : تتكون من الحرف الثامن إلى الحرف العاشر (8-10)

وعلى سبيل المثال نأخد التصريح الخاص بالملف mysql ويبدو مقسما إلى المجموعات السابق ذكرها بالشكل التالى :


d|rwx|r-x|r-x

والآن تعالوا معى لنعرف بالضبط كيفية فهم هذا التصريح من اليسار إلى اليمين:

المجموعة الأولى والتى تشمل الحرف الأول ( وفى حالتنا هذه هو حرف ال d) تمثل نوع الملف سواء كان مجلد (directory) أو ملف عادى (regular file) وطبعا من البديهى أن يرمز الحرف d إلى الكلمة (directory) أو مجلد ، وبالتالى يعتبر الملف mysql من نوع مجلد أو ملف خاص ، بينما العلامة - أو ال dash توضح أنه ملف .وبالطبع يوجد الكثير من هذه العلامات التى توضح الأنواع المختلفة من الملفات والجدول التالى يوضح كلامى :

Character Meaning

- Regular File

- Executable

d directory

l Symbolic Link

s Socket

b Block Device

c Character Device

p Named Pipe

وبالتالى أصبح من الممكن تقسيم التصريح كما ذكرنا سابقا إلى تصاريخ تخص مالك الملف ، وتصاريخ تخص المجموعة التى تندرج تحت اسم المستخدم أو قد يكون تابع لها ، والجزء الأخير خاص بتصريح أى مستخدم آخر على النظام والشكل التالى يوضح هذه العبارات بشكل موجز :

Mido

وكما رأينا من الشكل السابق تم تقسيم التصريح إلى أربعة أقسام نذكرها كالتالى :

القسم الأول : وهو نوع الملف فى المثال السابق كان الملف من نوع مجلد نظراً لأنه يحمل فى بداية التصريح الحرف d ، قد يكون فى بداية التصريح الرمز - أو dash وتعنى أن الملف ملف قياسى عادى على النظام ونستطيع التمييز بين الأنواع المختلفة للملفات من خلال الجدول السابق

القسم الثانى : تصريح المالك للملف حيث توضح الثلاثة أحرف السابقة rwx ما يمكن للمالك من فعله على الملف ، وعادةً يكون المالك للملف هو من أنشأه ولكن ليس بالضروة هذا ، حيث يمكن ﻻحقا تغيير مالك الملف باستخدام أمر معين وهو أمر chown ، وفى مثالنا يستطيع المالك قراءة المجلد أو بمعنى أصح سرد محتويات المجلد باستخدام الأمر ls نظر ﻷنه من صلاحياته على المجلد القراءة أو r ، كما يمكنه أيضا النسخ من وإلى المجلد والحذف والتعديل على محتويات المجلد لتملكه صلاحيات الكتابة أو w ، كما يمكنه أخيراً تنفيذ المجلد وقد أوضحنا هذه النقطة أن المقصود بهذا التصريح x على المجلد هو امكانية الولوج إلى المجلد مستخدمين الأمر cd .

القسم الثالث : تصريح المجموعة ، حيث يستطيع المستخدمين المنضمين إلى هذه المجموعة تنفيذ صلاحيات على المجلد منها صلاحية القراءة ، وصلاحية التنفيذ ، وليس لديهم صلاحية القدرة على الكتابة على المجلد نظراً لعدم حصولهم على تصريح الكتابة w وتم وضع بدلاً منه الرمز- أو dash والذى إن وُجد داخل التصريح الكامل فهو يعنى عدم وجود التصريح الموجود مكانه ، فمثلا لو وُضع هذا الرمز مكان التصريح r فهو يعنى عدم امكانية قراءة الملف أو المجلد ، وهكذا إن وُضع مكان التصريح w فهو يعنى عدم امكانية الكتابة إلى الملف أو المجلد وسيان الأمر مع التصريح x ، وفى مثالنا هذا يستطيع مجموعة المستخدمين المُنضمين إلى هذه المجموعة سرد محتويات المجلد باستخدام الأمر ls ، ليس لديهم صلاحية الكتابة نظراً لعدم وجود تصريح الكتابة w ، وأخيرا لديهم صلاحية الولوج إلى المجلد مستخدمين الأمر cd .

ملحوظة مهمة جداً : قد تكون هناك ملفات بداخل المجلد تحمل تصاريح أخرى بمعنى قد ﻻ يحمل المجلد تصريح الكتابة من وإليه ويوجد داخل المجلد ملف يحمل تصريح الكتابة إليه فتنبه لذلك .

القسم الرابع : تصريح أى مستخدم آخر على النظام ، يوضح الصلاحيات الخاصة بأى شخص آخر على النظام ليس المالك الأصلى للملف أو ليس منضما إلى مجموعة المستخدمين التى تملك صلاحيات معينة على الملف ، وفى مثالنا هذا يستطيع أى مستخدم آخر غير المالك والمجموعة أيضا سرد محتويات المجلد ، عدم الكتابة من وإلى المجلد ، وأخيرا الولوج إلى المجلد مستخدمين الأمر cd .

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

والآن نتطرق إلى تلخيص التصاريح السابقة بشكل بسيط وما فائدتها لكل من الملف والمجلد :

أولا : التصريح r أو read

  • إذا كان الملف يحمل هذا التصريح مثلا لكل من المالك والمجموعة وأى شخص آخر ، فيستطيعوا قراءة محتويات الملف ، نسخ الملف ، حذف الملف وﻻ يستطيعوا الكتابة إلى الملف إﻻ فى حالة تملكهم لتصريح الكتابة w ، كذلك ﻻ يمكنهم تنفيذ الملف إﻻ فى حالة تملكهم للتصريح x .
  • إذا كان المجلد يحمل تصريح القراءة r فقط فيستطيع كل من يحمل هذا التصريح سرد محتويات المجلد باسخدام الأمر ls ولا يمكن نسخ من وإلى المجلد ولا يمكن الولوج إلى المجلد باستخدام الأمر cd ، كما أنه لا يمكن عرض التصاريح الخاصة بالملفات داخل المجلد باستخدام الخيار l- مع الأمر ls تنبه !! .

ثانيا : التصريح w أو write

  • إذا كان الملف يحمل تصريح الكتابة فتستطيع الكتابة إليه ولكن ﻻ يمكن نسخ الملف أو قراءته أو نقله إﻻ إذا كنت تملك تصريح الكتابة r .
  • إذا كان المجلد يحمل تصريح الكتابة فنستطيع الإضافة أو الحذف من المجلد وﻻ نستطيع الولوج إليه إﻻ إذا كنا نملك تصريح التنفيذ x وﻻ يمكن سرد محتوياته إﻻ إذا كنا نملك تصريح القراءة r .

ثالثا : التصريح x أو execute

  • إذا كان الملف يحمل هذا التصريح فتستطيع تنفيذ الملف فى حالة الملفات التى تكون بصيغة shell script على سبيل المثال ، ولكن لا يمكن قراءة محتويات الملف إﻻ إذا كنت تملك تصريح القراءة ، كذلك ﻻ يمكنك تعديل محتويات الملف إﻻ إذا كنت تملك تصريح الكتابة w .
  • إذا كان المجلد يحمل هذا التصريح فتستطيع الولوج إلى المجلد باستخدام الأمر cd دون عرض محتوياته إﻻ إذا كنت تملك معه التصريح r ولا يمكن إنشاء ملفات جديدة أو مجلدات فرعية إﻻ إذا كنت تملك تصريح الكتابة w.

ونلاحظ من التخليص السابق أن بعض التصاريح متربطة ببعضها البعض بمعنى لكى تتمكن من الولوج إلى مجلد ﻻبد أن تمتلك صلاحيات التنفيذ حتى تستطيع الولوج إلى المجلد ، كذلك يتطلب ذلك وجود تصريح القراءة حتى تستطيع رؤية ما بداخل المجلد وهنا تظهر نقطة مهمة أﻻ وهى الصلاحيات الافتراضية بالنسبة لكل من الملفات والمجلدات على النظام وهى كالتالى :

بالنسبة للملفات يكون التصريح الافتراضى لها:

-rw-r--r--  

فى حالة إذا كانت ملفات نصية أو ما شابه وفى حالة إذا ما كانت ملفات تنفيذية يتطلب حينها وضع التصريح x لتكون كما يلى :

-rwxr-xr-x

أما بالنسبة للمجلدات يكون التصريح الإفتراضى لها بالشكل التالى :

drwxr-xr-x  

والآن لننتقل إلى المرحلة الأخيرة والمهة أيضا بعد أن استعرضنا التصاريح وكيفية عملها كيف لنا أن نغير الصلاحيات على الملفات والمجلدات ؟؟

هنا يأتى دور الأمر chmod او اختصاراً ل change mode حيث يقوم الأمر بتغيير الصلاحيات لكل من الملفات والمجلدات على حدٍ سواء وذلك بُناءً على حاجة كل فرد سواء كان مدير نظام أو شخص محترف أى حتى شخص عادى ، قد تختلف الحاجة من شخص لآخر ، مثلا شخص يريد وضع تصريح الكتابة لملف الآخر لا يريد وهكذا .....

والآن لنأتى إلى الصيغة العامة للأمر أﻻ وهى :

chmod options mode file  


1- حيث chmod هو أمر تغيير الصلاحيات .

2- كلمة options تعنى الخيارات التى يمكن دمجها مع الأمر .

3- كلمة mode تعنى التصريح المراد وضعه على الملف أو المجلد وسنتعرضه له الآن بشكل تفصيلى .

4- كلمة file وتعنى اسم المجلد أو الملف المطلوب وضع التصريح له .

والآن سوف نتطرق إلى الجزئية الأهم وهى التصريح المراد وضعه أو mode وتنقسم إلى جزئين :

1- octal mode

2- symbolic mode


أوﻻ : octal mode

بداية ماهو ال octal ؟ ال octal هو نظام الأعداد الثمانى أى يبدأ بالعدد 0 وحتى العدد رقم 7 وتم استخدامه من قِبل علماء الكمبيوتر للتعبير عن الأرقام بمعنى ، الكمبيوتر كجهاز ﻻ يعلم الكلمة مثلا " word " كله ما يعلمه هو 0 أو 1 أو بمعنى set or reset وهكذا ، ولكى تتم العملية بالشكل المطلوب لابد من تحويل الرموز أو الحروف أو حتى الأرقام العادية فى صورة أصفار وواحائد فقط أى بطريقة مثل هذه 01011101 هنا ظهرت طرق للتعبير عن هذه الرموز أو الحروف او الأرقام العادية لعمل ذلك التحويل بطريقة بسيطة على سبيل المثال طريقة الأعداد ال binary representation أو التمثيل الثنائى وهو إما 0 أو 1 ، وطريقة ال octal representation أو التمثيل الثمانى ويشمل الأعداد من 0 وحتى الرقم 7 ، وطريقة ال hexidecimal representation أو التمثيل السادس عشر ويشمل الأعداد من 0 حتى الرقم 9 ومن الحرف A حتى الحرف F ، حيث يمثل الحرف A الرقم 10 والحرف B الرقم 11 وهكذا انتهاءً بالحرف F والذى يمثل الرقم 15 وبالتالى تكون هناك طريقة بسيطة للتحويل مابين هذه الأنظمة خصوصا الثمانى والسادس عشر مع النظام الثنائى والذى يستخدمه الكمبيوتر فى تنفيذ عملياته والجدول التالى يوضح كيف يمكن تحويل رقم من نظام ثمانى إلى ثنائى ، ومن سادس عشر إلى ثنائى :

Represe

والآن تطرقنا إلى نبذة بسيطة عن كيفية تمثيل الأعداد باستخدام أنظمة مختلفة وما يهمنا الآن منها هو النظام الثمانى والذى باستخدامه أمكن تخزين التصاريح الخاصة بأى ملف أو مجلد على النظام بطريقة سهلة جدا حيث تم التعويض عن رمز كل تصريح بعدد معين مثلا الرمز r والذى يرمز إلى تصريح القراءة تم التعويض عنه بالرقم 4 ، والرمز w والذى يمثل تصريح الكتابة تم التعويض عنه بالرقم 2 ، كذلك الرمز x والذى يمثل تصريح التنفيذ تم التعويض عنه بالرقم 1 والسطر التالى يوضح ملخص التعبير على التصاريح :

read or r =4    write or w =2   execute or x =1  

وبالتالى عند اضافة هذه الأرقام إلى بعضها البعض نبدأ فى تكوين التصريح المطلوب وضعه على الملف أو المجلد مثلا نريد وضع تصريح القراءة والكتابة على ملف ما كل ما علينا فعله إضافة الرقم 4 إلى الرقم 2 ليصبح التصريح كالتالى :


r + w = rw     4 + 2 = 6  

أما لو أردنا وضع تصريح القراءة والكتابة والتنفيذ معاً على ملف يكون الناتج بالشكل التالى :

r + w + x = rwx    4 + 2 + 1 = 7  

ولو رجعنا قليلا لأعلى ذكرنا أن التصريح بشكلٍ عام مكون من أربعة أقسام نوع الملف ، تصريح المالك ، تصريح المجموعة ، تصريح أى مستخدم آخر ، فيتم استخدام الأرقام بأعلى لتكوين التصريح ونضرب مثالأ على ذلك :

سؤال : قم باعطاء التصريحات التالية للملف one.txt لكل من : المالك ، المجموعة ، أى مستخدم آخر بالترتيب التالى :

1- بالنسبة للمالك القراءة والكتابة .

2- بالنسبة للمجموعة القراءة فقط .

بالنسبة لأى مستخدم آخر ﻻ شىء .

الحل :

أوﻻ بالنسبة للمالك التصريح المطلوب القراءة والكتابة إذاً ما نريده هو التالى :

r + w + - = rw-     4 + 2 + 0 = 6  

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

r + - + - = r--     4 + 0 + 0 = 4  

ثالثا : بالنسبة لأى مستخدم آخر المطلوب ﻻ شىء إذاً ما نريده التالى :

- + - + - = ---     0 + 0 + 0 = 0  

إذا التصريح بشكل نهائى يمكن كتابته على الصورة التالية بعد اضافته للأمر chmod كالتالى :

chmod 640 one.txt  

وإذا قمنا باستعراض تصريح الملف الجديد بعد وضعه مستخدمين الأمر ls -l سيظهر لنا تصريح الملف بالشكل التالى :

-rw-r-----  

ملحوظة : وجود ال - او dash ياعنى إنتفاء التصريح الذى توجد هذه العلامة مكانه .

سؤال : قم بإنشاء ملف جديد على المسار home/urname/Desktop/ وقم بتسميته باسم two.txt وأعطه التصاريح التالية :

المالك : قراءة وكتابة وتنفيذ

المجموعة : قراءة وتنفيذ

آخرون : قراءة وتنفيذ


والآن بعد أن فهمنا كيفية وضع التصاريح باستخدام ال octal mode وهو يعتبر حجر الأساس بالنسبة لوضيعة التصاريح ﻷننا كما ذكرنا سابقا النظام يقوم بتخزين التصريح باستخدام الأرقام مباشرة ، بَقِىَ الآن النوع الثانى :


ثانيا : symbolic mode

ولمن يجدون صعوبة فى وضع التصاريح يوجد وضع آخر !! فى الوضع السابق قم باستخدام الأرقام لإضافة التصريح المطلوب ، ولكن فى هذا الوضع تم الإستعاضة عن الارقام بالرموز العادية ! أعلم أن هناك أشياء مبهمة الآن ، ما أقصده بالرموز العادية هى r ، w ، x بمعنى حينما تود وضع تصريح القراءة أضف r ، كذلك تود وضع تصريح الكتابة أضف w ، كذلك تصريح التنفيذ x ولكن السؤال كيف ذلك ؟؟

يتم ذلك باستخدام الحروف u ، g ، o حيث يرمز الحرف u إلى كلمة user والتى تعنى تصريح المالك ، ويرمز الحرف g إلى كلمة group والتى تعنى تصريح المجموعة ، ويرمز الحرف o إلى كلمة other والتى تعنى تصريح أى شخص آخر على النظام ويتم اضافة التصريح للملف باستخدام ثلاثة رموز هى + ، - ، = حيث ترمز العلامة + إلى كلمة add أو إضافة وترمز العلامة- إلى كلمة minus أو إنقاص ( تنبه هى نفس علامة- والاستخدام هنا نوعاً ما مختلف ) وترمز العلامة = إلى كلمة equal أو يساوى ولفهم ذلك كله نفترض المثال السابق :

سؤال : قم باعطاء التصريحات التالية للملف one.txt لكل من : المالك ، المجموعة ، أى مستخدم آخر بالترتيب التالى :

1- بالنسبة للمالك القراءة والكتابة .

2- بالنسبة للمجموعة القراءة فقط .

بالنسبة لأى مستخدم آخر ﻻ شىء .

الحل :

أوﻻ بالنسبة للمالك التصريح المطلوب هو تصريح القراءة والكتابة إذا ما نريده هو التالى :

u=rw

ثانيا النسبة للمجموعة التصريح المطلوب هو تصريح القراءة فقط إذا ما نريده هو التالى :

g=r  

ثالثا بالنسبة لأى مستخدم آخر التصريح المطلوب هو ﻻ شىء إذا ما نريده هو التالى :

o-rwx  

إذا لوضع التصريح بشكل كامل تكون صيغته الكاملة كالتالى :

chmod u=rw,g=r,o-rwx filename  

فى البداية قمت بوضح تصريح المالك مستخدماً الرمز = أو يساوى وبعد ذلك قمت بكتابة , أو comma لبيان أنى أريد وضع تصريح آخر مع تصريح المالك هو تصريح المجموعة ثم قمت بكتابة , أو comma أخرى لإضافة تصريح المستخدمين الآخرين ولكن ﻻحظ معى أنى قمت باستخدام الرمز - أو minus لسحب أى تصريح بالنسبة ﻷى مستخدم آخر وفى السؤال كان المطلوب عدم اعطاء أى تصريح لأى مستخدم آخر .

وبالتالى حينما تود إضافة تصريحات متشابهة سواء للمالك أو المجموعة أو أى مستخدم آخر فلا يتطلب ذلك فصل كل عملية باستخدام, أو comma ولكن تستطيع اضافة العناصر المتشابهة إلى بعضها البعض.

مثال : قم بإعطاء تصريح القراءة والكتابة والتنفيذ لكل من المالك والمجموعة وتصريح القراءة والتنفيذ لأى مستخدم آخر للملف one.txt :


chmod ug=rwx,o=rx one.txt  

مثال : قم بسحب تصريح الكتابة والتنفيذ للمجموعة وسحب أيضا تصريح التنفيذ من أى مستخدم آخر :

chmod go-wx one.txt  

ﻻحظ معى قمت باضافة كلام من المجموعة وأى مستخدم آخر إلى بعضهما البعض مع أنى أريد تنفيذ مهام مختلفة فكيف ذلك ؟

لو لاحظت معى أن الملف one.txt يوجد عليه التصريح rwxrwxr-x وما طلبته فى سؤالى سحب كل من تصريح القراءة والتفيذ للمجموعة وتصريح التنفيذ لأى مستخدم آخر وذلك ﻷن تصريح الكتابة بالنسبة لأى مستخدم آخر فى الأصل هو غير متوافر على التصريح الكامل للملف ولكن يوجد عامل مشترك وهو سحب تصريح التنفيذ لكلٍ من المجموعة وأى مستخدم آخر وذلك لمجرد التسهيل ليس إﻻ فكان من الممكن كتابة التصريح بالشكل التالى :

chmod g-wx,o-x one.txt  

وسوف تكون النتيجة مطابقة لما بأعلى وأود تنبيهك إلى شىء مهم أن كلا ً من الرمزين + ، - يقومان بإضافة وسحب تصريح موجود بالفعل بمعنى لو كان تصريح ملف معين بالشكل التالى :

-rw-r--r-x  

وأردت اضافة تصريح الكتابة لكل من المجموعة وأى مستخدم آخر فسيتم اضافة التصريحات الجديدة دون احداث تغيير فى أى تصريح موجود بالفعل ولاحظ ذلك :

chmod go+w filenmae  

ليكون ناتج التصريح عند عمل الأمر ls -l بالشكل التالى :


rwxrw-rwx  

ولكن ماذا لو أردنا وضع تصريح مماثل للأقسام الثلاثة أعنى المالك والمجموعة وأى مستخدم آخر أﻻ يوجد بديل ل u ، g ، o ؟؟

بالطبع يوجد الحرف a والذى يرمز إلى كلمة all أو الكل بمعنى تود أضافة تصريح التنفيذ لملف ما لكل من المالك والمجموعة وأى مستخدم آخر كل ما عليك فعله التالى :


chmod a+x filename  

والجدول التالى ملخص لكل من الحروف والرموز الخاصة بالوضع symbolic mode :

Sybmolic