أنت تستخدم systemd ولديك الإصدار v256، قم بالتحديث الآن، لأنه يحتوي على خطأ يؤدي إلى إزالة الدلائل الرئيسية

تمت إزالة Systemd 256 /home

قبل بضعة أيام شاركنا هنا على المدونة أخبار إصدار systemd الإصدار 256 ، وهو إصدار قدم عددًا كبيرًا من التغييرات والميزات الجديدة، ومن بينها أداة run0، والتي يمكننا القول إنها كانت عامل الجذب الرئيسي لهذا الإصدار.

سبب ذكر systemd 256 هو الإعلان عن إصدار النسخة التصحيحية، systemd 256.1 . وقد صدرت هذه النسخة لمعالجة مشكلة حرجة ظهرت في الإصدار 256.

أثرت هذه المشكلة على حذف محتويات قسم /home بشكل غير صحيح عند تشغيل الأمر systemd-tmpfiles --purge . في الأصل، كان الهدف من هذا الخيار حذف الملفات والمجلدات التي تم إنشاؤها من خلال الإعدادات في tmpfiles.d، لكن السلوك لم يتوافق مع التوثيق وتوقعات المستخدمين.

تكمن المشكلة تحديدًا في أن اسم "tmpfiles" في الأداة كان مُضللًا، إذ أن خيار `--purge` لم يقتصر على حذف الملفات المؤقتة فحسب، بل شمل أيضًا المجلدات والملفات التي تُنشأ تلقائيًا من خلال الإعدادات في `tmpfiles.d`. وتضمن ذلك الإنشاء التلقائي لمجلدات البيانات، مثل المجلد الرئيسي في `/home`.

على سبيل المثال، كان الملف /usr/lib/tmpfiles.d/home.conf مسؤولاً عن إنشاء بنية الدليل في /home، وقد أدى الاستخدام غير المقصود لـ systemd-tmpfiles --purge إلى إزالة هذه الدلائل ومحتوياتها، بدلاً من مجرد تنظيف الملفات المؤقتة كما هو متوقع.

ولهذا السبب تم إصدار الإصدار التصحيحي من systemd 256.1 لحل هذه التناقضات والمشكلات التي أبلغ عنها المستخدمون وكذلك لمواءمة وظيفة –purge بشكل صحيح مع غرضها الأصلي، مما يضمن أنها تحذف الملفات المؤقتة فقط ولا تؤثر على بنية الدليل. تم إنشاؤها من خلال التكوينات في tmpfiles.d.

ومن الجدير بالذكر أن الحادث مع ملفات systemd-tmpfiles والحذف غير الصحيح للدلائل في القسم /home لقد كان موقفًا مؤسفًا أثار جدلاً وإصلاحات مهمة في تنفيذ systemd.

بدأت العديد من رسائل التحذير في الظهور، بما في ذلك الطرق المؤدية إلى المنطقة /home(تعذرت استعادة أوقات التعديل...؟). ماذا تفعل أداة التنظيف المؤقتة في الدليل الرئيسي الخاص بي؟ هذا ليس جيدا. بدأ قلبي ينبض بشكل أسرع وقمت بالضغط على Ctrl-C بأسرع ما يمكن.

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

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

وبعد مناقشات ومراجعات مستفيضة، تم الاعتراف به أن سلوك systemd-tmpfiles --purge كان غير صحيح وتم اتخاذ الإجراء التصحيحي.

في البداية تم التفكير في إلغاء الخيار تمامًا --purge، لكننا اخترنا تقييد نطاقه بحيث يؤثر فقط على الملفات والأدلة المرتبطة مباشرة بتكوين معين في tmpfiles.d/. يضمن هذا التعديل أن الأمر يحذف فقط ما يهدف إلى حذفه، وبالتالي تجنب الآثار الجانبية غير المرغوب فيها على مناطق أخرى من نظام الملفات.

ما لدي مشكلة هو التوثيق. إنه يشرح ما تفعله الخيارات، من الناحية الفنية (حسنًا، أعتقد ذلك، لا أعرف الكثير عن البنية هنا)، لكنه لا يفسر سبب قيامهم بما يفعلونه. عندما يقوم شخص ما بتصفح الوثائق، يبدو أن الخيارات الثلاثة تفعل الشيء نفسه: تنظيف الملفات المؤقتة --purgeيبدو "أكثر اكتمالا" لأنه يذكر أنه يحذف جميع الملفات (بما في ذلك بيانات المستخدم).

وبالإضافة إلى ذلك، تم تحديث دليل مستخدم systemd-tmpfiles لتقديم وصف أكثر دقة للخيار --purge والتحذير بوضوح من العواقب المحتملة لاستخدامه غير الصحيح.

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


أضف كمصدر مفضل في جوجل