كيفية استخدام الأمر chattr على نظام Linux

نشرت: 2022-06-28
محطة لينكس على خلفية حمراء للكمبيوتر المحمول.
fatmawati achmad zaenuri / Shutterstock

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

الأذونات والسمات

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

توجد أذونات لمالك الملف ومجموعة الملف ولآخرين - أي المستخدمين الذين ليسوا في الفئتين الأوليين. يمكنك استخدام الأمر ls مع الخيار -l (القائمة الطويلة) لرؤية الأذونات على ملف أو دليل.

كيفية استخدام الأمر chmod على نظام Linux
ذات صلة كيفية استخدام الأمر chmod على Linux

لتغيير الأذونات ، يمكنك استخدام الأمر chmod . على الأقل ، يمكنك ذلك إذا كان لديك أذونات كتابة للملف ، أو إذا كنت المستخدم الجذر.

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

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

كل ما تريد معرفته عن inodes على Linux
كل ما تريد معرفته حول inodes على Linux

يتم تخزين الأذونات والسمات داخل inodes . inode هو هيكل نظام ملفات يحتوي على معلومات حول كائنات نظام الملفات مثل الملفات والأدلة. يتم تخزين موقع الملف على القرص الصلب وتاريخ إنشائه وأذوناته وخصائصه داخل inode الخاص به.

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

النظر في سمات الملف

سيكون chattr و lsattr بالفعل على جهاز الكمبيوتر الخاص بك ، لذلك لا داعي لتثبيت أي شيء.

للتحقق من السمات على الملفات الموجودة في الدليل الحالي ، استخدم lsattr :

 lsattr 

سرد سمات الملف لجميع الملفات في الدليل

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

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

هذه قائمة السمات الأكثر استخدامًا.

  • أ : إلحاق فقط. يمكن إلحاق ملف بهذه السمة فقط بـ. لا يزال من الممكن الكتابة إليه ، ولكن فقط في نهاية الملف. لا يمكن الكتابة فوق أي من البيانات الموجودة داخل الملف.
  • ج : مضغوط. يتم ضغط الملف تلقائيًا على القرص الصلب ولا يتم ضغطه عند قراءته. يتم ضغط البيانات المكتوبة على الملفات قبل كتابتها على القرص الصلب.
  • ج : لا atime تحديثات في أي وقت. atime هي قيمة في inode تسجل آخر مرة تم فيها الوصول إلى ملف.
  • ج : ممنوع النسخ عند الكتابة. إذا طلبت عمليتان الوصول إلى ملف ، فيمكن إعطاؤهما مؤشرات إلى نفس الملف. يتم منحهم نسختهم الفريدة من الملف فقط إذا حاولوا الكتابة إلى الملف ، مما يجعله فريدًا لهذه العملية.
  • د : لا تفريغ. يتم استخدام أمر dump Linux لكتابة نسخ من أنظمة الملفات بأكملها إلى وسائط النسخ الاحتياطي. هذه السمة تجعل dump يتجاهل الملف. يتم استبعاده من النسخة الاحتياطية.
  • د : تحديثات الدليل المتزامن. عند تشغيل هذه السمة لدليل ما ، تتم كتابة جميع التغييرات على هذا الدليل بشكل متزامن - أي على الفور - على محرك الأقراص الثابتة. يمكن تخزين عمليات البيانات مؤقتًا.
  • هـ : تنسيق المدى. تشير السمة e إلى أن نظام الملفات يستخدم النطاقات لتعيين موقع الملف على محرك الأقراص الثابتة. لا يمكنك تغيير هذا مع chattr . إنها وظيفة لتشغيل نظام الملفات.
  • أنا : ثابت. لا يمكن تعديل ملف غير قابل للتغيير ، بما في ذلك إعادة التسمية والحذف. المستخدم الجذر هو الشخص الوحيد الذي يمكنه تعيين هذه السمة أو إلغاء تعيينها.
  • s : الحذف الآمن. عند حذف ملف به مجموعة السمات هذه ، تتم الكتابة فوق كتل محرك الأقراص الثابتة التي احتفظت ببيانات الملف بالبايتات التي تحتوي على أصفار. لاحظ أن نظام الملفات ext4 لا يحترم هذا.
  • S : تحديثات متزامنة. تتم كتابة التغييرات التي تم إجراؤها على ملف مع مجموعة سمات S الخاصة به إلى الملف بشكل متزامن.
  • u : يؤدي حذف ملف له مجموعة سمات u الخاصة به إلى عمل نسخة من الملف. يمكن أن يكون هذا مفيدًا لاستعادة الملفات إذا تمت إزالة الملف عن طريق الخطأ.

تغيير سمات الملف

يتيح لنا الأمر chattr تغيير سمات الملف أو الدليل. يمكننا استخدام عامل التشغيل + (set) و - (unset) لتطبيق سمة أو إزالتها ، على غرار الأمر chmod والأذونات.

يحتوي الأمر chattr أيضًا على عامل تشغيل = (مجموعة فقط). يقوم هذا بتعيين سمات الملف أو الدليل على السمات المحددة في الأمر فقط. أي أن كافة السمات غير المدرجة في سطر الأوامر لم يتم ضبطها .

تعيين سمة الإلحاق فقط

لنقم بتعيين سمة الإلحاق فقط في ملف نصي ونرى كيف تؤثر على ما يمكننا فعله بالملف.

 sudo chattr + ملف نصي 

تعيين سمة الإلحاق فقط في ملف نصي

يمكننا التحقق من ضبط بت الإلحاق فقط باستخدام lsattr :

 lsattr text-file.txt 

سرد سمات ملف نصي

