النقاط الرئيسية
- لعرض جميع إدخالات قائمة التحكم بالوصول (ACL) لملف ما، استخدم الأمر ‘getfacl filename’ ولكن استبدل ‘filename’ باسم ملفك.
- لتعيين إدخال ACL جديد لملف، استخدم الأمر ‘setfacl -mu:username:rwx filename’
- لتعيين إدخال قائمة التحكم في الوصول الافتراضية على دليل، استخدم الأمر ‘setfacl -d -mu:username:rwx dirname’
هل أنت مسؤول عن خادم ملفات مشترك بين مجموعات متعددة من الأشخاص، والذين يحتاجون جميعًا إلى مستويات مختلفة من الوصول؟ في هذا البرنامج التعليمي، سنستعرض أساسيات قوائم التحكم في الوصول ونستخدمها في سيناريو مكتب خيالي.
ما هي قوائم التحكم في الوصول (ACLs)؟
تكمل قوائم التحكم في الوصول (ACLs) نموذج أذونات نظام الملفات القياسي في Linux وUnix. باختصار، تسمح لك بالذهاب إلى ما هو أبعد من مفهوم “المستخدم/المجموعة/الآخر” لإنشاء مجموعات إضافية من الأذونات للملفات والدلائل. كما تقوم بأشياء أنيقة مثل تطبيق الأذونات تلقائيًا على الملفات والدلائل الجديدة. ولكن أولاً، دعنا نغطي بعض مفاهيم أذونات نظام الملفات Linux الأساسية التي تعمل قوائم التحكم في الوصول جنبًا إلى جنب معها.
أذونات نظام الملفات القياسي
لفهم أذونات نظام الملفات في Linux، عليك أولاً أن تعلم أن Linux هو “نظام تشغيل متعدد المستخدمين”. وهذا يعني وجود حسابات مستخدمين متعددة تسمح بشكل أساسي لأكثر من شخص بتسجيل الدخول إلى النظام، ولكل منهم حرياته وقيوده الخاصة.
بعض حسابات المستخدم هي حسابات “نظام”؛ أي ليست حسابات يستخدمها شخص ما، بل يستخدمها برنامج ما على سبيل المثال. يتم تشغيل العمليات ضمن هذه الحسابات الخاصة للسماح لها وتقييدها على أجزاء مختلفة من نظام التشغيل، تمامًا كما يفعل حساب المستخدم العادي.
الآن بعد أن فهمنا المستخدمين، يمكنني أن أقدم لكم “المجموعات”. المجموعات سهلة الفهم إلى حد كبير، فهي ببساطة عبارة عن مجموعات من المستخدمين الحاليين. لتعيين إذن لمورد ما لعدد كبير من المستخدمين في نفس الوقت، يمكنك إنشاء مجموعة جديدة ومنح مستخدمين محددين العضوية في تلك المجموعة. ثم تقوم بتعيين إذن للمورد للمجموعة، بدلاً من كل مستخدم فردي. وهذا يجعل الإدارة أسهل وأكثر انسيابية.
حسنًا، دعنا نتحدث عن الملفات والدلائل. هذه هي الموارد التي نهتم بمنح الوصول إليها وحمايته.
تسمح لك معظم أنظمة ملفات Linux (EXT4 وXFS وZFS على سبيل المثال) بتطبيق 3 أذونات أساسية على الملفات والدلائل. هذه الأذونات هي:
- يقرأ: السماح بقراءة ملف (أو قائمة المحتويات داخل دليل)
- يكتب: السماح بالكتابة إلى ملف أو تعديله (أو إنشاء ملفات ومجلدات فرعية) داخل (دليل)
- ينفذ: السماح بتشغيل برنامج أو نص برمجي (أو الدخول إلى دليل، على سبيل المثال باستخدام الأمر cd)
تتمتع جميع الملفات والدلائل الموجودة على نظام الملفات بأذونات قياسية مخصصة لثلاثة كيانات مميزة: المستخدم الذي يمتلكها، ومالك المجموعة، وجميع المستخدمين الآخرين. قد يكون لكل كيان مجموعة من أذونات القراءة والكتابة والتنفيذ (r/w/x) المخصصة. يمكنك استخدام الأمر ls للاطلاع على كل هذه المعلومات:
ls -l mysupersecretfile.txt
- أذونات (المستخدم) (المالك)
- أذونات المجموعة (G)
- أذونات جميع المستخدمين (أو المستخدمين الآخرين)
- امتلاك اسم المستخدم
- اسم المجموعة المالكة
افتراضيًا، يتم تعيين كل مستخدم تم إنشاؤه حديثًا إلى مجموعة أساسية جديدة بنفس الاسم. في المثال أعلاه، الرقم 4 هو اسم المستخدم “user” والرقم 5 هو اسم المجموعة “user”. ضع ذلك في الاعتبار عند النظر إلى مخرجات مثل هذه، فقد تكون مربكة في البداية.
تعتمد الملفات والدلائل التي يُسمح للمستخدمين بتعديلها على عدة أمور، بما في ذلك ما إذا كان المستخدم “يملكها” أو ما إذا كان لديه الأذونات المناسبة للقيام بذلك من خلال عضوية المجموعة. لاحظ أن المستخدم الجذر يمكنه تعديل أي ملف على النظام، بغض النظر عن الملكية.
يعمل هذا النهج الخاص بأذونات نظام الملفات بشكل جيد مع معظم الإعدادات المنزلية والمستقلة. بالطبع، عندما تعمل مع أنظمة حيث يقوم مستخدمون متعددون بالوصول إلى نفس التسلسل الهرمي للملفات، ويجب عليك منح أشخاص معينين حق الوصول إلى بعض المناطق (ومنعهم من الوصول إلى مناطق أخرى)، ستبدأ في فهم أن منهجية “مالك واحد، مجموعة واحدة” القياسية غير كافية بعض الشيء.
كيف تعمل قوائم التحكم في الوصول على تعزيز نموذج الأذونات القياسي
تضيف قوائم التحكم في الوصول القدرة على تطبيق إدخالات الأذونات على مستخدمين ومجموعات متعددة للملفات والدلائل. أحد الأمثلة حيث تكون قوائم التحكم في الوصول خيارًا جيدًا هو عندما تريد تعيين إذن مستخدم معين لملف تم تعيين أذونات محددة لمالكه ومالك المجموعة له بالفعل.
تتبع قوائم التحكم في الوصول الخاصة بالدلائل الأذونات القياسية
ر
/
و
/
س
النموذج الذي يمنحونك القدرة على (
ر
)ead (قائمة المحتويات، ولكن لا تدخل) الدليل، (
و
)rite (إنشاء) ملفات ومجلدات جديدة
داخل
الدليل، و e(
س
)تنفيذ (إدخال) الدليل.
ماذا عن مثال؟ لنفترض أن لديك ملفًا، report.pdf، مملوكًا لمستخدم، peter، يتمتع بأذونات القراءة والكتابة. كما أنك منحت ملكية المجموعة لهذا الملف لمجموعة المحاسبة. والآن تلقيت طلبًا بمنح حق الوصول للقراءة للمستخدم المسمى lumberg.
لنفترض أنك تستخدم نموذج الأذونات القياسي. إليك بعض الأفكار (غير المجدية) لاستكمال هذا الطلب:
- لا يمكنك منح لومبرج عضوية مجموعة المحاسبة (سيمنحه ذلك حق الوصول إلى جميع أنواع الملفات الأخرى التي لا ينبغي له النظر إليها).
- كما أنك لا تريد، كممارسة إدارية سليمة، إنشاء مجموعة جديدة بالكامل تضم مستخدمين من مجموعة المحاسبة بالإضافة إلى Lumberg، فقط لهذا الملف.
- أنت خصوصاً لا أريد فتح الأذونات لجميع المستخدمين الآخرين، لأسباب أمنية واضحة.
ls -l report.pdf
ماذا تفعل؟ حسنا، أنت استطاع ما عليك سوى تناول وجبة غداء مبكرة. ولكن دعنا نستخدم قوائم التحكم في الوصول بدلاً من ذلك!
التحقق من دعم قائمة التحكم بالوصول (ACL) على نظامك
تدعم أغلب توزيعات Linux الحديثة قوائم التحكم في الوصول (ACL) بشكل تلقائي. وتدعمها أغلب أنظمة الملفات الشائعة، وتتضمن خيارات التثبيت الافتراضية الخاصة بها دعم قوائم التحكم في الوصول (ACL)، ويجب أن تتضمن عمليات التثبيت الافتراضية الحزم المناسبة.
للتحقق من أنظمة الملفات ext2/3/4، استخدم tune2fs. على سبيل المثال، إذا كنت تريد التحقق من /dev/sda1 (الذي يحتوي على نظام ملفات ext4):
sudo tune2fs -l /dev/sda1 | grep "Default mount options"
للإشارة، إليك قائمة بأنظمة الملفات المختلفة التي تدعم قوائم التحكم في الوصول، مجمعة حسب النظام الأساسي، كتبتها شركة IBM.
الأمر getfacl
يعرض أمر getfacl قوائم التحكم في الوصول إلى الملفات والدلائل. إذا قمت بتشغيل getfacl على ملف التقرير الخاص بنا من الأعلى، فسترى:
getfacl report.pdf
في الوقت الحالي يظهر الناتج الحد الأدنى لقائمة التحكم في الوصول يتضمن الحد الأدنى لقائمة التحكم في الوصول الأذونات القياسية للمالك والمجموعة المالكة وجميع المستخدمين الآخرين.
لو كان هناك قائمة التحكم بالوصول الموسعة مدخل لمستخدم آخر، دعنا نطلق عليه مايكل، سنرى هذا:
getfacl report.pdf
بالإضافة إلى قوائم التحكم في الوصول الدنيا، لدينا الآن إدخال قائمة تحكم في الوصول ممتد للمستخدم michael (أذونات القراءة والكتابة). إذا قمت بإدراج الملف مرة أخرى باستخدام قوائم التحكم في الوصول الممتدة، فستلاحظ علامة زائد (+) على يمين أذونات “المستخدمين الآخرين”، مما يشير إلى وجود إدخالات قائمة تحكم في الوصول الممتدة:
ls -l report.pdf
الأمر setfacl
الأمر setfacl هو ما يفعله بالفعل مجموعات قوائم التحكم في الوصول للملفات والدلائل. فهي تضيف وتحذف إدخالات المستخدم والمجموعات، وتعدل الأذونات والمهام الأخرى مثل تعيين قوائم التحكم في الوصول الافتراضية للدلائل والعمل باستخدام الأقنعة. وسوف نستخدمها لإكمال الطلب أعلاه من خلال منح مستخدم lumberg حق الوصول إلى report.pdf.
لإضافة إدخال قائمة التحكم بالوصول للمستخدم الجديد، ستستخدم setfacl مع هذا النحو (الذي سأشرحه بالتفصيل أدناه):
sudo setfacl -m u:lumberg:r report.pdf
- -م يعني أننا نقوم بتعديل إدخال قائمة التحكم في الوصول للملف
- و: يعني أنه مستخدم نضيفه، متبوعًا بفاصل نقطتين (:) (a ج: يضيف مجموعة و أو: يضيف أذونات جميع المستخدمين الآخرين)
- خشب: هو اسم المستخدم الذي نضيفه، متبوعًا بفاصل نقطتين آخر
- ر يعني أننا نضيف أذونات القراءة (فقط) إلى الإدخال
- تقرير.pdf هو اسم الملف الذي نضيف إليه إدخال قائمة التحكم في الوصول (ACL)
الآن بعد أن تم ضبط ذلك، يمكننا إلقاء نظرة، باستخدام getfacl، مرة أخرى:
getfacl report.pdf
هل لاحظت دخولنا الجديد؟
قوائم التحكم بالوصول الافتراضية
تنطبق قوائم التحكم في الوصول الافتراضية على الدلائل (المجلدات) فقط. عند تعيين قائمة تحكم في الوصول الافتراضية على دليل، سيتم تطبيق الإدخال الذي تحدده تلقائيًا على كل ملف جديد ومجلد جديد بداخله، بغض النظر عن منشئهما. إنه نوع من النهج المتكرر الذي يجمع كل شيء، مما يجعله مفيدًا جدًا عند التخطيط لتسلسل نظام الملفات الخاص بك.
دعنا نتأكد من أن Lumberg سيكون قادرًا على قراءة الملفات الجديدة وإدخال الدلائل الجديدة التي تم إنشاؤها ضمن المحاسبة. سنستخدم الخيار -d لإضافة قائمة التحكم بالوصول الافتراضية:
sudo setfacl -d -m u:lumberg:rX Accounting
حرف كبير
إكس
يطبق إذن التنفيذ فقط على الدلائل الفرعية الجديدة؛ وليس الملفات.
قوائم التحكم في الوصول رائعة عندما تريد رفع أذونات نظام الملفات لديك إلى المستوى التالي. يمكنك تحقيق الكثير من خلال أذونات المستخدم/المجموعة/الآخرين القياسية، ولكن من المحتمل أن تكون هناك نقطة في رحلتك حيث يصبح استخدام قوائم التحكم في الوصول أكثر منطقية.