أسرار موجه تسجيل الدخول في لينكس

نظرة عامة

فور اكتمال إقلاع نظام لينكس، يظهر موجه الولوج النصي الشهير login: بانتظار بيانات المستخدم. المحرك الأساسي المسؤول عن هذه الواجهة هو العفريت الخفي agetty. سنبتعد في هذا الدليل العملي عن شروحات التوثيق النظرية المعقدة، لنغوص مباشرة في آليات ربط البرنامج بنظام الإقلاع systemd، وتصميم رسائل الترحيب المخصصة عبر ملف /etc/issue، وضبط وتعديل سلوكيات الجلسات بما يخدم متطلبات إدارة الخوادم في بيئات العمل الاحترافية.

المفاهيم الجوهرية لأداة agetty والتحقق من حالتها تحت مظلة systemd

لمعرفة المسار الدقيق لملف agetty التنفيذي داخل شجرة النظام، نبدأ بتنفيذ الأمر which agetty.

تحديد مسار الملف التنفيذي agetty

تكمن وظيفة agetty الأساسية في إدارة قنوات الاتصال الطرفية—سواء كانت وحدات تحكم افتراضية (Virtual Consoles) أو منافذ تسلسلية (Serial Ports)—حيث يقوم بتهيئة خصائص البيئة الطرفية، وطلب اسم المستخدم، ثم تسليم الراية لبرنامج login. للتعرف على الإصدار المثبت واستكشاف خيارات التشغيل المتاحة، نستعرض معلمات التحكم التالية:
⚙️ [أبرز خيارات التشغيل]

-a, --autologin : تجاوز طلب بيانات الدخول وإتمام الولوج مباشرة باستخدام الحساب الموضح.
-J, --noclear : الإبقاء على مخرجات الإقلاع السابقة وتجنب مسح شاشة الطرفية قبل إظهار موجه الدخول.
-f, --issue-file : استبدال مسار الترويسة الافتراضية بملف ترحيبي مخصص يعرض قبل تسجيل الدخول.
-o, --login-options : تمرير معطيات وخيارات مخصصة لمعالج الدخول اللاحق login.
-n, --skip-login : تخطي مطالبة المستخدم باسم الحساب والتوجه مباشرة نحو الخطوة التالية في عملية التحقق.
-8, --8bits : ضبط وحدة التحكم للتعامل بكفاءة مع محارف التشفير ذات 8 بت.

فحص إصدار agetty والمزايا المدعومة

لمراقبة سلوك الوحدة المسؤولة عن إدارة شاشة التحكم الافتراضية الأولى (tty1) والتأكد من سير عملياتها، نستعلم عن حالة الخدمة بتنفيذ systemctl status [email protected] --no-pager.
تُظهر المخرجات أن عملية agetty تنشط بنجاح في الخلفية وهي بانتظار تفاعل المستخدم عبر منفذ الإدخال.

مراجعة حالة خدمة getty للطرفية الأولى tty1

تصميم لافتة ترحيبية خاصة لوحدة التحكم عبر تخصيص /etc/issue

لقراءة النص الافتراضي الذي يقدمه النظام للمستخدمين قبل إدخال بيانات الاعتماد، نعرض محتويات ملف التكوين باستخدام cat /etc/issue.
يوظف agetty رموز هروب خاصة ضمن هذا الملف؛ حيث يتحول الرمز \n تلقائياً إلى اسم الخادم (Hostname)، بينما يُستبدل الرمز \l برقم خط الاتصال الطرفي (tty) المفتوح حالياً.

استعراض محتوى ملف ترويسة الدخول الافتراضي

قبل الشروع في أي تعديل على الملفات الحيوية، يجدر بنا حماية التكوين الأصلي من خلال أخذ نسخة احتياطية سريعة عبر الأمر sudo cp /etc/issue /etc/issue.bak.

إنشاء نسخة احتياطية لملف الترويسة etc issue

الآن، سنبني ترويسة ترحيبية عصرية تبرز بيانات المنصة، ورقم الطرفية، وتفاصيل العتاد بشكل ديناميكي، وذلك بتمرير النص إلى ملف تجريبي عبر الأمر echo -e '\n=== Welcome to Ubuntu Server (tty: \l) ===\nOS: \s \r (\m) | Time: \t\n' | sudo tee /tmp/custom_issue.
يعتمد هذا القالب على متغيرات مدمجة تجلب رقم الطرفية (\l)، واسم نظام التشغيل (\s)، وإصدار النواة (\r)، ومعمارية المعالج (\m)، فضلاً عن التوقيت الآني (\t).

