أساسيات لينكس

هل تحتاج إلى إعادة التشغيل بعد التحديثات؟ شرح needrestart وملف reboot-required وUbuntu Livepatch

تثبيت التحديث الأمني نصف المهمة فقط. تعرّف على أدوات needrestart و/var/run/reboot-required وUbuntu Livepatch لمعرفة ما يزال يعمل بشيفرة قديمة.

تاريخ النشر
مدة القراءة
6 دقائق
الكاتب
SKYLINE Engineering

تثبيت التحديث الأمني لا يجعل الخادم العامل آمناً دائماً. فالخدمة التي حمّلت النسخة القديمة من مكتبة ما تستمر في استخدامها من الذاكرة إلى أن يُعاد تشغيلها، والنواة الجديدة لا تعمل إلا بعد إعادة تشغيل الجهاز. يشرح هذا الدليل ثلاث أدوات يعتمد عليها مسؤولو أنظمة Debian وUbuntu لسد هذه الفجوة، وهي needrestart وملف الإشارة /var/run/reboot-required وخدمة Ubuntu Livepatch، وكيف تدمجها في روتين صيانة منتظم.

ما الذي يحتاج إلى إعادة تشغيل ولماذا

  • المكتبات مثل OpenSSL وglibc وlibxml2: كل عملية حمّلت الملف القديم تبقى تشغّل الشيفرة القديمة. ويكفي هنا إعادة تشغيل تلك الخدمات دون إعادة تشغيل الجهاز كله.
  • الخدمات مثل nginx وsshd وPostgreSQL: تعيد الحزمة عادةً تشغيل خدمتها، لكن ليس كل العمليات المرتبطة بها دائماً.
  • النواة والشيفرة الدقيقة للمعالج (microcode): لا تُحمَّل إلا بإعادة التشغيل، ما لم يغطِّ ترقيعٌ حيّ الإصلاح المحدد.
  • الحاويات: تحديث المضيف لا يحدّث المكتبات داخل صور الحاويات، فهي تحتاج إلى إعادة بناء الصور وإعادة تشغيل الحاويات.

needrestart: أي الخدمات ما تزال تعمل بشيفرة قديمة

تفحص الأداة needrestart الخدمات التي تحتاج إلى إعادة تشغيل بعد ترقية المكتبات، ويمكنها أيضاً فحص وجود نواة قديمة (needrestart(1)). وبعد تثبيتها تعمل تلقائياً عبر خطّاف في apt كلما ثُبّتت حزم أو رُقّيت.

sudo apt install needrestart

# list only, restart nothing
sudo needrestart -r l

# machine-readable summary for scripts and monitoring
sudo needrestart -b

يحدد الخيار -r وضع إعادة التشغيل: l للعرض فقط، وi للسؤال التفاعلي، وa لإعادة التشغيل التلقائي. وينبّه الدليل إلى أن needrestart إذا ضُبطت على الوضع التفاعلي ثم شُغّلت دون تفاعل، كما يحدث مع unattended-upgrades، فإنها تعود إلى وضع العرض فقط. أما وضع الدفعات (-b) فلا يعيد تشغيل أي شيء. وبحسب توثيق وضع الدفعات لدى المشروع فإنه يطبع النواة العاملة (NEEDRESTART-KCUR) والنواة المتوقعة (NEEDRESTART-KEXP) وحالة النواة (NEEDRESTART-KSTA)، حيث تعني القيمة 1 عدم وجود ترقية معلّقة، و2 ترقية متوافقة الواجهة معلّقة، و3 ترقية إصدار معلّقة. وتظهر كل خدمة تحتاج إلى إعادة تشغيل في سطر NEEDRESTART-SVC.

Ubuntu 24.04 يعيد تشغيل الخدمات تلقائياً

يذكر توثيق Ubuntu Server أن needrestart بدءاً من Ubuntu 24.04 LTS يعيد تشغيل الخدمات المتأثرة تلقائياً بشكل افتراضي، باستثناء قائمة مدمجة من الحالات مثل مدير العرض. وقد يعني ذلك في الأنظمة الإنتاجية أن خدمة حرجة تُعاد في وقت غير متوقع. وتوصي Ubuntu بإضافة ملف داخل /etc/needrestart/conf.d/ بدلاً من تعديل الإعداد الرئيسي:

# /etc/needrestart/conf.d/local.conf
# list only and restart by hand in a maintenance window:
$nrconf{restart} = 'l';

# or keep automatic restarts but never touch one service:
$nrconf{override_rc} = {
    qr(^postgresql.*\.service$) => 0,
};

أما في Debian فافحص قيمة $nrconf{restart} في الملف /etc/needrestart/needrestart.conf على نظامك بدلاً من افتراض قيمة معينة. وبما أن needrestart تعمل بصلاحيات الجذر فحافظ على تحديثها أيضاً؛ ففي نوفمبر 2024 أصلحت Debian ثغرات فيها تسمح برفع الصلاحيات محلياً ضمن النشرة DSA-5815-1، ومنها CVE-2024-48990 التي قيّمتها الجهة المسؤولة بدرجة 7.8 (عالية).

