تصاريح نظام الملفات

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث

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

الاختلافات بين أنظمة التشغيل[عدل]

ويندوز[عدل]

نظم الدوس وويندوز 95, ويندوز 98, ويندوز ميلينيوم, لم يكن لديها الاذونات والتصاريح. فقط مجرد خصائص, هناك خاصية للقراءة فقط تاخذ رمز (R) التي تحدد أو تزيل التحديد عن ملف بواسطة اي مستخدم, وبالتالي لاتستطيع منع أحد من تغيير أو حذف الملف ليس هناك تصاريح تستطيع منع مستخدم من قراءة ملف لايملك حق الوصول اليه. لكن هذا الأمر بدأ بالتغير تدريجيا منذ اصدار ويندوز فيستا وما تلاه من أصدارات.

شبيه يونكس[عدل]

التصاريح على الملفات (File permission) والمجلدات في الأنظمة الشبيهة بيونكس (unix-like) مثل (Bsd، لينكس linux) التصاريح مهمة لمن يتعامل مع الأنظمة الشبيهة بيونكس سواء كان مستخدم عادى أو محترف أو مدير سيرفر، تعطيك الصلاحيات الحق في تشغيل برامج أو أوامر، تصفح المجلدات لقراءة محتوياتها أو التعديل أو تنفيذها، زمن الامور التي تعطيها الصلاحيات لمدراء السيرفرات هو التحكم الكامل في صلاحيات كل فرد ومجموعة على السيرفر، من إعطاء الحق له إلى الوصول إلى ملف لقراءته أو التعديل عليه أو تنفيذه، ومن صلاحية هذا الفرد أو المجموعة من تنفيذ امر شيء معين أو عدم تنفيذه.

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

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

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

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

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

وتقسم الصلاحيات الموجودة على الملف أو المجلد إلى ثلاثة صلاحيات :

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

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

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

الاستخدام[عدل]

لمعرفة الصلاحيات الموجودة على الملف أو المجلد نستخدم الامر ls ومعه الخيار l ليكون الامر بالشكل التالي :

ls -l

أو نستخدم الامر vdir

فيكون ناتج الامر في الشل عند استعراض الملفات الموجودة على المسار الخاص /home/khaled ((المسار يختلف من جهاز إلى لاخر))

khaled@debian:~$ ls -l

-rw-r--r-- 1 khaled khaled 279199 Dec 11 02:52 CLU-Part2.pdf

-rw-r--r-- 1 khaled khaled 7872 Dec 11 01:24 deb.0403.gif

-rw-r--r-- 1 khaled khaled 23680 Dec 11 01:25 deb.0404.gif

-rw-r--r-- 1 khaled khaled 5419 Dec 11 01:28 deb.0405.gif

drwxr-xr-x 4 khaled khaled 4096 Dec 11 01:01 Desktop

drwxr-xr-x 2 khaled khaled 4096 Dec 9 17:30 Documents

الآن لكي نفهم ماذا تعني هذه الرموز التي فوق ناخذ الناتج من اليسار إلى اليميين.

مثلا الرموز drwxr-xr-x يعني الحرف d ان نوع الملف هو مجلد اما إذا كان مكانها الرمز - أو dash يعني انه ملف أو اختصار لكلمة directory، الحرف r أو ناتج اختصار كلمة read، وتصريح الكتابة والذي يرمز إلى الحرف w أو ناتج اختصار كلمة write، وأخيرا تصريح التنفيذ والذي يرمز إلى الحرف x أو ناتج اختصار كلمة execute. اما الرمز - يعني ان هذا التصريح لايوجد على هذا الملف. بحيث ان كل ملف ياحذ ثلاثة تصاريح على التوالي وهي rwx (قراءة، كتابة، تنفيذ) اما عند وضع - مكان التصريح فان هذا التصريح غير معطي لها الفرد أو المجموعة ,مثلا تعني r-x ان التصريح الكتابة w غير معطى لهذا المستخدم أو المجموعة باختصار لانه مكان تصريح الكتابة w وضع الرمز - وهذا يعني ان التصريح غير موجود.

وكما ترى في الكود السابق ان الرموز مكررة ثلاثة مرات rwxr-xr-x ان أو ثلاثة حروف (rwx) من 2-4 تعني صلاحية مالك الملف أو من قام بإنشاء الملف، اما الحروف الثلاثة من 5-7 هي تصريح المجموعة التي ينتمي إليها المستخدم مالك الملف، اما الحروف الثلاثة من 8-10 هي صلاحية باقي المستخدمين الموجودين على النظام على هذا الملف أو المجلد.وكما ذكرنا الحرف الأول d هو نوع الملف.