يشير الحرف " a " إلى أنه تم تعيين السمة. دعنا نحاول الكتابة فوق الملف. تؤدي إعادة توجيه الإخراج إلى ملف بزاوية واحدة " > " إلى استبدال كل المحتوى في الملف بالإخراج المعاد توجيهه.

لقد قمنا بتحميل الملف النصي مسبقًا ببعض نص العنصر النائب lorem ipsum .

 cat text-file.txt 

نص العنصر النائب في ملف نصي

سنعيد توجيه الإخراج من ls إلى الملف:

 ls -l> نص-file.txt
 sudo ls -l> text-file.txt 

محاولة الكتابة فوق ملف نصي للإلحاق فقط

العملية غير مسموح بها ، حتى لو استخدمنا الأمر sudo .

إذا استخدمنا قوسين زاويتين " >> " لإعادة توجيه الإخراج ، يتم إلحاقه بالبيانات الموجودة في الملف. يجب أن يكون هذا مقبولاً في ملفنا النصي المُلحق فقط.

 sudo ls -l >> text-file.txt 

إعادة توجيه الإخراج إلى نهاية ملف نصي

لقد عدنا إلى موجه الأوامر دون أي رسائل خطأ. دعنا نلقي نظرة خاطفة داخل الملف لنرى ما حدث.

 cat text-file.txt 

فحص محتويات ملف نصي

تمت إضافة الإخراج المعاد توجيهه من ls إلى نهاية الملف.

يتم إلحاق البيانات الجديدة بملف إلحاق نصي فقط

على الرغم من أنه يمكننا إلحاق البيانات بالملف ، فإن هذا هو التغيير الوحيد الذي يمكننا إجراؤه عليه. لا يمكننا حذفه ولا يمكن الجذر.

 rm نص-file.txt
 sudo rm text-file.txt 

فشل حذف ملف إلحاق نصي فقط

تحديد السمة الثابتة

إذا كنت تريد حماية ملف لن تتم إضافة بيانات جديدة إليه مطلقًا ، فيمكنك تعيين السمة غير القابلة للتغيير. هذا يمنع كافة التغييرات التي تم إجراؤها على الملف ، بما في ذلك إلحاق البيانات.

 sudo chattr + i second-file.txt
 lsattr الملف الثاني 

تعيين السمة الثابتة في ملف نصي

يمكننا أن نرى الحرف " i " يشير إلى أن السمة غير القابلة للتغيير قد تم تعيينها. بعد جعل ملفنا غير قابل للتغيير ، لا يمكن حتى للمستخدم الجذر إعادة تسميته ( mv ) أو حذفه ( rm ) أو إضافة بيانات إليه.

 sudo mv second-file.txt new-name.txt
 sudo rm second-file.txt
 sudo ls -l >> second-file.txt 

ملف ثابت يقاوم التغيير

لا تعتمد على الحذف الآمن على ext4

كما أشرنا ، لا تدعم بعض أنظمة التشغيل كافة السمات. لا يتم تكريم سمة ext الآمن من قبل مجموعة أنظمة الملفات ، بما في ذلك ext4 . لا تعتمد على هذا للحذف الآمن للملفات.

من السهل أن ترى أن هذا لا يعمل في ext4 . سنقوم بتعيين السمة s (الحذف الآمن) في ملف نصي.

 sudo chattr + s ثالث ملف 

تعيين سمة الحذف الآمن لملف نصي

ما سنفعله هو اكتشاف inode الذي يحتوي على البيانات الوصفية حول هذا الملف. يحتوي inode على أول كتلة محرك أقراص ثابتة يشغلها الملف. يحتوي الملف على بعض نص العنصر النائب lorem ipsum .

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

يمكننا العثور على inode للملف باستخدام الأمر hdparm مع خيار --fibmap (خريطة كتلة الملف).

 sudo hdparm --fibmap ثالث ملف 

العثور على inode للملف

أول كتلة على القرص الصلب هي 18100656. سنستخدم الأمر dd لقراءتها.

الخيارات هي:

  • if = / dev / sda : اقرأ من القرص الصلب الأول على هذا الكمبيوتر.
  • bs = 512 : استخدم كتلة محرك أقراص ثابتة بحجم 512 بايت.
  • تخطي = 18100656 : تخطي جميع الكتل قبل الكتلة 18100656. بمعنى آخر ، ابدأ القراءة في الكتلة 18100656.
  • العد = 1 : قراءة كتلة واحدة من البيانات.
 sudo dd if = / dev / sda bs = 512 تخطي = 18100656 عدد = 1 

قراءة أول كتلة على القرص الصلب لملف

كما هو متوقع ، نرى نص العنصر النائب lorem ipsum . نحن نقرأ الكتلة الصحيحة على القرص الصلب.

الآن سنقوم بحذف الملف.

 rm ثالث ملف 

إذا قرأنا نفس كتلة محرك الأقراص الثابتة ، فلا يزال بإمكاننا رؤية البيانات.

 sudo dd if = / dev / sda bs = 512 تخطي = 18100656 عدد = 1 

قراءة البيانات من كتلة القرص الصلب المستخدمة من قبل ملف محذوف

مرة أخرى ، لا تعتمد على هذا للحذف الآمن على ext4 ، فهناك طرق أفضل متاحة لحذف الملفات بحيث لا يمكن استعادتها.

ذات صلة: كيفية حذف الملفات بأمان على نظام Linux

مفيد ، لكن استخدمه بحذر

يمكن أن يؤدي تعيين سمات الملفات إلى جعلها منيعة أمام الكوارث العرضية. إذا لم تتمكن من حذف ملف أو الكتابة فوقه ، فهو آمن تمامًا.

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

ذات صلة: كيفية تأمين خادم Linux الخاص بك باستخدام fail2ban