كيفية منع انحراف الأذونات في مجلدات بيانات Home Assistant

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

يحدث انحراف الصلاحيات عندما تظل بيانات Home Assistant موجودة، لكن العملية التي تقوم بتركيبها الآن ترى ملكية أو تعيينات UID/GID أو أوضاع وصول أو سياقًا أمنيًا مختلفًا عن العملية التي أنشأتها. غالبًا ما يظهر العطل بعد ترحيل المضيف أو الاستعادة أو تغيير وضع Docker أو النسخ إلى NAS أو تنفيذ عملية chown/chmod يدويًا.

امنع ذلك بتوثيق نموذج التركيب والملكية المتوقع قبل إجراء أي تغيير، والحفاظ على البيانات الوصفية أثناء النسخ، واختبار الوصول للقراءة والكتابة بعد إعادة الإنشاء. لا تعالج كل حالات الفشل باستخدام chmod -R 777؛ فهذا يخفي عدم التطابق ويضعف نموذج الاستعادة.

وثّق حدود التخزين قبل تغيير الصلاحيات

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

توضح إرشادات التثبيت الحالية لـ Home Assistant Container عقد التخزين بصورة عملية: يتم تركيب مجلد المضيف المحدد على المسار /config مع صلاحية القراءة والكتابة. سجّل مسار المصدر الدقيق، وهدف التركيب، ووضع الوصول بدلًا من الاعتماد على اسم المجلد وحده.

سجّل أيضًا ما إذا كان Home Assistant يعمل عبر Docker القياسي، أو Docker دون صلاحيات الجذر، أو مساحة أسماء مستخدمين معاد تعيينها، أو مدير حاويات في NAS. فقد لا تكون الهويات الرقمية الظاهرة داخل الحاوية وخارجها متطابقة.

يمكن أن تتغير تعيينات UID وGID دون نقل الملفات

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

توضح وثائق Docker الحالية الخاصة بتعيين UID/GID أن وضعي Docker دون صلاحيات الجذر ومساحة أسماء المستخدمين يترجمان هويات الحاوية إلى معرّفات مضيف مختلفة. لذلك قد يظهر ملف بملكية صحيحة على مضيف، ثم يصبح غير قابل للكتابة بعد تغيير نموذج النشر.

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

حافظ على البيانات الوصفية عند نسخ بيانات Home Assistant

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

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

ينطبق هنا دليل ZimaSpace حول التعامل مع الحسابات والصلاحيات باعتبارها سياسة منزلية قابلة للتكرار: يجب أن تكون الملكية جزءًا مقصودًا من البنية التحتية، لا سلسلة من الإصلاحات الفردية.

-15% OFF

أبقِ التركيب بصلاحية القراءة والكتابة فقط حيث يحتاج Home Assistant إلى الكتابة

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

يمكن إتاحة مسارات المضيف المركبة بالربط بصلاحية القراءة والكتابة أو القراءة فقط. يوضح دليل مشاركة الملفات في Docker أن وضع التركيب الفعلي يحدد ما إذا كان بإمكان الحاوية تعديل مجلد المضيف. افحص التركيب قيد التشغيل بدلًا من افتراض تطبيق ملف Compose كما هو مقصود.

وبالعكس، لا تجعل مجلدات مضيف غير مرتبطة قابلة للكتابة لمجرد أن Home Assistant يحتاج إلى الوصول إلى مسار إعداد واحد. أبقِ حدود الصلاحيات ضيقة.

استخدم اختبار قبول للصلاحيات بعد كل استعادة أو إعادة إنشاء

لا يثبت بدء التشغيل الناجح سوى جزء من عقد نظام الملفات. فقد يتمكن Home Assistant من قراءة الملفات الموجودة، لكنه يفشل لاحقًا عندما يحتاج إلى كتابة قاعدة البيانات أو إنشاء نسخة احتياطية أو تحديث سجل أو حفظ لوحة معلومات.

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

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

الدعم والنصائح

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.