الآن بعد أن انتهينا من الصلاحية على الملف نعود ونرجع باقي الرموز وناخذ مثلا المجلد desktop

drwxr-xr-x 4 khaled khaled 4096 Dec 11 01:01 Desktop

حيث الرقم 4 الذي بجانب drwxr-xr-x يعني شيئين :

1- إذا كان لملف فانه يعني عدد links links هي مثل shortcut في ويندوز

2-اذا كان لمجلد فهو يوضح عدد المجلدات الفرعية لهذا الملجد وفي مثالنا هناك 4 مجلدات فرعية في المجلد desktop.

الاسم khaled من جهة اليسار يوضح المالك الاصلي للملف الاسم khaled الذي على يمين الاسم khaled يشير إلى المجموعة التي ينتمي إليها khaled لينكس يقوم بعمل مجموعة للمستخدم بشكل افتراضي وتكون بنفس اسم المستخدم افتراضيا وتستطيع تغييرها,

الرقم 4096 يوضح حجم الملف بالبت bytes

الأرقام Dec 11 01:01 تدل على التاريخ والساعة لاخر عملية تعديل تمت على الملف أو المجلد.

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

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

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

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

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

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

تغيير صلاحية ملف او مجلد chmod[عدل]

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

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

chmod options mode file

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

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

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

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

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

1octal mode 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 وبالتالى تكون هناك طريقة بسيطة للتحويل ما بين هذه الأنظمة خصوصا الثمانى والسادس عشر مع النظام الثنائى والذي يستخدمه الكمبيوتر في تنفيذ عملياته والجدول التالى يوضح كيف يمكن تحويل رقم من نظام ثمانى إلى ثنائى، ومن سادس عشر إلى ثنائى :


والآن تطرقنا إلى نبذة بسيطة عن كيفية تمثيل الأعداد باستخدام أنظمة مختلفة وما يهمنا الآن منها هو النظام الثمانى والذي باستخدامه أمكن تخزين التصاريح الخاصة بأى ملف أو مجلد على النظام بطريقة سهلة جدا حيث تم التعويض عن رمز كل تصريح بعدد معين مثلا الرمز 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 ياعنى انتفاء التصريح الذي توجد هذه العلامة مكانه.

ثانيا : 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 :


ثالثا Numeric Permissions[عدل]

باستخدام Numeric Permissions وفي العادة تستخدم في سيرفرات الأنظمة الشبيهة بيونكس وتحديد الصلاحيات على الملفات والسكربتات.... على الإنترنت. مثل التصريح 777,755

400 صلاحية قراءة للمستخدم مالك الملف

040 صلاحية قراءة من المجموعة المالكة للملف/المجلد

004 صلاحية قراءة من المستخدمين الاخرين على النظام

200 صلاحية كتابة للمستخدم مالك الملف

020 صلاحية كتابة من المجموعة المالكة للملف/المجلد

002 صلاحية كتابة من المستخدمين الاخرين على النظام

100 صلاحية تنفيذ للمستخدم مالك الملف

010 صلاحية تنفيذ من المجموعة المالكة للملف/المجلد

001 صلاحية تنفيذ من المستخدمين الاخرين على النظام

400+040+004+200+100+010+001 = 755

لتغيير التصريح إلى التصريح 755 نطبق الامر التالي :-

chmod 755 file name

حيث file name هو اسم الملف المراد تغيير تصريحه أو ان نضع مسار الملف/مجلد... كامل

التصريح 755 يعادل التصريح rwxr-xr-x

اما التصريح 777 يعادل rwxrwxrwx اي يعطينا تصريح القراءة والكتابة والتنفيذ لكل من المستخدم والمجموعة مالكة الملف والمستخدمون الاخرون على النظام.

تغيير الملكية chown[عدل]

لتغيير ملكية الملف نستخدم الامر chown وصيغته العامة :-

chown newowner filenames

مثال لتغيير ملكية الملف file.txt ال المستخدم khaled

chown khaled file.txt

مثال : لتغيير ملكية الملف file.txt إلى المستخدم khaled والمجموعة khaled

chown khaled:khaled file.txt

روابط خارجية

http://wiki.debian.org/Permissions

http://www.computerhope.com/unix/uchmod.htm