إنشاء لافتة ترحيب ديناميكية في مسار مؤقت

للتثبت من سلامة الصياغة وخلو سلاسل الهروب من الأخطاء التنسيقية، نستعرض الملف المؤقت الذي تم إنشاؤه عبر cat /tmp/custom_issue.

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

تعديل معلمات agetty وإعادة تعريف خدمات systemd بأمان

للتعرف على كيفية قيام مدقق النظام بتشغيل الطرفية الافتراضية tty1، نستعرض شفرة الوحدة الرسمية عبر الأمر systemctl cat [email protected].
تكشف هذه الخطوة عن القالب الأساسي الموجود في المسار (/usr/lib/systemd/system/[email protected]) وتحديداً سطر التشغيل الافتراضي ExecStart.

فحص شفرة وحدة خدمة getty الافتراضية

تجنباً لتعديل ملفات الحزم الرسمية مباشرة مما قد يسبب فقدان الإعدادات أثناء التحديثات، ننشئ مجلد تعديل ملحق (drop-in directory) مستخدمين الأمر sudo mkdir -p /etc/systemd/system/[email protected].

تجهيز دليل التجاوزات الخاص بالخدمة

لتفعيل الخيار --noclear—الذي يحافظ على رسائل تمهيد النواة على الشاشة—مع ضبط معدل نقل البيانات ونوع الطرفية، نقوم بكتابة التعديل الجديد باستخدام echo -e '[Service]\nExecStart=\nExecStart=-/sbin/agetty -o "-p -- \\u" --noclear -s %I 115200,38400,9600 vt220' | sudo tee /etc/systemd/system/[email protected]/noclear.conf.
السطر الفارغ ExecStart= ضروري جداً لتفريغ الأمر الأصلي أولاً، يليه سطر التوليد الجديد حاملاً الخيارات المعدلة المطلوبة لأداة agetty.

كتابة ملف الإعدادات البديل لمنع مسح الشاشة

يتطلب دمج وتطبيق ملفات التكوين الإضافية في ذاكرة systemd إعادة قراءة الوحدات عبر تنفيذ systemctl daemon-reload.

إعادة تحميل تعريفات وحدات systemd

للتأكد من دمج التعديلات الجديدة وتفوقها بنجاح على التكوين الافتراضي، نعيد تشغيل الأمر systemctl cat [email protected].
سيظهر ملف noclear.conf بوضوح في نهاية المخرجات، مؤكداً استبدال أمر التشغيل بنجاح.

مطالعة التكوين النهائي المدمج بعد تطبيق التعديل

رصد ومراقبة الطرفيات التسلسلية والافتراضية النشطة (tty)

لحصر خدمات الطرفيات الافتراضية التي تعمل فعلياً في الوقت الحاضر، نستعلم عن الخدمات المتطابقة مع النمط عبر systemctl list-units --type=service 'getty@*' --no-pager.
تبرز النتائج تشغيل الوحدة [email protected] بنجاح لمعالجة الطرفية الافتراضية الأولى في خلفية النظام.

عرض وحدات التحكم الافتراضية الشغالة حالياً

في بيئات الخوادم السحابية والأنظمة المدمجة، تُدار الطرفيات غالباً عبر المنافذ التسلسلية؛ وللتحقق من وجود الملفات المسؤولة عن ذلك، ننفذ systemctl list-unit-files 'serial-getty*' --no-pager.
يتضح من الاستعلام أن قالب [email protected] مثبت وجاهز للاستدعاء، ولكنه يقبع حالياً في وضع التعطيل (disabled).

استكشاف ملفات تعريف الطرفيات التسلسلية في النظام

للحصول على صورة شاملة عن الجلسات المفتوحة حالياً، ونوع الطرفيات المحجوزة، وهوية المتصلين، نستعين بأداة المراقبة الخفيفة w.
يمنحنا هذا الأمر نظرة بانورامية سريعة تشمل مدة تشغيل النظام (uptime)، ومتوسط العبء الحسابي (load average)، وبيانات نشاط المستخدمين في اللحظة الراهنة.

مراقبة المستخدمين والطرفيات النشطة بواسطة الأمر w

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