هذه الحيلة في الاستنساخ في لينكس ستوفر عليك مشاكل الأذونات

النقاط الرئيسية

  • تعتبر أذونات ملفات Linux ضرورية للتحكم، ويمكن أن يؤدي استنساخ إعدادات الملف التي تم تكوينها بشكل صحيح إلى إصلاح الأذونات الخاطئة بسرعة.
  • يمكن أن تؤدي الأخطاء البسيطة في أوامر chown وchmod إلى حدوث فوضى، ولكن استنساخ chown وchmod يمكنه استعادة أذونات الملفات بكفاءة.
  • يمكنك استخدام نفس تقنية الاستنساخ مع قوائم التحكم في الوصول أيضًا.



تتحكم أذونات الملفات في Linux في من يمكنه القيام بماذا بالملفات والدلائل. ولكن إذا تعرضت هذه الأذونات للتلف، فقد يكون استعادتها أمرًا صعبًا. يعد استنساخ أذونات الملف العامل الحل الأسرع.


الفوضى والتوتر الناتج عن الأذونات السيئة

في Linux، تحتوي الملفات والدلائل على مجموعة من الأذوناتإنهم يتحكمون في الإجراءات التي يمكن تنفيذها، ومن قبل من.

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

تؤثر الأذونات بشكل مباشر على التشغيل السليم وأمان جهاز الكمبيوتر الخاص بك. يمكن أن تتسبب الأذونات المعينة بشكل سيئ في حدوث فوضى، مما يؤدي فعليًا إلى إبعاد بياناتك عن متناولك.


الملفات لديها أيضا المالكين. عند إنشاء مستخدمين جدد، تتم إضافتهم إلى مجموعة تحمل نفس اسم تسجيل الدخول الخاص بهم. بشكل افتراضي، يمتلك المستخدم جميع الملفات التي أنشأها، ويتم تعيين مجموعة الملف على مجموعة المستخدم. يحتوي الملف أو الدليل على ثلاث مجموعات من الأذونات. واحدة للمالك، وأخرى لأعضاء مجموعة الملف، وثالثة للجميع الذين ليسوا ضمن الفئتين الأوليين.

قد يؤدي فك ضغط ملفات الأرشيف القديمة أو استعادة المعلومات من النسخ الاحتياطية التي تم إجراؤها على أجهزة كمبيوتر مختلفة إلى ترك الملفات، ولكن بأذونات غير دقيقة بشكل مؤسف. قد تقع في موقف مماثل إذا ارتكبت أخطاء مع أوامر chown وchmod. يحدد أمر chmod أذونات الملف، ويحدد أمر chown ملكية الملف.

إن إصلاح هذه الأنواع من حالات الخطأ يدويًا أمر مرهق. والحل هو استخدام chown وchmod لاستنساخ إعدادات ملف تم تكوينه بشكل صحيح.

المشكلة؟

كنت بحاجة إلى بعض الملفات من ملف أرشيف تم إرساله إليّ. قمت بفك ضغط الأرشيف، لكن الدليل المستخرج كان يحمل شارة قفل على أيقونته.


أيقونة دليل عليها شارة قفل تشير إلى أن المستخدم الحالي ليس لديه حق الوصول إليها

كان عليّ تقديم كلمة مرور الجذر للدخول إلى الدليل. لم يكن النقر المزدوج وحده كافيًا.

GNOME يطلب كلمة مرور الجذر للسماح بالوصول إلى الدليل

يكشف التحقق باستخدام ls (مرة أخرى، باستخدام sudo) عن المشكلة.

sudo ls -hld project

فحص الأذونات على الدليل باستخدام ls


المستخدم الجذر هو مالك الدليل، ولا يمتلك أي شخص أذونات القراءة أو الكتابة.

الملفات والدلائل الفرعية مملوكة أيضًا للجذر، والأذونات عبارة عن مزيج من الإعدادات غير الصحيحة المختلفة.

sudo ls -hl project

استخدام ls لفحص الأذونات على الملفات والدلائل الفرعية

دعونا نحل مشاكل الملكية أولاً.

استنساخ الملكية باستخدام chown

أريد تعيين ملكية الملف لي. اسم المستخدم الخاص بي هو dave. سنستخدم الأمر chown، وننسخ إعدادات الملكية من دليل تم تعيينه بشكل صحيح.

sudo chown -R --reference=/home/dave/Downloads project

نسخ ملكية الملف بشكل متكرر من دليل إلى آخر


ال –مرجع يخبر الخيار chown بالدليل الذي سيتم نسخ إعدادات الأذونات منه. يخبر الخيار (المتكرر) chown بتعيين الأذونات الجديدة على الدليل المستهدف، وعلى جميع الملفات والدلائل الفرعية.

يمكننا التحقق باستخدام ls من أن المستخدم dave هو الآن مالك الملفات والدلائل. ما زلنا بحاجة إلى استخدام sudo لأننا لم نقم بترتيب الأذونات بعد.

sudo ls -hl project

التحقق من ملكية الدلائل والملفات باستخدام ls

الآن بعد أن استعدنا ملكية الملفات والدلائل، يمكننا إصلاح الأذونات.

استنساخ الأذونات باستخدام chmod

هذه عملية مشابهة جدًا لتلك التي استخدمناها مع chown، ولكننا بحاجة إلى أن نكون أكثر حذرًا مع الأذونات.


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