ملف /var/run/reboot-required: إشارة إعادة التشغيل

عندما يتطلب تحديثٌ إعادة تشغيل كاملة يظهر ملف إشارة في /var/run/reboot-required، مع قائمة الحزم المسؤولة في /var/run/reboot-required.pkgs. وفي Debian تثبّت حزمة unattended-upgrades خطّافاً يعمل بعد تثبيت النواة وينشئ الملفين عند تثبيت حزمة نواة. وفي Ubuntu تنشئ حزم أخرى هذه الإشارة أيضاً. ولا تعيد unattended-upgrades تشغيل الجهاز بنفسها إلا إذا كان الخيار Unattended-Upgrade::Automatic-Reboot مفعّلاً وكان هذا الملف موجوداً.

# is a reboot pending, and why?
ls /var/run/reboot-required 2>/dev/null && cat /var/run/reboot-required.pkgs

# running kernel vs installed kernels
uname -r
dpkg -l 'linux-image-*' | grep '^ii'

إذا أظهر الأمر uname -r إصداراً أقدم من أحدث نواة مثبّتة، فالخادم ما يزال يعمل بالنواة القديمة أياً كانت حالة ملف الإشارة.

Ubuntu Livepatch: إصلاحات النواة دون إعادة تشغيل فورية

تطبّق خدمة Canonical Livepatch إصلاحات ثغرات نواة لينكس ذات الخطورة العالية والحرجة على النواة وهي تعمل. وهي جزء من Ubuntu Pro، وبحسب Canonical فهي مجانية لما يصل إلى خمسة أجهزة للاستخدام الشخصي أو التقييم.

sudo pro attach YOUR_TOKEN
sudo pro enable livepatch
canonical-livepatch status

ومعرفة ما لا تفعله الخدمة لا تقل أهمية:

  • لا ترقّع مكتبات مساحة المستخدم مثل OpenSSL وglibc، فهذه ما تزال تحتاج إلى تحديث الحزم وإعادة تشغيل الخدمات.
  • تغطي مشكلات النواة العالية والحرجة فقط، أما الإصلاحات الأقل أولوية فلا تصل إلا بإعادة التشغيل إلى نواة جديدة، كما توضح صفحة توصيات ترقية النواة.
  • تُنشأ الترقيعات لكل نواة لمدة تصل إلى ما بين 9 و13 شهراً من تاريخ إصدارها بحسب النواة (الأنوية المدعومة)، ويجب أن تُرقّي وتعيد التشغيل خلال هذه المدة.
  • تصرّح Canonical بوضوح بأن Livepatch ليست بديلاً عن إعادة التشغيل، بل وسيلة لنقلها إلى نافذة صيانة مخططة.

Livepatch خدمة خاصة بـ Ubuntu، أما في Debian فخطط لإعادة تشغيل النواة ضمن الصيانة المعتادة.

بناء روتين للصيانة

  1. اترك التحديثات الأمنية تُثبّت تلقائياً، أو ثبّتها وفق جدول ثابت.
  2. بعد كل تشغيل افحص ناتج needrestart -b وملف الإشارة، أو أرسلهما إلى نظام المراقبة.
  3. أعد تشغيل الخدمات المشار إليها في اليوم نفسه، فمعظم إصلاحات المكتبات لا تحتاج إلى أكثر من ذلك.
  4. أعد تشغيل الجهاز لتحديثات النواة في نافذة أسبوعية أو شهرية. ومع unattended-upgrades يحدد السطر Unattended-Upgrade::Automatic-Reboot-Time "02:00"; الموعد. وتستخدم القيمة المنطقة الزمنية للخادم نفسه، فافحصها بالأمر timedatectl؛ إذ تعمل صور سحابية كثيرة بتوقيت UTC، حيث تقابل الساعة 02:00 الساعة 05:00 بتوقيت الرياض.
  5. أعد بناء صور الحاويات ونشرها وفق جدول خاص بها.

ما الذي ينبغي فعله

  • ثبّت needrestart على كل خوادم Debian وUbuntu، واختر عن قصد بين العرض فقط وإعادة التشغيل التلقائي.
  • افحص /var/run/reboot-required وقارن ناتج uname -r بالأنوية المثبّتة بعد التحديثات.
  • في Ubuntu 24.04 استثنِ الخدمات التي لا يجوز إعادة تشغيلها دون إشعار عبر $nrconf{override_rc} في /etc/needrestart/conf.d/.
  • إذا كنت تستخدم Livepatch فاستمر في جدولة إعادة تشغيل النواة قبل انتهاء مدة التغطية الخاصة بنواتك.
  • في الخوادم الافتراضية التي تديرها بنفسك، ومنها خوادم VPS من Skyline Cloud في الرياض، تقع جدولة التحديثات وإعادة التشغيل داخل الخادم على عاتقك، فضع نافذة الصيانة في تقويمك.

المصادر

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

صفحة الكاتب
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Linux Basics for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.