أين وكيف يتم تخزين كلمات المرور على Linux؟

Where How Are Passwords Stored Linux



يعد اسم المستخدم بكلمة مرور مقابلة لحساب معين هو المطلب الأساسي الذي يمكن للمستخدم من خلاله الوصول إلى نظام Linux. يتم حفظ كلمة مرور جميع حسابات المستخدمين في ملف أو قاعدة بيانات بحيث يمكن التحقق من المستخدم أثناء محاولة تسجيل الدخول إلى النظام. لا يمتلك كل مستخدم المهارات والخبرات الكافية لتحديد موقع هذا الملف على نظامه. ومع ذلك ، إذا تمكنت من الوصول إلى قاعدة البيانات أو ملف يحتفظ بكل كلمات مرور مستخدم تسجيل الدخول ، فيمكنك الوصول بسهولة إلى نظام Linux. عندما يقوم المستخدم بإدخال اسم مستخدم وكلمة مرور على Linux لتسجيل الدخول ، فإنه يتحقق من كلمة المرور التي تم إدخالها مقابل إدخال في ملفات مختلفة من الدليل '/ etc'.

تحتفظ ملفات / etc / passwd بجميع المعلومات المهمة الضرورية لتسجيل دخول المستخدم. لتوضيح ذلك بكلمات أبسط ، يخزن ملف / etc / passwd تفاصيل حساب المستخدم. هذا الملف هو ملف نصي عادي يحتوي على قائمة كاملة بجميع المستخدمين على نظام Linux الخاص بك. يحتوي على معلومات حول اسم المستخدم وكلمة المرور و UID (معرف المستخدم) و GID (معرف المجموعة) و shell والدليل الرئيسي. يجب أن يكون لهذا الملف أذونات قراءة حيث يتم استخدام العديد من الأدوات المساعدة لسطر الأوامر لتعيين معرفات المستخدم إلى اسم المستخدم. ولكن ، يجب أن تكون أذونات الوصول للكتابة محدودة فقط لحسابات المستخدمين المتميزين أو الجذر.







ستوضح هذه المقالة كيف وأين يمكنك تخزين كلمات مرور حساب مستخدم النظام على توزيع Linux. قمنا بتنفيذ جميع العروض التوضيحية على نظام Ubuntu 20.04. ومع ذلك ، يمكنك العثور على ملف / etc / passwd على أي توزيعة Linux.



المتطلبات المسبقة

يجب أن يكون لديك امتيازات الجذر لتشغيل الأوامر الإدارية.



فهم أساسي حول ملف / etc / passwd

يحتوي الملف / etc / passwd على معلومات حول حساب المستخدم لنظامك. يتم فصل جميع الحقول المخزنة عن النقطتين: علامة.
عند تشغيل الأمر التالي ، سترى كل إدخال لملف / etc / passwd:





$قط /إلخ/passwd

سيسرد الأمر أعلاه جميع مستخدمي نظام Linux الخاص بك.
سيتم عرض نوع التنسيق التالي على شاشة الجهاز:

تفاصيل حول تنسيق الحقول / etc / passwd
من الصورة أعلاه:

اسم المستخدم: يمثل الحقل الأول اسم المستخدم. يتم تحديد طول حقل اسم المستخدم بين 1-32 حرفًا. يستخدم هذا عندما يقوم المستخدم بتسجيل الدخول إلى النظام. في المثال أعلاه ، 'khuzdar' هو اسم المستخدم.
كلمه السر: في المثال أعلاه ، يُظهر الحرف x أن كلمة المرور مخزنة في شكل مشفر في ملف / etc / shadow.
معرف المستخدم (UID): يجب تعيين معرف المستخدم بشكل منفصل لكل مستخدم. يتم تعيين رقم UID صفر للمستخدم الجذر ، ويتم تعيين معرفات المستخدم من 1-99 إلى حسابات محددة مسبقًا أو قياسية. يتم تعيين معرّفات UID الإضافية من 100-999 للحسابات أو المجموعات الإدارية للنظام. في لقطة الشاشة أعلاه ، معرف المستخدم هو 1001.
معرف المجموعة (GID): يمثل الحقل التالي معرف المجموعة. يتم تخزين GID في ملف / etc / group. بناءً على المثال أعلاه ، ينتمي المستخدم إلى معرف المجموعة 1001.
معلومات حول معرّف المستخدم: الحقل التالي مخصص للتعليقات. في هذا الحقل ، يمكنك إضافة بعض المعلومات الإضافية حول المستخدم المحدد ، مثل الاسم الكامل للمستخدم ، ورقم الهاتف ، وما إلى ذلك. ومع ذلك ، في المثال أعلاه ، لم يقدم المستخدم أي رقم هاتف.
الدليل الرئيسي: يعرض هذا الحقل موقع الدليل الرئيسي الذي تم تعيينه للمستخدم الحالي. إذا لم يكن الدليل المحدد موجودًا ، فسيتم عرض /. توضح الصورة أعلاه موقع المستخدم المميز في الدليل الرئيسي ، وهو home / kbuzdar.
الأمر // قذيفة: المسار المطلق الافتراضي للقذيفة أو الأمر هو / bin / bash. وهذا ما يعرف بالصدفة. على سبيل المثال ، مسؤول النظام باستخدام قذيفة nologin. يتصرف باعتباره الغلاف البديل لحسابات مستخدمي النظام. إذا كانت الصدفة موجودة في المسار إلى / sbin / nologin وأراد المستخدم تسجيل الدخول مباشرة إلى نظام Linux ، فسيغلق / sbin / nologin الاتصال أو يعطله.



