نظرة عامة ورؤية معمارية
تمثل إدارة الهويات وحوكمة الصلاحيات حجر الأساس في تأمين بيئات خوادم لينكس والحد من مخاطر التداخل الأمني بين الخدمات ومسؤولي النظام. تتناول هذه المقالة استراتيجيات عملية متكاملة لتهيئة الحسابات على توزيعة أوبونتو (Ubuntu) باستخدام السكربت المتقدم adduser، مع توضيح الفروق الجوهرية التي تميزه عن الأداة منخفضة المستوى useradd. كما نستعرض كيفية إحكام أذونات المجلدات الشخصية وضمان عزل العمليات الخلفية بدقة واحترافية.
التأسيس الأساسي: إنشاء الحسابات التفاعلية والآلية عبر adduser
قبل البدء بالعمليات التنفيذية، نضمن توافر أحدث الحزم البرمجية المسؤولة عن جداول المستخدمين وإدارة كلمات المرور عبر تحديث مستودعات النظام وتثبيت المتطلبات:

تُعد أداة adduser واجهة تشغيلية تفاعلية عالية المستوى (Perl wrapper) تتولى تهيئة بيئة المستخدم تلقائيًا، بدءًا من إنشاء الدليل المنزلي، ونسخ ملفات البيئة الافتراضية، وحتى ضبط شل تسجيل الدخول. وعند الرغبة في أتمتة العملية وتجاوز حوارات الإدخال، نلجأ للخيارات البرمجية المباشرة مثل --disabled-password و --gecos.
⚙️ [أبرز الخيارات التشغيلية ومجالات استخدامها]:
--home DIR : تحديد مسار مخصص للدليل المنزلي بدلاً من المسار التلقائي تحت /home.--shell SHELL : تعيين مفسر الأوامر المعتمد للدخول بدلاً من الصدفة الافتراضية للنظام.--gecos GECOS : تمرير البيانات الوصفية للمستخدم (كالاسم الكامل، رقم المكتب، وأرقام التواصل) دفعة واحدة دون إيقاف التنفيذ لطلب الإدخال.--disabled-password : تأسيس الحساب مبدئيًا دون كلمة سر، مع تعليق إمكانية تسجيل الدخول المباشر حتى يتم تفعيلها لاحقًا.--disabled-login : إنشاء الحساب مع إيقاف الوصول إلى الشل تمامًا لأغراض أمنية.--ingroup GROUP : إلحاق المستخدم بمجموعة رئيسية موجودة مسبقًا عند الإنشاء.--system : توليد حساب خدمات معزول ومخصص لتشغيل العمليات الخلفية والشياطين البرمجية (Daemons).

تتيح أداة chpasswd تغذية النظام ببيانات الدخول (اسم المستخدم مقترنًا بكلمة المرور) عبر مجرى الإدخال القياسي (Standard Input)، مما يسهل كتابة سكربتات الأتمتة لتعيين كلمات السر بأمان تام للحساب المنشأ مسبقًا testuser.

للتحقق من سلامة البنية الرقمية للمستخدم الجديد، يوفر الأمر id استعراضًا تفصيليًا للمُعرّف الفريد (UID)، والمجموعة الأساسية (GID)، إضافة إلى كافة المجموعات الثانوية التي ينتمي إليها الحساب.

يكشف فحص محتويات المجلد الشخصي للمستخدم عبر ls -la عن نجاح عملية النشر التلقائي لملفات الإعداد البيئية المخفية مثل .bashrc و .profile، المنقولة آليًا من قالب التوزيعة /etc/skel مع إسناد الملكية التامة للمستخدم الجديد.

تصعيد الصلاحيات وإدارة المجموعات المساعدة (دعم sudo)
تقتضي متطلبات العمل في كثير من الأحيان تنظيم صلاحيات الفريق من خلال مجموعات ثانوية. ننشئ هنا مجموعة عمل جديدة تدعى devops مع تمرير المعامل -f لتجنب رسائل الخطأ في حال كانت المجموعة موجودة مسبقًا:

تتميز أداة adduser في أوبونتو ببساطة تركيبتها النحوية؛ إذ يكفي سرد اسم المستخدم متبوعًا باسم المجموعة المستهدفة لضمه إليها دون الحاجة لمعاملات معقدة.

