كلمة المرور
يُستخدم الأمر passwd في أنظمة يونكس ، وبلان 9 ، وإنفيرنو ، ومعظم أنظمة التشغيل الشبيهة بيونكس، لتغيير كلمة مرور المستخدم . تُمرر كلمة المرور التي يُدخلها المستخدم عبر دالة اشتقاق مفتاح لإنشاء نسخة مُشفّرة من كلمة المرور الجديدة، والتي تُحفظ. تُخزن النسخة المُشفّرة فقط؛ أما كلمة المرور الأصلية فلا تُحفظ لأسباب أمنية.
عند تسجيل دخول المستخدم، تُمرر كلمة المرور التي أدخلها أثناء عملية تسجيل الدخول عبر نفس دالة اشتقاق المفتاح، وتُقارن النسخة المُجزأة الناتجة بالنسخة المحفوظة. إذا كانت التجزئتان متطابقتين، تُعتبر كلمة المرور المُدخلة صحيحة، ويتم التحقق من هوية المستخدم. نظريًا، من الممكن أن تُنتج كلمتا مرور مختلفتان نفس التجزئة . مع ذلك، صُممت دوال التجزئة التشفيرية بطريقة تجعل إيجاد أي كلمة مرور تُنتج نفس التجزئة أمرًا بالغ الصعوبة، بل ومستحيلاً عمليًا، لذا إذا تطابقت التجزئة الناتجة مع التجزئة المحفوظة، يُمكن التحقق من هوية المستخدم. [ 1 ]
يمكن استخدام أمر passwd لتغيير كلمات المرور للحسابات المحلية، وفي معظم الأنظمة، يمكن استخدامه أيضًا لتغيير كلمات المرور التي تتم إدارتها في آلية مصادقة موزعة مثل NIS أو Kerberos أو LDAP .
ملف كلمة المرور
الملف /etc/passwdعبارة عن قاعدة بيانات نصية تحتوي على معلومات حول المستخدمين الذين قد يسجلون الدخول إلى النظام أو هويات مستخدمي نظام التشغيل الأخرى التي تمتلك العمليات الجارية.
في العديد من أنظمة التشغيل، يعد هذا الملف مجرد واحد من العديد من الواجهات الخلفية الممكنة لخدمة اسم كلمة المرور الأكثر عمومية .
يستمد اسم الملف من إحدى وظائفه الأصلية، حيث كان يحتوي على البيانات المستخدمة للتحقق من كلمات مرور حسابات المستخدمين. مع ذلك، في أنظمة يونكس الحديثة ، تُخزَّن معلومات كلمات المرور الحساسة أمنيًا غالبًا في ملف مختلف باستخدام كلمات مرور مُخفاة، أو تطبيقات قواعد بيانات أخرى.
/etc/passwdعادةً ما يكون للملف أذونات نظام الملفات التي تسمح بقراءته من قبل جميع مستخدمي النظام ( قابل للقراءة من قبل الجميع )، على الرغم من أنه لا يمكن تعديله إلا بواسطة المستخدم المتميز أو باستخدام عدد قليل من الأوامر الخاصة ذات الامتيازات.
الملف /etc/passwdعبارة عن ملف نصي يحتوي على سجل واحد في كل سطر ، يصف كل سجل حساب مستخدم . يتكون كل سجل من سبعة حقول مفصولة بنقطتين رأسيتين . ترتيب السجلات داخل الملف غير مهم عمومًا.
مثال على سجل:
jdoe : x : 1001 : 1000 : جون دو، الغرفة 1007، (234)555-8910، (234)555-0044، البريد الإلكتروني : /home/jdoe : /bin/shالحقول، بالترتيب من اليسار إلى اليمين، هي: [ 2 ]
jdoeاسم المستخدم: هو النص الذي يُدخله المستخدم عند تسجيل الدخول إلى نظام التشغيل؛ ويُسمى اسم المستخدم في سجل النظام . يجب أن يكون فريدًا بين جميع المستخدمين المدرجين في الملف.x: معلومات تُستخدم للتحقق من صحة كلمة مرور المستخدم . يكون تنسيقها مماثلاً لتنسيق الحقل المماثل في ملف كلمة المرور الاحتياطية ، مع إضافة أن تعيينها إلى "x" يعني أن كلمة المرور الفعلية موجودة في الملف الاحتياطي، وهو أمر شائع في الأنظمة الحديثة. [ 3 ]1001رقم تعريف المستخدم ، يستخدمه نظام التشغيل لأغراض داخلية. يجب أن يكون فريدًا لأنه يُعرّف المستخدمين بشكل فريد.1000: رقم تعريف المجموعة ، الذي يحدد المجموعة الأساسية للمستخدم؛ جميع الملفات التي أنشأها هذا المستخدم قد تكون متاحة في البداية لهذه المجموعة.John Doe,Room 1007...حقل Gecos : تعليق يصف الشخص أو الحساب. عادةً ما يكون هذا مجموعة من القيم المفصولة بفواصل، بما في ذلك الاسم الكامل للمستخدم وتفاصيل الاتصال به. [ 4 ]/home/jdoe: مسار مجلد المستخدم الرئيسي ./bin/shالبرنامج الذي يتم تشغيله في كل مرة يسجل فيها المستخدم دخوله إلى النظام. بالنسبة للمستخدم التفاعلي، يكون هذا عادةً أحد مترجمي أوامر النظام ( الأصداف ).
ملف الظل
/etc/shadowيُستخدم لزيادة مستوى أمان كلمات المرور عن طريق تقييد وصول جميع المستخدمين باستثناء المستخدمين ذوي الصلاحيات العالية إلى بيانات كلمات المرور المشفرة. عادةً، تُحفظ هذه البيانات في ملفات مملوكة للمستخدم المتميز ولا يمكن الوصول إليها إلا من قِبله . [ 5 ]
يستطيع مديرو الأنظمة تقليل احتمالية هجمات التخمين العشوائي بجعل قائمة كلمات المرور المشفرة غير قابلة للقراءة من قِبل المستخدمين غير المصرح لهم. والطريقة البديهية لتحقيق ذلك هي جعل passwdقاعدة البيانات نفسها قابلة للقراءة فقط من قِبل المستخدم الجذر. مع ذلك، سيؤدي هذا إلى تقييد الوصول إلى البيانات الأخرى في الملف، مثل ربط أسماء المستخدمين بمعرفاتهم، مما سيعطل العديد من الأدوات والأنظمة الحالية. أحد الحلول هو استخدام ملف كلمات مرور "مخفي" لحفظ تجزئات كلمات المرور بشكل منفصل عن البيانات الأخرى في ملف passwd القابل للقراءة من قِبل الجميع . بالنسبة للملفات المحلية، يُستخدم هذا عادةً /etc/shadowفي أنظمة لينكس ويونكس، أو /etc/master.passwdفي أنظمة BSD ؛ حيث لا يمكن قراءة أي منها إلا من قِبل المستخدم الجذر . (يُعتبر وصول المستخدم الجذر إلى البيانات مقبولاً، لأنه في الأنظمة التي تعتمد نموذج الأمان التقليدي "للمستخدم الجذر ذي الصلاحيات الكاملة"، سيتمكن المستخدم الجذر من الحصول على المعلومات بطرق أخرى على أي حال). تستخدم جميع أنظمة التشغيل الحديثة الشبيهة بنظام يونكس تقريبًا كلمات مرور مخفية.
لا يحلّ ملف كلمة المرور المخفي مشكلة وصول المهاجمين إلى كلمات المرور المشفرة بشكل كامل، إذ تعمل بعض أنظمة مصادقة الشبكة عن طريق إرسال كلمة المرور المشفرة عبر الشبكة (أحيانًا كنص عادي ، مثل Telnet [ 6 ] )، مما يجعلها عرضة للاعتراض. كما يمكن أن تصبح نسخ بيانات النظام، مثل النسخ الاحتياطية المحفوظة على أشرطة أو وسائط بصرية، وسيلةً للحصول على كلمات المرور المشفرة بطرق غير مشروعة. إضافةً إلى ذلك، يجب تصميم وظائف برامج التحقق من كلمات المرور الشرعية بطريقة تمنع البرامج الخبيثة من إجراء عمليات تحقق سريعة من المصادقة.
بغض النظر عن تفعيل خاصية إخفاء كلمات المرور على النظام، فإن ملف passwd قابل للقراءة من قبل جميع المستخدمين، مما يسمح للعديد من أدوات النظام (مثل grep ) بالعمل (للتأكد من وجود أسماء المستخدمين الموجودة في الملف)، بينما يقتصر حق الكتابة عليه على المستخدم الجذر فقط. في حال عدم تفعيل خاصية إخفاء كلمات المرور، يمكن للمهاجم الذي لا يملك صلاحيات الوصول إلى النظام الحصول على النسخة المشفرة من كلمات مرور جميع المستخدمين. يمكن استخدام هذه القيم لشن هجوم تخمين كلمات المرور دون اتصال بالإنترنت، واختبار كلمات المرور المحتملة مقابل كلمات المرور المشفرة بسرعة نسبية دون تنبيه أنظمة الأمان المصممة لاكتشاف عدد غير طبيعي من محاولات تسجيل الدخول الفاشلة . خاصةً عندما لا تكون التشفيرة مُملّحة، فمن الممكن أيضًا البحث عن كلمات المرور المشفرة هذه في جداول قوس قزح ، وهي قواعد بيانات مصممة خصيصًا لاستعادة كلمة المرور لكل تشفير فريد.
عند استخدام نظام كلمات المرور المظللة، /etc/passwdيعرض الملف عادةً حرفًا مثل ' *' أو ' x' في حقل كلمة المرور لكل مستخدم بدلاً من كلمة المرور المشفرة، /etc/shadowويحتوي عادةً على معلومات المستخدم التالية:
- اسم المستخدم لتسجيل الدخول
- كلمة مرور مشفرة ومُجزأة أو قيمة استثناء حالة، على سبيل المثال:
$id$salt$hashed، وهو الشكل القابل للطباعة لتجزئة كلمة المرور كما ينتجها برنامج crypt (C) ، حيث$idيمثل الخوارزمية المستخدمة. قد تستخدم أنظمة أخرى شبيهة بنظام يونكس قيمًا مختلفة، مثل NetBSD . يُستخدم تمديد المفتاح لزيادة صعوبة كسر كلمة المرور ، باستخدام 1000 جولة افتراضيًا من MD5 المعدل، [ 7 ] و64 جولة من Blowfish، و5000 جولة من SHA-256 أو SHA-512. [ 8 ] يمكن تغيير عدد الجولات لـ Blowfish ، أو لـ SHA-256 وSHA-512 باستخدام$A$rounds=X$، حيث يمثل "A" معرف الخوارزمية، و"X" عدد الجولات. تتضمن قيم المعرف الشائعة ما يلي: [ 9 ]- سلسلة فارغة - لا توجد كلمة مرور، الحساب ليس لديه كلمة مرور (يُبلغ عنها بواسطة passwd على نظام Solaris بـ "NP"). [ 10 ]
- "!", "*" – الحساب مقفل بكلمة مرور، ولن يتمكن المستخدم من تسجيل الدخول عبر مصادقة كلمة المرور ولكن قد تظل الطرق الأخرى (مثل مفتاح ssh، أو تسجيل الدخول كجذر) مسموحة.
- "*LK*" – الحساب نفسه مغلق، ولن يتمكن المستخدم من تسجيل الدخول.
- "*NP*", "!!" – لم يتم تعيين كلمة المرور مطلقًا [ 11 ]
- عدد الأيام منذ آخر تغيير لكلمة المرور
- الأيام المتبقية حتى يُسمح بالتغيير
- أيام قبل الحاجة إلى التغيير
- تحذير بشأن تاريخ انتهاء الصلاحية
- يتم قفل الحساب بعد مرور أيام من عدم تسجيل الدخول.
- عدد الأيام منذ تاريخ انتهاء صلاحية الحساب
- محجوز وغير مستخدم
تنسيق ملف الظل بسيط، وهو مطابق تقريبًا لتنسيق ملف كلمات المرور، أي سطر واحد لكل مستخدم، مع ترتيب الحقول في كل سطر، وفصل الحقول بنقطتين رأسيتين. تتطلب العديد من الأنظمة أن يكون ترتيب أسطر المستخدمين في ملف الظل مطابقًا لترتيب المستخدمين المقابلين في ملف كلمات المرور.
تاريخ
قبل استخدام تقنية إخفاء كلمة المرور، كانت كلمة مرور مستخدم Unix المشفرة تُخزن في الحقل الثاني من سجله في /etc/passwdالملف (ضمن تنسيق الحقول السبعة كما هو موضح أعلاه).
ظهرت تقنية إخفاء كلمات المرور لأول مرة في أنظمة يونكس مع تطوير نظام التشغيل SunOS في منتصف الثمانينيات، [ 12 ] ونظام System V الإصدار 3.2 في عام 1988 ونظام BSD 4.3 Reno في عام 1990. ولكن، لم يقم البائعون الذين قاموا بعمليات نقل من إصدارات يونكس السابقة دائمًا بتضمين ميزات إخفاء كلمات المرور الجديدة في إصداراتهم، مما جعل مستخدمي تلك الأنظمة عرضة لهجمات ملفات كلمات المرور.
قد يُرتب مسؤولو النظام أيضًا تخزين كلمات المرور في قواعد بيانات موزعة مثل NIS و LDAP ، بدلًا من تخزينها في ملفات على كل نظام متصل. في حالة NIS، غالبًا ما تُستخدم آلية كلمة المرور الاحتياطية على خوادم NIS؛ أما في الآليات الموزعة الأخرى، فتُعالج مشكلة الوصول إلى مكونات مصادقة المستخدم المختلفة بواسطة آليات الأمان الخاصة بمستودع البيانات الأساسي.
في عام ١٩٨٧، تعرضت جولي هوغ، مؤلفة برنامج Shadow Password Suite الأصلي ، لاختراق حاسوبها، فكتبت الإصدار الأولي من البرنامج الذي يحتوي على أوامر معينة login. passwdوقد suتم تطوير هذا الإصدار، الذي كُتب لنظام التشغيل SCO Xenix ، بسرعة ليتم نقله إلى منصات أخرى. وفي عام ١٩٩٢، أي بعد عام واحد من الإعلان عن مشروع لينكس، تم نقل برنامج Shadow Suite إلى لينكس ، وأُدرج في العديد من التوزيعات المبكرة، ولا يزال يُدرج في العديد من توزيعات لينكس الحالية .
في السابق، كان من الضروري استخدام أوامر مختلفة لتغيير كلمات المرور في أنظمة المصادقة المختلفة. على سبيل المثال، كان الأمر لتغيير كلمة مرور NIS هو yppasswd . تطلب هذا من المستخدمين معرفة الطرق المختلفة لتغيير كلمات المرور في الأنظمة المختلفة، كما أدى إلى تكرار غير ضروري للتعليمات البرمجية في البرامج المختلفة التي تؤدي نفس الوظائف بواجهات خلفية مختلفة . في معظم التطبيقات، يوجد الآن أمر passwd واحد، ويتم التحكم في مكان تغيير كلمة المرور بشفافية تامة للمستخدم عبر وحدات مصادقة قابلة للتوصيل (PAMs). على سبيل المثال، يتم تحديد نوع التجزئة المستخدمة من خلال إعدادات الوحدة pam_unix.so. افتراضيًا، يتم استخدام تجزئة MD5 ، بينما تدعم الوحدات الحالية أيضًا تجزئات أقوى مثل Blowfish و SHA256 و SHA512 .
انظر أيضاً
- chsh
- Crypt (C) (دالة المكتبة) و Crypt (Unix) (الأداة المساعدة)
- getent
- مدير حسابات الأمان ( المكافئ في نظام التشغيل مايكروسوفت ويندوز لملف كلمات المرور)
- أمان يونكس
- VIP
مراجع
- ↑ "passwd(1) — صفحة دليل لينكس" . تم الاطلاع عليه بتاريخ 26 فبراير 2025 .
- ↑ فهم
/etc/passwdتنسيق الملف - ↑ "passwd(5) - صفحة دليل لينكس" . Man7.org . تم الاطلاع عليه بتاريخ 25-08-2014 .
- ↑ آدامز، ديفيد. "كيفية عرض وفهم ملف /etc/passwd في لينكس" .
- ↑ "shadow(5) — صفحة دليل لينكس" . تم الاطلاع عليه بتاريخ 26 فبراير 2025 .
- ↑ RFC 2877: 5250 تحسينات Telnet
- ↑ "تجزئة كلمات المرور باستخدام MD5-crypt فيما يتعلق بـ MD5 - مدونة فيدار" . 9 أغسطس 2011.
- ↑ "تطبيق SHA512-crypt مقابل MD5-crypt - مدونة فيدار" . 16 أغسطس 2011.
- ↑ "تنسيق التشفير المعياري" . مؤرشف من الأصل بتاريخ 2022-01-07 . تم الاطلاع عليه بتاريخ 2022-01-29 .
- ↑ "solaris - passwd (1)" . cs.bgu.ac.il . مؤرشف من الأصل بتاريخ 2013-12-17.
- ↑ "6.3. معلومات خاصة بنظام Red Hat Enterprise Linux" . Access.redhat.com . تم الاطلاع عليه بتاريخ 25 أغسطس 2014 .
- ↑ "passwd.adjunct(5)" . صفحات دليل FreeBSD . ١٤ ديسمبر ١٩٨٧. مؤرشف من الأصل في ٧ أكتوبر ٢٠٢٥. تم الاطلاع عليه في ٧ أكتوبر ٢٠٢٥ .
روابط خارجية
- صفحة من دليل يونكس الإصدار الأول تصف ملف /etc/passwd
- تحديث رمز (رموز) مصادقة المستخدم – دليل أوامر FreeBSD العامة
- – دليل مبرمج الخطة 9 ، المجلد 1
- – دليل أوامر Inferno العامة
- authconfig ، أداة سطر أوامر للتحكم في استخدام كلمات المرور المخفية
- ملفات التكوين
- مصادقة كلمة المرور
- قواعد بيانات الأمان
- برامج متعلقة بمصادقة يونكس
- أدوات إدارة ودعم مستخدمي نظام يونكس
- أوامر الخطة 9
- أوامر نظام التشغيل إنفيرنو