ابحث عن المستخدم في ملف / etc / passwd

يمكنك البحث عن مستخدم معين باستخدام ملف / etc / passwd ، باستخدام الأمر grep. على سبيل المثال ، نريد البحث عن اسم المستخدم 'kbuzdar' من ملف / etc / passwd ، باستخدام الصيغة التالية ، ثم يمكننا البحث بسهولة عن مستخدم محدد ، مما يوفر وقتنا:

$سيطرةاسم االمستخدم/إلخ/passwd

ستتغير الصيغة أعلاه إلى الشكل التالي:

$سيطرةحاد/إلخ/passwd


أو

$سيطرة -في '^ kbuzdar' /إلخ/passwd

عرض الأذونات على ملف / etc / passwd

كما ذكرنا أعلاه ، يجب أن يكون جميع المستخدمين الآخرين ، باستثناء الجذر ، قادرين على قراءة الإذن في ملف / etc / passwd ، وأن يكون المالك هو المستخدم المتميز أو الجذر.
اكتب ما يلي للتحقق من أذونات القراءة على الملف:

$ls -ال /إلخ/passwd

سيتم عرض عينة الإخراج التالية على الجهاز:

قراءة ملف / etc / passwd

يمكنك قراءة ملف / etc / passwd على نظام Linux الخاص بك باستخدام سكربت bash التالي أو تشغيل ما هو مكتوب أدناه أثناء تنفيذ أوامر التكرار على الجهاز.
قم بإنشاء ملف نصي والصق الكود التالي فيه:

#!/bin/bash
# إجمالي سبعة حقول من / etc / passwd مخزنة كـ $ f1، f2 ...، $ f7

في حين IFS=:اقرأ -rf1 f2 f3 f4 f5 f6 f7
فعل
رما - طرد - قذف 'مستخدم$ f1استعمال$f7shell ويخزن الملفات بتنسيقدولار f6الدليل.'
انتهى < /إلخ/passwd

باستخدام حلقة while ، ستقرأ جميع الحقول السبعة ثم تعرض محتوى الملف بشكل متكرر على الجهاز.
احفظ الملف أعلاه باسم 'readfile.sh'.

الآن ، قم بتشغيل الملف أعلاه باستخدام الأمر التالي:

$سحقreadfile.sh

استكشف / etc / shadow file

يحتوي الملف / etc / shadow على جميع كلمات المرور المشفرة المخزنة في هذا الملف والتي يمكن قراءتها فقط لمستخدمي الجذر.
لننفذ الأمر التالي لعرض المحتوى:

$سودو قط /إلخ/ظل

يمكنك رؤية كل كلمات المرور بالتنسيق المشفر:

استنتاج

لقد رأينا من المقالة أعلاه ، جميع تفاصيل حساب المستخدم وكلمات المرور المخزنة في ملف / etc / passwd في نظام Linux. يمكنك قراءة هذا الملف ، لكن المستخدمين الجذر فقط لديهم أذونات الكتابة. علاوة على ذلك ، رأينا أيضًا جميع كلمات المرور المشفرة المخزنة في ملف / etc / shadow. يمكنك أيضًا استكشاف ملف / etc / group للحصول على تفاصيل حول مجموعة المستخدمين.