Red Hat وRocky Linux وAlmaLinux: دليل الإدارة
إذا كانت Debian وUbuntu تهيمنان على الويب والسحابة العامة، فإن منظومة Red Hat تسود البنى التحتية في المؤسسات: البنوك وشركات التأمين والقطاع العام وشركات الاتصالات. وتُعدّ معرفة إدارة نظام RHEL (Red Hat Enterprise Linux) أو توزيعاته المشتقة مهارة مطلوبة بشدة، وهي أيضًا الأساس لشهادتَي RHCSA وRHCE. في هذا الدليل نتناول إدارة الحزم باستخدام DNF وRPM، والأمان باستخدام SELinux وfirewalld، وكذلك إدارة اشتراكات Red Hat.
1. منظومة RHEL ونهاية CentOS
لمحة تاريخية
لمدة خمسة عشر عامًا، كان CentOS نسخة مجانية متوافقة ثنائيًا مع RHEL: النظام نفسه، لكن دون الدعم التجاري. وفي عام 2020، أنهت Red Hat العمل بـ CentOS Linux لصالح CentOS Stream، الذي لم يعد نسخة من RHEL بل نسختها التطويرية: فـ Stream يقع في المنبع (upstream) قبل RHEL، لا في المصب.
وقد أدى هذا القرار فورًا إلى ظهور وريثين مجتمعيين، أسّس أحدهما المنشئ الأصلي لـ CentOS، وأسّس الآخر ناشر CloudLinux:
- Rocky Linux: مشروع مجتمعي تقوده مؤسسة Rocky Enterprise Software Foundation؛
- AlmaLinux: مشروع تقوده مؤسسة AlmaLinux، بهدف التوافق على مستوى ABI (وليس النسخ بت ببت منذ عام 2023).
أي توزيعة تختار؟
| التوزيعة | الموقع | التكلفة | الاستخدام الموصى به |
|---|---|---|---|
| RHEL | النسخة التجارية المرجعية | اشتراك مدفوع (مجاني حتى 16 جهازًا لأغراض التطوير) | الإنتاج مع دعم من الناشر |
| Rocky Linux | إعادة بناء 1:1 لـ RHEL | مجاني | الإنتاج دون حاجة إلى دعم |
| AlmaLinux | متوافق على مستوى ABI مع RHEL | مجاني | الإنتاج، وتصدر التصحيحات أحيانًا بشكل أسرع |
| CentOS Stream | منبع RHEL، إصدارات متجددة (rolling) | مجاني | التطوير والاختبار والمساهمة |
| Fedora | مختبر الابتكار لدى Red Hat | مجاني | محطة العمل ومتابعة التقنيات الحديثة |
بالنسبة إلى خادم إنتاج دون عقد دعم، فإن Rocky Linux وAlmaLinux خياران متكافئان عمليًا: الحزم نفسها والإصدارات نفسها، ووثائق RHEL نفسها قابلة للتطبيق.
# Identifier la distribution et la version
cat /etc/redhat-release
cat /etc/os-release
2. DNF: مدير الحزم
حلّ DNF (Dandified YUM) محل YUM منذ RHEL 8. لا يزال الأمر yum موجودًا، لكنه مجرد رابط رمزي إلى dnf.
العمليات الأساسية
# Rechercher un paquet
dnf search nginx
# Afficher les informations d'un paquet
dnf info nginx
# Installer un paquet
sudo dnf install nginx
# Supprimer un paquet
sudo dnf remove nginx
# Mettre à jour tout le système
sudo dnf update
# Vérifier les mises à jour disponibles sans les appliquer
dnf check-update
# Mettre à jour uniquement les correctifs de sécurité
sudo dnf update --security
# Nettoyer les dépendances orphelines
sudo dnf autoremove
خلافًا لـ APT، لا يوجد ما يعادل apt update يجب تشغيله يدويًا: يقوم DNF بتحديث بياناته الوصفية تلقائيًا عند انتهاء صلاحيتها.
سجل المعاملات: الميزة الكبرى في DNF
يسجّل DNF كل معاملة ويتيح التراجع عنها، وهو ما لا يستطيع APT فعله بشكل أصلي:
# Lister les transactions
dnf history
# Détail d'une transaction
dnf history info 42
# Annuler une transaction (désinstalle ce qui a été installé, etc.)
sudo dnf history undo 42
# Rejouer une transaction annulée
sudo dnf history redo 42
الوحدات (Application Streams)
منذ RHEL 8، تُوزَّع بعض البرمجيات على شكل «وحدات» (modules) تتيح عدة إصدارات رئيسية بالتوازي:
# Lister les modules disponibles
dnf module list
# Voir les versions (streams) disponibles pour un module
dnf module list nodejs
# Activer et installer une version précise
sudo dnf module enable nodejs:20
sudo dnf module install nodejs:20
# Changer de version : réinitialiser puis activer l'autre stream
sudo dnf module reset nodejs
sudo dnf module enable nodejs:22
إدارة المستودعات
# Lister les dépôts actifs
dnf repolist
# Lister tous les dépôts, y compris désactivés
dnf repolist --all
# Activer / désactiver un dépôt de façon permanente
sudo dnf config-manager --set-enabled crb
sudo dnf config-manager --set-disabled crb
# Installer un paquet depuis un dépôt désactivé, ponctuellement
sudo dnf --enablerepo=crb install nom-du-paquet
3. ملفات .repo وEPEL
بنية ملف .repo
تُعرَّف المستودعات في ملفات /etc/yum.repos.d/*.repo:
# /etc/yum.repos.d/exemple.repo
[exemple]
name=Mon depot exemple
baseurl=https://depot.exemple.com/el9/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://depot.exemple.com/RPM-GPG-KEY-exemple
يتم استبدال المتغيرين $releasever (الإصدار الرئيسي) و$basearch (المعمارية) تلقائيًا، مما يتيح كتابة ملفات .repo قابلة للنقل.
EPEL: المستودع الذي لا غنى عنه
EPEL (Extra Packages for Enterprise Linux) مستودع يتولى صيانته مجتمع Fedora، ويوفّر آلاف الحزم غير الموجودة في RHEL: htop وncdu وfail2ban وcertbot وغيرها.
# Installation sur Rocky/Alma 9
sudo dnf install epel-release
# Sur RHEL, le paquet vient du dépôt Fedora directement
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
# Beaucoup de paquets EPEL exigent aussi le dépôt CRB (CodeReady Builder)
sudo dnf config-manager --set-enabled crb
4. RPM: المستوى المنخفض
مثل dpkg في Debian، RPM هو الأداة منخفضة المستوى التي يقوم عليها DNF.
# Lister tous les paquets installés
rpm -qa
# Vérifier si un paquet est installé et sa version
rpm -q nginx
# Lister les fichiers d'un paquet
rpm -ql nginx
# Trouver le paquet propriétaire d'un fichier
rpm -qf /etc/nginx/nginx.conf
# Afficher les informations d'un paquet
rpm -qi nginx
# Vérifier l'intégrité des fichiers d'un paquet
# (fichiers modifiés, permissions changées...)
rpm -V nginx
# Installer un .rpm local : préférez dnf, qui résout les dépendances
sudo dnf install ./paquet.rpm
5. SELinux: الأمان المعزَّز
SELinux (Security-Enhanced Linux) مفعّل افتراضيًا في عائلة RHEL بأكملها. وهو نظام تحكم إلزامي في الوصول (MAC): حتى حساب root مقيَّد بالسياسة. القاعدة الذهبية الأولى: لا تعطّل SELinux أبدًا من أجل «حلّ» مشكلة، بل تعلّم تشخيصه.
الأوضاع
# Afficher le mode actuel
getenforce
# État détaillé
sestatus
# Passer temporairement en mode permissif (journalise sans bloquer)
sudo setenforce 0
# Revenir en mode enforcing
sudo setenforce 1
يُضبط الوضع الدائم في الملف /etc/selinux/config بإحدى ثلاث قيم: enforcing (تُطبَّق السياسة)، وpermissive (تُسجَّل المخالفات لكنها مسموح بها، وهو مفيد للتشخيص)، وdisabled (يجب تجنبه).
السياقات
يحمل كل ملف وعملية ومنفذ تسمية سياق. ومعظم حالات الحجب ناتجة عن سياق ملف غير صحيح:
# Voir le contexte des fichiers (option -Z, présente sur beaucoup d'outils)
ls -Z /var/www/html
# Voir le contexte des processus
ps auxZ | grep nginx
# Corriger le contexte d'un répertoire déplacé ou copié
sudo restorecon -Rv /var/www/html
# Rendre permanent un contexte pour un chemin non standard
sudo semanage fcontext -a -t httpd_sys_content_t "/srv/monsite(/.*)?"
sudo restorecon -Rv /srv/monsite
# Autoriser un port non standard pour un service
sudo semanage port -a -t http_port_t -p tcp 8081
حالة نموذجية: تنقل ملفات باستخدام mv من مجلدك الشخصي إلى /var/www/html، فيُرجع Nginx الخطأ 403. فالنقل يحتفظ بالسياق الأصلي (user_home_t) بدلًا من httpd_sys_content_t. ويحل الأمر restorecon -Rv المشكلة.
التشخيص باستخدام sealert
# Installer les outils d'analyse
sudo dnf install setroubleshoot-server
# Analyser les refus récents avec explications et suggestions
sudo sealert -a /var/log/audit/audit.log
# Recherche brute dans le journal d'audit
sudo ausearch -m AVC -ts recent
القيم المنطقية (Booleans)
القيم المنطقية هي مفاتيح تفعّل صلاحيات معرَّفة مسبقًا دون تعديل السياسة:
# Lister les booléens liés à httpd
getsebool -a | grep httpd
# Autoriser un serveur web à ouvrir des connexions réseau sortantes
# (indispensable pour un reverse proxy) ; -P rend le réglage permanent
sudo setsebool -P httpd_can_network_connect on
# Autoriser httpd à se connecter à une base de données
sudo setsebool -P httpd_can_network_connect_db on
6. firewalld: جدار الحماية
firewalld هو جدار الحماية الافتراضي في عائلة RHEL. ويقوم على مفهوم المناطق (zones): ترتبط كل واجهة شبكة بمنطقة تحدد مستوى الثقة والخدمات المسموح بها.
# État du pare-feu
sudo firewall-cmd --state
# Zone par défaut et zones actives
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
# Tout voir sur la zone courante
sudo firewall-cmd --list-all
السماح بالخدمات والمنافذ
# Lister les services prédéfinis disponibles
sudo firewall-cmd --get-services
# Autoriser HTTP et HTTPS de façon permanente
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Autoriser un port arbitraire
sudo firewall-cmd --permanent --add-port=8080/tcp
# Retirer un service
sudo firewall-cmd --permanent --remove-service=http
# Appliquer les changements permanents
sudo firewall-cmd --reload
فخ شائع: دون الخيار --permanent تكون القاعدة فعّالة فورًا لكنها تختفي عند إعادة التشغيل؛ ومع --permanent تبقى بعد إعادة التشغيل لكنها لا تُطبَّق إلا بعد تنفيذ --reload. ولتحقيق الأمرين معًا، نفّذ الأمر مرتين (مع --permanent ودونه) أو استخدم --permanent متبوعًا بـ --reload.
# Changer la zone d'une interface
sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
sudo firewall-cmd --reload
7. اشتراكات RHEL: subscription-manager
من خصوصيات RHEL مقارنةً بـ Rocky وAlma: الوصول إلى المستودعات يتطلب اشتراكًا مسجَّلًا. ومنذ عام 2023، تقدّم Red Hat اشتراكًا مجانيًا للمطورين يغطي ما يصل إلى 16 نظامًا.
# Enregistrer la machine auprès du portail Red Hat
sudo subscription-manager register --username votre_login
# Vérifier le statut
sudo subscription-manager status
# Lister les dépôts disponibles via l'abonnement
sudo subscription-manager repos --list-enabled
# Activer un dépôt supplémentaire
sudo subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
# Désenregistrer la machine (avant de la décommissionner)
sudo subscription-manager unregister
في Rocky Linux وAlmaLinux لا يوجد subscription-manager: المستودعات عامة، كما هي الحال في Debian.
8. القادمون من Debian: جدول مقابلة
إذا كنت تعرف APT بالفعل، فسيوفّر عليك هذا الجدول وقتًا:
| العملية | Debian/Ubuntu (apt) | RHEL/Rocky/Alma (dnf) |
|---|---|---|
| تحديث الفهارس | apt update | تلقائي (dnf makecache للإجبار) |
| تحديث النظام | apt upgrade / apt full-upgrade | dnf update |
| التثبيت | apt install paquet | dnf install paquet |
| الحذف | apt remove / apt purge | dnf remove |
| البحث | apt search motif | dnf search motif |
| تفاصيل حزمة | apt show paquet | dnf info paquet |
| تنظيف الحزم اليتيمة | apt autoremove | dnf autoremove |
| ملفات حزمة | dpkg -L paquet | rpm -ql paquet |
| مالك ملف | dpkg -S /chemin | rpm -qf /chemin |
| التراجع عن معاملة | لا يوجد ما يعادله بشكل أصلي | dnf history undo N |
| المستودعات | /etc/apt/sources.list.d/ | /etc/yum.repos.d/ |
| جدار الحماية الافتراضي | ufw (Ubuntu) | firewalld |
| نظام MAC الافتراضي | AppArmor | SELinux |
أفضل الممارسات
- للإنتاج دون دعم تجاري، اختر Rocky Linux أو AlmaLinux؛ واحتفظ بـ CentOS Stream لبيئات الاختبار.
- لا تعطّل SELinux أبدًا: انتقل إلى الوضع permissive خلال فترة التشخيص، وصحّح السياقات باستخدام
restoreconوsemanage، ثم عُد إلى وضع enforcing. - ثبّت EPEL وفعّل CRB منذ بدء تشغيل الخادم: ستحتاج إليهما.
- استخدم
dnf historyقبل أن تقلق بعد تحديث مشكلٍ: فـundoهو شبكة الأمان الخاصة بك. - مع firewalld، تذكّر دائمًا الثنائي
--permanent+--reload. - طبّق التصحيحات الأمنية بانتظام باستخدام
dnf update --security، أو أتمتها عبر الحزمةdnf-automatic. - على RHEL، ألغِ تسجيل الأجهزة التي أُخرجت من الخدمة لتحرير الاشتراكات.
الخلاصة
تفرض منظومة Red Hat إطارًا أكثر صرامة من عالم Debian: SELinux مفعّل افتراضيًا، وجدار حماية قائم على المناطق، واشتراكات في RHEL. وهذه الصرامة هي تحديدًا ما جعلها المعيار في البنى التحتية للمؤسسات. وبإتقان DNF وسجل معاملاته، وملفات .repo، وسياقات SELinux، وfirewalld، تغطي الجزء الأكبر من العمل اليومي لمسؤول نظام RHEL، وجزءًا كبيرًا من منهج شهادة RHCSA. وللتعمق أكثر، استكشف systemd بعمق، والأتمتة باستخدام Ansible (وهو منتج آخر من Red Hat)، والحاويات باستخدام Podman، بديل Red Hat لـ Docker.
نبذة عن InSkillCoach
خبير في التدريب والتقنيات
مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.
الشهادات:
- AWS Certified Solutions Architect – Professional
- شهادات Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش