في المقال الأخير (سلسلة RHCSA الجزء 6) بدأنا في شرح كيفية إعداد وتكوين تخزين النظام المحلي باستخدام parted و ssm.

ناقشنا أيضًا كيفية إنشاء وتركيب الأقراص المشفرة بكلمة مرور أثناء تمهيد النظام. بالإضافة إلى ذلك، حذرناك من أداء عمليات إدارة التخزين الحرجة على أنظمة الملفات المُركبة. مع ذلك في الاعتبار، سنستعرض الآن الأنماط الأكثر استخدامًا لأنظمة الملفات في Red Hat Enterprise Linux 7 ومن ثم نقوم بتغطية مواضيع التركيب والاستخدام و فك الارتباط يدويًا وتلقائيًا لأنظمة الملفات عبر الشبكة (CIFS و NFS)، بالإضافة إلى تنفيذ قوائم التحكم في الوصول لنظامك.
الشروط المسبقة
قبل المتابعة، يرجى التأكد من توفر خادم Samba وخادم NFS (يرجى ملاحظة أن NFSv2 لم يعد مدعومًا في RHEL 7).
خلال هذا الدليل، سنستخدم جهازًا يحمل عنوان IP 192.168.0.10 مع كلا الخدمتين يعملان فيه كخادم، وصندوق RHEL 7 كعميل مع عنوان IP 192.168.0.18. في وقت لاحق في المقال سنخبرك بالحزم التي تحتاج إلى تثبيتها على العميل.
أنماط نظام الملفات في RHEL 7
ابتداءً من RHEL 7 ، تم تقديم XFS كنظام ملف افتراضي لجميع الهندسات بسبب أدائه العالي وتوسعه. يدعم حاليًا أقصى حجم للنظام الملفي حسب آخر اختبارات أجرتها Red Hat وشركاؤها للأجهزة الرئيسية 500 تيرابايت .
بالإضافة إلى ذلك، يمكن لـ XFS تمكين user_xattr (سمات المستخدم الموسعة) و acl (قوائم التحكم في الوصول POSIX) كخيارات تحميل افتراضية، على عكس ext3 أو ext4 (يعتبر ext2 منهمكمًا اعتبارًا من RHEL 7)، وهذا يعني أنه لا يلزمك تحديد تلك الخيارات بشكل صريح إما في سطر الأوامر أو في /etc/fstab عند تحميل نظام ملفات XFS (إذا كنت ترغب في تعطيل مثل هذه الخيارات في هذه الحالة الأخيرة، يجب عليك استخدام no_acl و no_user_xattr بشكل صريح).
تذكر أنه يمكن تعيين السمات المستخدمة الموسعة للملفات والمجلدات لتخزين معلومات إضافية تعتيبر عشوائية مثل نوع الوسائط، ومجموعة الأحرف أو ترميز الملف، في حين يتم تحديد أذونات الوصول للسمات المستخدمة بواسطة بتات الإذن العادية للملف.
قوائم التحكم في الوصول
كما يعرف كل مسؤول نظام، سواء كان مبتدئًا أو خبيرًا، الصلاحيات العادية للوصول إلى الملفات والمجلدات، التي تحدد امتيازات معينة (قراءة، كتابة، و تنفيذ) للمالك، والمجموعة، و”العالم” (جميع الآخرين). ومع ذلك، لا تتردد في الرجوع إلى الجزء 3 من سلسلة RHCSA إذا كنت بحاجة إلى تجديد ذاكرتك قليلاً.
ومع ذلك، نظرًا لأن مجموعة ugo/rwx القياسية لا تسمح بتكوين صلاحيات مختلفة لمستخدمين مختلفين، تم إدخال ACLs من أجل تحديد حقوق الوصول للملفات والمجلدات بتفصيل أكبر مما يُحدده الأذونات العادية.
في الواقع، تعد الصلاحيات المحددة بواسطة ACL مجموعة فرعية للصلاحيات المحددة بواسطة بتات إذن الملف. دعونا نرى كيف يتم تطبيق كل هذا في العالم الحقيقي.
1. هناك نوعان من ACLs: ACLs الوصول، التي يمكن تطبيقها إما على ملف محدد أو مجلد، و ACLs الافتراضية، التي يمكن تطبيقها فقط على مجلد. إذا لم يتم تعيين ACL للملفات الموجودة فيه، فإنها ترث ACL الافتراضية لمجلد الوالدين.
2. للبدء، يمكن تكوين ACLs لكل مستخدم، أو لكل مجموعة، أو لمستخدم ليس في مجموعة الملف المملوك له.
3. تُعيّن (وتُزيل) قواعد التحكم في الوصول باستخدام setfacl، بخيارات -m أو -x على التوالي.
على سبيل المثال، دعونا ننشئ مجموعة تحمل اسم tecmint ونضيف المستخدمين johndoe و davenull إليها:
# groupadd tecmint # useradd johndoe # useradd davenull # usermod -a -G tecmint johndoe # usermod -a -G tecmint davenull
ولنتحقق الآن من أن كلا المستخدمين ينتميان إلى المجموعة الفرعية tecmint:
# id johndoe # id davenull