لمنح المستخدم صلاحيات إدارة النظام، نقوم بإلحاقه بالمجموعة القياسية sudo، مما يمكّنه من تشغيل المهام الإدارية الحساسة بامتيازات الجذر:

نراجع الآن قائمة المجموعات الكاملة التابعة للحساب عبر الأمر groups، للتأكد من انضمامه بنجاح إلى المجموعتين الجديدتين sudo و devops.

يُمكّننا الأمر sudo -l -U من التدقيق الجنائي في قواعد الامتياز الممنوحة للحساب؛ حيث يؤكد وجود المعيار (ALL : ALL) ALL اكتمال تفويض الصلاحيات الإدارية للمستخدم لتنفيذ جميع الأوامر على مستوى السيرفر.

هندسة حسابات الخدمات الخلفية والشياطين البرمجية (–system)
تتطلب حماية خوادم الإنتاج عزل الخدمات غير التفاعلية داخل حسابات مخصصة. بتطبيق الأمر sudo adduser --system --no-create-home --group appservice، نقوم بإنشاء هوية نظام مقيدة ومجموعة موازية بنفس الاسم، مما يضمن تخصيص معرّف رقمي منخفض النطاق (UID/GID أقل من 1000) مع حجب إنشاء أي مسار منزلي غير مبرر أمنيًا.

بالاستعلام عن الحساب عبر أداة getent passwd appservice في قاعدة بيانات النظام، نلاحظ التوجيه التلقائي للمسار المنزلي إلى /nonexistent واقتران الحساب بالشل المقفل /usr/sbin/nologin، مما يجهض أي محاولة لفتح جلسات طرفية تفاعلية بواسطة هذه الهوية.

يؤكد البحث في ملف تكوين المجموعات /etc/group نجاح تأسيس المجموعة النظامية التابعة appservice برقم تعريفي ملائم لبيئات الخدمات (GID 103).

يعطي استدعاء id appservice تأكيدًا نهائيًا على تخصيص المعرفات ضمن حيز حسابات النظام التشغيلية (UID 102 و GID 103)، بعيدًا عن نطاق حسابات المستخدمين البشرية التي تبدأ تقليديًا من 1000 فما فوق.

مقارنة مع useradd والتخلص الآمن من الحسابات (deluser)
تكمن القوة الحقيقية لأداة adduser في استنادها إلى ملف الإعدادات التوجيهي /etc/adduser.conf؛ حيث تفرض التوزيعة تلقائيًا أذونات تقييدية مشددة للمجلد المنزلي (DIR_MODE بقيمة 0750 أو 0700) وشل قياسي موحد (DSHELL). على النقيض من ذلك، فإن أداة useradd الأولية تتطلب تمرير كافة هذه المعايير يدويًا مع كل استدعاء لتجنب إنشاء بيئات غير مكتملة أو مكشوفة الصلاحيات.

عند استحقاق حذف أي مستخدم، نطبق خيار التطهير الكامل sudo deluser --remove-home testuser لضمان إزالة المجلد المنزلي وصندوق البريد، مما يقضي على ظاهرة الملفات اليتيمة (Orphaned Files) التي تفقد أصحابها وقد تشكل ثغرات أمنية في إدارة الوصول.

لإلغاء حسابات الخدمات دون الإضرار ببيئة النظام، نمرر المعامل المتخصص sudo deluser --system appservice، والذي يتحقق استباقيًا من هوية الحساب للتأكد من انتمائه لطبقة النظام ومنع الإزالة الخاطئة لحسابات المستخدمين العاديين.

بعد الانتهاء من العمليات التجريبية، يجري تنظيف المجموعات المؤقتة غير المستخدمة بتنفيذ sudo groupdel devops 2>/dev/null || true لضمان بقاء سجلات النظام نظيفة وخالية من المخلفات الإعدادية.

في ختام الإجراءات، يُنصح بالتحقق المباشر من اختفاء سجلات المستخدم عبر فحص قاعدة الهويات بالأمر id testuser || true؛ فإذا ظهرت أي بيانات متبقية، دل ذلك على وجود جلسات نشطة أو ارتباطات في ملفات المصادقة تستوجب المراجعة اليدوية الفورية.

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