سنستخدم ملفًا عاديًا كملف مرجعي أولاً. سيؤدي هذا إلى تعيين الأذونات كما لو كان كل شيء عبارة عن ملف عادي. بعد ذلك سنستخدم ملفًا مرجعيًا قابل للتنفيذ ملف لتعيين الأذونات لأي نصوص برمجية. وأخيرًا، سنستخدم chmod بالطريقة التقليدية لتعيين إذن التنفيذ للمجلدات.

خطوتنا الأولى هي استخدام الملف العادي كملف مرجعي:

sudo chmod -R --reference=/home/dave/Downloads/existing.dat project


نسخ الملفات وتعيين أذوناتها بشكل متكرر باستخدام chmod

يمكننا استخدام ls لمعرفة التأثير الذي أحدثه ذلك.

sudo ls -hld project 

sudo ls -hl project

التحقق من أذونات الملفات على الدليل ومحتوياته باستخدام ls

تم تكرار الأذونات من ملف المرجع (القراءة والكتابة للمالك والمجموعة، والقراءة فقط للآخرين) على كافة الملفات والدلائل.

نحن بحاجة إلى استعادة إذن التنفيذ لأي نصوص برمجية. لدينا نص برمجي مرجعي يمكننا الحصول على الأذونات منه.

sudo chmod -R --reference=/home/dave/Downloads/existing.sh project/*.sh


ضبط الأذونات للبرامج النصية القابلة للتنفيذ بشكل متكرر باستخدام chmod

نحن نستخدم رمز البدل “*” لأنه سيتعامل مع أي ملف نصي في شجرة الدليل بأكملها، بغض النظر عن اسمه.

يمكننا أن نرى أنه تم تعيين إذن التنفيذ على الملف “appveyor.sh”.

sudo ls -hl project

استخدام ls للتحقق من تعيين إذن التنفيذ على البرنامج النصي القابل للتنفيذ

تتضمن استعادة إذن التنفيذ على الدلائل خدعة أنيقة. لا يمكننا استخدام حرف بدل لأنه من المحتمل أن يتطابق مع الملفات أيضًا. لذا فإن ما نفعله هو استخدام أحرف كبيرة علم إذن X. هذا يعني “تعيين البت القابل للتنفيذ فقط إذا كان الهدف هو ملف يحتوي على البت القابل للتنفيذ بالفعل مجموعة، أو هو دليل.


يمكننا استخدام هذا لأن نصوصنا القابلة للتنفيذ تحتوي بالفعل على بت قابل للتنفيذ، وستحتفظ به. ستحتوي جميع الدلائل الموجودة في شجرة الدلائل على بت قابل للتنفيذ أيضًا.

sudo chmod -R +X project

استخدام chmod لتعيين إذن التنفيذ بشكل متكرر على الدلائل والدلائل الفرعية

لقد عادت الأمور الآن إلى حالتها الطبيعية مع الملكية الصحيحة والأذونات الصحيحة والدلائل التي تسمح لك بالدخول إليها.

ls -hl project

استخدام ls للتحقق من الأذونات على الدلائل والملفات


استنساخ كل شيء باستخدام setfacl

إذا كنت تستخدم قوائم التحكم في الوصول (ACLs)، فما زال بإمكانك استنساخ الإعدادات من ملف تم تعيينه بشكل صحيح إلى ملفات أخرى. تمنحك قوائم التحكم في الوصول تحكمًا مفصلاً، مما يسمح لك بالقيام بأشياء مثل تحديد الأذونات على أساس كل مستخدم، مع حصول المستخدمين المختلفين على أذونات مختلفة.

لاستنساخ الإعدادات، نحتاج إلى نقل الإعدادات من ملفنا الذي تم تكوينه بشكل صحيح إلى الأمر لتعيين الأذونات.

يمكننا رؤية إعدادات ACL على الملف الموجود باستخدام الأمر getfacl.

getfacl existing.file

استخدام getfacl لفحص إعدادات قائمة التحكم بالوصول (ACL) الخاصة بملف

المالك، dave لديه أذونات القراءة والكتابة والتنفيذ. المستخدم mary لديه أذونات القراءة والكتابة. لاستنساخ هذه الإعدادات إلى الملفات الموجودة في دليل المشروع، نستخدم الأمر setfacl. نقوم بإدخال الناتج من الأمر getfacl للتأكد من الحصول على إعدادات قائمة التحكم في الوصول التي نريدها. الملفات التي نريد تطبيق إعدادات قائمة التحكم في الوصول عليها موجودة في دليل يسمى “source”.


getfacl /home/dave/Downloads/existing.file | setfacl --set-file=- source

توجيه مخرجات getfacl إلى setfacl لنسخ إعدادات ACL بشكل متكرر إلى الملفات والدلائل

ال –set-file عادةً ما يأخذ الخيار اسم الملف الذي تريد نسخ الإعدادات إليه منيؤدي استخدام شرطة واحدة “-” كاسم للملف إلى إخبار setfacl باستخدام stdin كمصدر للبيانات. ستكون هذه هي البيانات التي يتم توصيلها.

يؤدي النظر إلى أي من الملفات الموجودة في دليل المصدر إلى التأكد من تطبيق إعدادات قائمة التحكم في الوصول المنسوخة.

getfacl terminal.c

استخدام getfacl للتحقق من نسخ إعدادات قائمة التحكم في الوصول إلى ملف آخر


من الفوضى إلى النظام

إن رؤية الفوضى التي تتراكم عليك أحيانًا بعد تنزيل الملفات أو استعادتها أو فك أرشفتها قد تجعلك تشعر بالحزن. ولكن من السهل جدًا إعادة النظام إلى هذه الفوضى باستخدام بضعة أوامر فقط، مع استخدامها بالترتيب الصحيح.

أضف تعليق