لننشئ الآن دليلاً يحمل اسم playground ضمن /mnt، وملفًا يحمل اسم testfile.txt بالداخل. سنُعيّن مالك المجموعة إلى tecmint ونُغيّر أذوناته الافتراضية ugo/rwx إلى 770 (أذونات القراءة والكتابة والتنفيذ مُمنحة لكل من المالك ومالك المجموعة للملف):
# mkdir /mnt/playground # touch /mnt/playground/testfile.txt # chmod 770 /mnt/playground/testfile.txt
ثم قم بتبديل المستخدم إلى johndoe و davenull، بترتيبهما، واكتب إلى الملف:
echo "My name is John Doe" > /mnt/playground/testfile.txt echo "My name is Dave Null" >> /mnt/playground/testfile.txt
حتى الآن كل شيء على ما يُرام. الآن دعونا نسمح للمستخدم gacanepa بالكتابة إلى الملف – وسيفشل العملية بالكتابة، كما كان متوقعًا.
لكن ماذا لو كنا فعلًا بحاجة للمستخدم gacanepa (الذي ليس عضوًا في المجموعة tecmint) بأذونات كتابة على /mnt/playground/testfile.txt؟ الشيء الأول الذي قد يخطر ببالك هو إضافة حساب هذا المستخدم إلى المجموعة tecmint. ولكن ذلك سيمنحه أذونات كتابة على جميع الملفات التي تم تعيين بتها للمجموعة، ونحن لا نريد ذلك. نريد فقط أن يكون قادرًا على الكتابة إلى /mnt/playground/testfile.txt.
# touch /mnt/playground/testfile.txt # chown :tecmint /mnt/playground/testfile.txt # chmod 777 /mnt/playground/testfile.txt # su johndoe $ echo "My name is John Doe" > /mnt/playground/testfile.txt $ su davenull $ echo "My name is Dave Null" >> /mnt/playground/testfile.txt $ su gacanepa $ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

لنعطِ المستخدم gacanepa حق القراءة والكتابة إلى /mnt/playground/testfile.txt.
قم بتشغيله كمسؤول النظام،
# setfacl -R -m u:gacanepa:rwx /mnt/playground
وستكون قد أضفت ACL يسمح لـ gacanepa بالكتابة إلى ملف الاختبار. ثم قم بالتبديل إلى مستخدم gacanepa وحاول الكتابة إلى الملف مرة أخرى:
$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt
لعرض ACLs لملف أو دليل محدد، استخدم getfacl:
# getfacl /mnt/playground/testfile.txt

لتعيين ACL الافتراضي لدليل (سيورث محتوياته ما لم يتم الكتابة فوقها بشكل مختلف)، أضف d: قبل القاعدة وحدد دليلاً بدلاً من اسم ملف:
# setfacl -m d:o:r /mnt/playground
ستسمح ACL أعلاه للمستخدمين الذين ليسوا في مجموعة المالك بالقراءة إلى محتويات دليل /mnt/playground. لاحظ الفارق في إخراج getfacl /mnt/playground قبل وبعد التغيير:

الفصل 20 في دليل إدارة التخزين الرسمي RHEL 7 يقدم المزيد من أمثلة ACL، وأوصي بشدة بالاطلاع عليه والاحتفاظ به كمرجع.
Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/