النقاط الرئيسية
- تعتبر أذونات ملفات Linux ضرورية للتحكم، ويمكن أن يؤدي استنساخ إعدادات الملف التي تم تكوينها بشكل صحيح إلى إصلاح الأذونات الخاطئة بسرعة.
- يمكن أن تؤدي الأخطاء البسيطة في أوامر chown وchmod إلى حدوث فوضى، ولكن استنساخ chown وchmod يمكنه استعادة أذونات الملفات بكفاءة.
- يمكنك استخدام نفس تقنية الاستنساخ مع قوائم التحكم في الوصول أيضًا.
تتحكم أذونات الملفات في Linux في من يمكنه القيام بماذا بالملفات والدلائل. ولكن إذا تعرضت هذه الأذونات للتلف، فقد يكون استعادتها أمرًا صعبًا. يعد استنساخ أذونات الملف العامل الحل الأسرع.
الفوضى والتوتر الناتج عن الأذونات السيئة
في Linux، تحتوي الملفات والدلائل على مجموعة من الأذوناتإنهم يتحكمون في الإجراءات التي يمكن تنفيذها، ومن قبل من.
تسمح الأذونات لشخص ما بالقراءة من ملف أو الكتابة فيه أو تنفيذه أو تمنعه من ذلك. بالنسبة للملف، يعني التنفيذ تشغيل نص برمجي أو تطبيق. بالنسبة للدليل، يعني التنفيذ الانتقال إلى هذا الدليل باستخدام الأمر cd.
تؤثر الأذونات بشكل مباشر على التشغيل السليم وأمان جهاز الكمبيوتر الخاص بك. يمكن أن تتسبب الأذونات المعينة بشكل سيئ في حدوث فوضى، مما يؤدي فعليًا إلى إبعاد بياناتك عن متناولك.
الملفات لديها أيضا المالكين. عند إنشاء مستخدمين جدد، تتم إضافتهم إلى مجموعة تحمل نفس اسم تسجيل الدخول الخاص بهم. بشكل افتراضي، يمتلك المستخدم جميع الملفات التي أنشأها، ويتم تعيين مجموعة الملف على مجموعة المستخدم. يحتوي الملف أو الدليل على ثلاث مجموعات من الأذونات. واحدة للمالك، وأخرى لأعضاء مجموعة الملف، وثالثة للجميع الذين ليسوا ضمن الفئتين الأوليين.
قد يؤدي فك ضغط ملفات الأرشيف القديمة أو استعادة المعلومات من النسخ الاحتياطية التي تم إجراؤها على أجهزة كمبيوتر مختلفة إلى ترك الملفات، ولكن بأذونات غير دقيقة بشكل مؤسف. قد تقع في موقف مماثل إذا ارتكبت أخطاء مع أوامر chown وchmod. يحدد أمر chmod أذونات الملف، ويحدد أمر chown ملكية الملف.
إن إصلاح هذه الأنواع من حالات الخطأ يدويًا أمر مرهق. والحل هو استخدام chown وchmod لاستنساخ إعدادات ملف تم تكوينه بشكل صحيح.
المشكلة؟
كنت بحاجة إلى بعض الملفات من ملف أرشيف تم إرساله إليّ. قمت بفك ضغط الأرشيف، لكن الدليل المستخرج كان يحمل شارة قفل على أيقونته.
كان عليّ تقديم كلمة مرور الجذر للدخول إلى الدليل. لم يكن النقر المزدوج وحده كافيًا.
يكشف التحقق باستخدام ls (مرة أخرى، باستخدام sudo) عن المشكلة.
sudo ls -hld project
المستخدم الجذر هو مالك الدليل، ولا يمتلك أي شخص أذونات القراءة أو الكتابة.
الملفات والدلائل الفرعية مملوكة أيضًا للجذر، والأذونات عبارة عن مزيج من الإعدادات غير الصحيحة المختلفة.
sudo ls -hl project
دعونا نحل مشاكل الملكية أولاً.
استنساخ الملكية باستخدام chown
أريد تعيين ملكية الملف لي. اسم المستخدم الخاص بي هو dave. سنستخدم الأمر chown، وننسخ إعدادات الملكية من دليل تم تعيينه بشكل صحيح.
sudo chown -R --reference=/home/dave/Downloads project
ال –مرجع يخبر الخيار chown بالدليل الذي سيتم نسخ إعدادات الأذونات منه. -ر يخبر الخيار (المتكرر) chown بتعيين الأذونات الجديدة على الدليل المستهدف، وعلى جميع الملفات والدلائل الفرعية.
يمكننا التحقق باستخدام ls من أن المستخدم dave هو الآن مالك الملفات والدلائل. ما زلنا بحاجة إلى استخدام sudo لأننا لم نقم بترتيب الأذونات بعد.
sudo ls -hl project
الآن بعد أن استعدنا ملكية الملفات والدلائل، يمكننا إصلاح الأذونات.
استنساخ الأذونات باستخدام chmod
هذه عملية مشابهة جدًا لتلك التي استخدمناها مع chown، ولكننا بحاجة إلى أن نكون أكثر حذرًا مع الأذونات.
إن ضبط الملكية أمر سهل. فكل الملفات والدلائل مملوكة لنفس المستخدم، وبالتالي فإنها تتلقى جميعها نفس الإعدادات. ولكن الدلائل والملفات القابلة للتنفيذ يجب أن يكون لها إذن x (تنفيذ) معين لها. أما الملفات العادية فلا تحتاج إلى تعيين هذا الإذن. لذا، نحتاج إلى إنشاء عدة مجموعات من الأذونات وتطبيقها على الملفات المناسبة. ويمكننا القيام بذلك في ثلاث خطوات.
سنستخدم ملفًا عاديًا كملف مرجعي أولاً. سيؤدي هذا إلى تعيين الأذونات كما لو كان كل شيء عبارة عن ملف عادي. بعد ذلك سنستخدم ملفًا مرجعيًا قابل للتنفيذ ملف لتعيين الأذونات لأي نصوص برمجية. وأخيرًا، سنستخدم chmod بالطريقة التقليدية لتعيين إذن التنفيذ للمجلدات.
خطوتنا الأولى هي استخدام الملف العادي كملف مرجعي:
sudo chmod -R --reference=/home/dave/Downloads/existing.dat project
يمكننا استخدام ls لمعرفة التأثير الذي أحدثه ذلك.
sudo ls -hld projectsudo ls -hl project
تم تكرار الأذونات من ملف المرجع (القراءة والكتابة للمالك والمجموعة، والقراءة فقط للآخرين) على كافة الملفات والدلائل.
نحن بحاجة إلى استعادة إذن التنفيذ لأي نصوص برمجية. لدينا نص برمجي مرجعي يمكننا الحصول على الأذونات منه.
sudo chmod -R --reference=/home/dave/Downloads/existing.sh project/*.sh
نحن نستخدم رمز البدل “*” لأنه سيتعامل مع أي ملف نصي في شجرة الدليل بأكملها، بغض النظر عن اسمه.
يمكننا أن نرى أنه تم تعيين إذن التنفيذ على الملف “appveyor.sh”.
sudo ls -hl project
تتضمن استعادة إذن التنفيذ على الدلائل خدعة أنيقة. لا يمكننا استخدام حرف بدل لأنه من المحتمل أن يتطابق مع الملفات أيضًا. لذا فإن ما نفعله هو استخدام أحرف كبيرة علم إذن X. هذا يعني “تعيين البت القابل للتنفيذ فقط إذا كان الهدف هو ملف يحتوي على البت القابل للتنفيذ بالفعل مجموعة، أو هو دليل.
يمكننا استخدام هذا لأن نصوصنا القابلة للتنفيذ تحتوي بالفعل على بت قابل للتنفيذ، وستحتفظ به. ستحتوي جميع الدلائل الموجودة في شجرة الدلائل على بت قابل للتنفيذ أيضًا.
sudo chmod -R +X project
لقد عادت الأمور الآن إلى حالتها الطبيعية مع الملكية الصحيحة والأذونات الصحيحة والدلائل التي تسمح لك بالدخول إليها.
ls -hl project
استنساخ كل شيء باستخدام setfacl
إذا كنت تستخدم قوائم التحكم في الوصول (ACLs)، فما زال بإمكانك استنساخ الإعدادات من ملف تم تعيينه بشكل صحيح إلى ملفات أخرى. تمنحك قوائم التحكم في الوصول تحكمًا مفصلاً، مما يسمح لك بالقيام بأشياء مثل تحديد الأذونات على أساس كل مستخدم، مع حصول المستخدمين المختلفين على أذونات مختلفة.
لاستنساخ الإعدادات، نحتاج إلى نقل الإعدادات من ملفنا الذي تم تكوينه بشكل صحيح إلى الأمر لتعيين الأذونات.
يمكننا رؤية إعدادات ACL على الملف الموجود باستخدام الأمر getfacl.
getfacl existing.file
المالك، dave لديه أذونات القراءة والكتابة والتنفيذ. المستخدم mary لديه أذونات القراءة والكتابة. لاستنساخ هذه الإعدادات إلى الملفات الموجودة في دليل المشروع، نستخدم الأمر setfacl. نقوم بإدخال الناتج من الأمر getfacl للتأكد من الحصول على إعدادات قائمة التحكم في الوصول التي نريدها. الملفات التي نريد تطبيق إعدادات قائمة التحكم في الوصول عليها موجودة في دليل يسمى “source”.
getfacl /home/dave/Downloads/existing.file | setfacl --set-file=- source
ال –set-file عادةً ما يأخذ الخيار اسم الملف الذي تريد نسخ الإعدادات إليه منيؤدي استخدام شرطة واحدة “-” كاسم للملف إلى إخبار setfacl باستخدام stdin كمصدر للبيانات. ستكون هذه هي البيانات التي يتم توصيلها.
يؤدي النظر إلى أي من الملفات الموجودة في دليل المصدر إلى التأكد من تطبيق إعدادات قائمة التحكم في الوصول المنسوخة.
getfacl terminal.c
من الفوضى إلى النظام
إن رؤية الفوضى التي تتراكم عليك أحيانًا بعد تنزيل الملفات أو استعادتها أو فك أرشفتها قد تجعلك تشعر بالحزن. ولكن من السهل جدًا إعادة النظام إلى هذه الفوضى باستخدام بضعة أوامر فقط، مع استخدامها بالترتيب الصحيح.