يجد كثير من مستخدمي لينكس والأنظمة الشبيهة بيونكس عموما مشاكل في فهم أذونات Permissions الملفات والمجلّدات. يتعلق الأمر أحيانا بترتيب أوضاع بتات القراءة، الكتابة أو التنفيذ؛ بينما تكمن الصعوبة أحيانا أخرى بفهم رموز العدّ الثمانيّ Octal أو ربما كيفية حل لغز بت setuid
والبت اللاّصق Sticky bit.
يتوجّه هذا المقال إلى من لم يفهم قطّ هذه الأذونات بالدرجة الأولى وإلى من يجد خلطا من حين لآخر في تفاصيلها.
راجع أيضا مقال مقدّمة إلى أذونات لينكس Linux Permissions.
الأساسيات
نبدأ أولا بالنظر إلى مخرجات أمر ls
:
ls -lah -rwxr-xr-- 1 daniel consultants 5K Mar 10 06:55 scanner.rb -rwxr-xr-x 1 sarah teachers 18M Jul 30 10:07 papers.tar.bz2
-
ثلاث مجموعات من ثلاثة أحرف: بما أن الأمر يتعلّق هنا بملفات فستظهر عارضة
-
في أول كل مُخرَج (سطر) . تلي العارضة مجموعة محارف (9 بالضبط، تدخُل العوارض-
في الحساب) سنصطلح على تقسيمها إلى ثلاث مجموعات فرعية متساوية (3x3). -
المستخدِم-المجموعة-الآخرون: نسمي المجموعات الثلاث على الترتيب المستخدِم User, U، مجموعة المستخدم Group, G والآخرين Other, O. يعني هذا أن أول مجموعة محارف (
rwx
في السطريْن) تتعلق بالمستخدِم مالك الملفّ، الثانية (r-x
في السطريْن) تتعلّق بمجموعة المستخدمين مالكة الملفّ والثالثة (--r
في السطر الأول وr-x
في السطر الثاني) تعني الآخرين أي بقية المستخدمين. - صاحب (مالك) الملف: يظهر في نتيجة الأمر المستخدم مالك الملف ومجموعة المستخدمين مالكة الملف كذلك، لكنك لن ترى الآخرين. يعود السبب في ذلك إلى أن أذونات الآخرين (مجموعة المحارف الأخيرة ضمن المجموعات الثلاث أعلاه) تنطبق على كل من ليس مالكَ الملف وليس ضمن مجموعة المستخدمين صاحبة الملف.
الأعداد الثلاثة
يرتبك بعضهم عندما يرى الأذونات مذكورة بصيغة مجموعة من ثلاثة أعداد، لكنّ الأمر ليس بهذا التعقيد. تذكّر فقط أن هذه الأعداد هي أماكن تحوي الرقم الموافق للإذن حسب الترتيب (من اليسار إلى اليمين): r
(القراءة)، w
(الكتابة) وx
(التنفيذ).
لاحظ الصورة. بالنسبة لكلّ رمز، نضربه في 1
إذا كان مذكورا في الأذونات وفي 0 إن لم يكن (تظهر عارضة مكانه)، ثم نجمع نتيجة كل ثلاثي.
الأذونات على المجلدات
يجب الانتباه إلى أن الأذونات على المجلدات تختلف عنها على الملفات. توحي أسماء الأذونات على الملفات بعملها: قراءة الملف (r
)، الكتابة فيه أو حذفه (w
) وتنفيذه (x
)؛ بينما الدلالة مختلفة قليلا في المجلدات:
- يعني إذن القراءة على مجلد أن بإمكانك عرض المجلّد.
- يدلّّ إذن الكتابة أن لديك القدرة على إنشاء محتوى في المجلد أو حذفه منه.
-
يشير إذن التنفيذ إلى أنه بالإمكان الدخول إلى المجلّد، تنفيذ أمر
cd
عليه مثلا.
البت اللاصق، معرف المستخدم ومعرف المجموعة
تمثّل هذه الخيارات الثلاثة الجزئية الأكثر تعقيدا لدى الكثيرين في أذونات لينكس.
معرف المستخدم
صُمِّم خيار معرّف المستخدم setuid
(اختصار لـ Set user ID upon execution "اضبط معرّف المستخدم أثناء التنفيذ") لحلّ مشكل أساسي: غياب الإذن الكافي لتنفيذ بعض البرامج. كان حلّ هذا المشكل بإضافة خيار إلى الملف يقول “نفّذ هذا البرنامج وفق أذونات المستخدم الذي يملكه بغضّ النظر عن المستخدم الذي ينفّذ الملف”. ينبغي الحذر من استخدام هذا الخيار - الذي أصبح متجاوزا - إذ قد يؤدي لأخطار أمنية. إن حدث ومررت بإذن على النحو التالي فأنت أمام خيار setuid
:
-rwsr-xr-- 1 daniel consultants 5K Mar 10 06:55 scanner.rb
لاحظ حرف s
في أذونات المستخدم مالك الملف مكان إذن التنفيذ x
. يشير حرف s
إلى أن إذن setuid
مضبوط. يظهر حرف s
في المثال أعلاه صغيرا Lowercase وهو ما يعني أن خيار التنفيذ متاح أيضا لمالك الملف. إن كان خيار setuid
فقط مضبوطا (بمعنى أنه لا يُتاح لمالك الملف إذن تنفيذه) فسيظهر الحرف كبيرا Uppercase هكذا S
.
ملحوظة: ينطبق التنبيه أعلاه بخصوص هيئة الحرف (صغير أو كبير) على جميع خيارات الأذونات الخاصة. المبدأ العام هو: إذا كان الحرف الذي يشير للإذن الخاص صغيرا فهذا يعني أن الإذن لدى المالك أيضا، أما إذا كان كبيرا فهذا يعني أنه ليس لدى المالك هذا الإذن.
معرف المجموعة setguid
يشبه الخيّار السابق في عمله مع فرق أنه يُطبَّق على مجموعة المستخدمين المالكة للملف بدلا من المستخدم المالك:
-rwxr-Sr-x 1 bjones principals 101K Aug 16 04:01 grades.xml
الفرق هنا بالمقارنة مع المثال في الفقرة السابقة هو أن حرف S
يوجد ضمن أذونات المجموعة بدلا من المستخدِم. لاحِظ أيضا أن الحرف S
في هذا المثال كبير وهو ما يعني أنّه ليس لدى المجموعة المالكة (principals
في هذه الحالة) إذن التنفيذ ولكن عند تنفيذ المستخدِم bjones
(المالك) أو مستخدم آخر ليس ضمن مجموعة principals
للملف فإنّ التنفيذ سيكون بصلاحيات المجموعة المالكة.
البت اللاصق
يُستخدم هذا البت من أجل منع مستخدمين من التعديل على أو حذف ملفات مستخدِم أو مجموعة مستخدمين. يمكن تطبيق البت اللّاصق على ملفات عادية ولكنّه يُطبَّق أكثر على المجلّدات. نفرض مثلا أنك وضعت مجلدا تحت تصرّف مجموعة من التلاميذ ثم منحت لكل طالب مجلدا خاصا به. يمكن باستخدام البتّ اللاصق التأكد من أنه لن يكون بإمكان طالب حذفُ محتوى مجلد خاصّ بطالب آخر.
يبدو البت اللاّصق كما يلي (لاحظ حرف t
):
drwxr-xr-t 1 alice alice 4.4K 2007-01-01 09:21 Alice
التعديل على الأذونات
استخدم أمر chmod
لتعديل أذونات ملفّ بذكر الأذونات الجديدة التي تريد تطبيقها. يغيّر الأمر التالي أذونات مجلد الويب لتصبح 755
:
chmod 755 web_directory
يغيّر الأمر أدناه أذونات ملف لتصبح 644
:
chmod 644 grocery_list.txt
تعيين معرف المستخدم، معرف المجموعة والبت اللاصق
يمكن استخدام أمر chmod
أيضا لتعيين الأذونات الخاصّة.
-
لتعيين معرّف المستخدم (نضيف
4
أمام الأذونات الاعتيادية):
chmod 4644 script.rb
- يمكن أيضا استخدام طريقة إضافة الأذونات الأخرى:
chmod u+s script.rb
-
لتعيين معرّف المجموعة (نضيف
2
أمام الأذونات الاعتيادية):
chmod 2644 script.rb
أو:
chmod g+s script.rb
-
لتعريف البت اللّاصق (نضيف
1
أمام الأذونات الاعتيادية):
chmod 1644 myfiles
أو:
chmod o+t myfiles
ترجمة -وبتصرّف- للمقال A Unix and Linux Permissions Primer لصاحبه Daniel Miessler.
أفضل التعليقات
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.