.\" -*- coding: UTF-8 -*- .\" Copyright 1997, John S. Kallal .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH random 4 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم random، urandom \- أجهزة مصدر الأرقام العشوائية في النواة .SH موجز .nf #include .P \fBint ioctl(\fP\fIfd\fP\fB, RND\fP\fIrequest\fP\fB, \fP\fIparam\fP\fB);\fP .fi .SH الوصف توفر ملفات المحارف الخاصة \fI/dev/random\fP و \fI/dev/urandom\fP (الموجودة منذ لينكس 1.3.30) واجهة لمولد الأرقام العشوائية في النواة. يحمل الملف \fI/dev/random\fP رقم الجهاز الرئيس 1 ورقم الجهاز الفرعي 8. ويحمل الملف \fI/dev/urandom\fP رقم الجهاز الرئيس 1 ورقم الجهاز الفرعي 9. .P يجمع مولد الأرقام العشوائية الضجيج البيئي من وسائط الأجهزة والمصادر الأخرى في مجمع اعتلاج (entropy pool). ويحتفظ المولد أيضاً بتقدير لعدد بتات الضجيج في مجمع الاعتلاج. ومن مجمع الاعتلاج هذا، تُنشأ الأرقام العشوائية. .P يوفر لينكس 3.17 وما يليه واجهة \fBgetrandom\fP(2) الأبسط والأكثر أماناً والتي لا تتطلب ملفات خاصة؛ انظر صفحة دليل \fBgetrandom\fP(2) للتفاصيل. .P عند القراءة منه، يعيد الجهاز \fI/dev/urandom\fP بايتات عشوائية باستخدام مولد أرقام عشوائية زائفة يُبذر من مجمع الاعتلاج. القراءات من هذا الجهاز لا تُعطّل (أي لا يُتخلى عن المعالج)، ولكنها قد تسبب تأخيراً ملحوظاً عند طلب كميات كبيرة من البيانات. .P .\" This is a real problem; see .\" commit 9b4d008787f864f17d008c9c15bbe8a0f7e2fc24 عند القراءة منه أثناء وقت الإقلاع المبكر، قد يعيد \fI/dev/urandom\fP بيانات قبل تهيئة مجمع الاعتلاج. إذا كان هذا الأمر يهم تطبيقك، فاستخدم \fBgetrandom\fP(2) أو \fI/dev/random\fP بدلاً منه. .P جهاز \fI/dev/random\fP هو واجهة موروثة تعود إلى وقت لم تكن فيه البدائيات التعموية المستخدمة في تنفيذ \fI/dev/urandom\fP موثوقة على نطاق واسع. سيعيد بايتات عشوائية فقط ضمن العدد المقدر لبتات الضجيج الحديثة في مجمع الاعتلاج، مع التعطيل إذا لزم الأمر. يعد \fI/dev/random\fP مناسباً للتطبيقات التي تحتاج إلى عشوائية عالية الجودة، ويمكنها تحمل تأخيرات غير محددة. .P عندما يكون مجمع الاعتلاج فارغاً، ستُعطل القراءات من \fI/dev/random\fP حتى يُجمع ضجيج بيئي إضافي. منذ لينكس 5.6، يُتجاهل علم \fBO_NONBLOCK\fP حيث لن يُعطل \fI/dev/random\fP بعد الآن إلا أثناء عملية الإقلاع المبكر. في الإصدارات السابقة، إذا استُدعي \fBopen\fP(2) لـ \fI/dev/random\fP مع علم \fBO_NONBLOCK\fP، فإن \fBread\fP(2) اللاحق لن يُعطل إذا لم يكن عدد البايتات المطلوب متاحاً. وبدلاً من ذلك، تُعاد البايتات المتاحة. إذا لم يتوفر أي بايت، سيعيد \fBread\fP(2) القيمة \-1 ويُضبط \fIerrno\fP إلى \fBEAGAIN\fP. .P ليس لعلم \fBO_NONBLOCK\fP أي تأثير عند فتح \fI/dev/urandom\fP. عند استدعاء \fBread\fP(2) للجهاز \fI/dev/urandom\fP، ستعيد القراءات التي تصل إلى 256 بايت نفس عدد البايتات المطلوبة ولن يُقاطعها معالج إشارات. قد تعيد القراءات بمخزن مؤقت يتجاوز هذا الحد عدداً أقل من البايتات المطلوبة أو تفشل بالخطأ \fBEINTR\fP، إذا قاطعها معالج إشارات. .P .\" commit 79a8468747c5f95ed3d5ce8376a3e82e0c5857fc .\" SEC_XFER_SIZE in drivers/char/random.c منذ لينكس 3.16، سيعيد \fBread\fP(2) من \fI/dev/urandom\fP في أقصى حد 32\ ميجابايت. سيعيد \fBread\fP(2) من \fI/dev/random\fP في أقصى حد 512 بايت (340 بايت قبل لينكس 2.6.12). .P ستحدث الكتابة إلى \fI/dev/random\fP أو \fI/dev/urandom\fP مجمع الاعتلاج بالبيانات المكتوبة، لكن هذا لن يؤدي إلى تعداد اعتلاج أعلى. هذا يعني أنها ستؤثر على المحتويات المقروءة من كلا الملفين، لكنها لن تجعل القراءات من \fI/dev/random\fP أسرع. .SS الاستخدام تُعد واجهة \fI/dev/random\fP واجهة موروثة، ويُفضل \fI/dev/urandom\fP وهو كافٍ في جميع حالات الاستخدام، باستثناء التطبيقات التي تتطلب عشوائية أثناء وقت الإقلاع المبكر؛ لهذه التطبيقات، يجب استخدام \fBgetrandom\fP(2) بدلاً من ذلك، لأنه سيُعطل حتى يُهيأ مجمع الاعتلاج. .P .\" إذا حُفظ ملف البذرة عبر عمليات إعادة التشغيل كما هو موصى به أدناه، فسيكون الناتج آمناً تعموياً ضد المهاجمين الذين لا يملكون وصول جذر محلي بمجرد إعادة تحميله في تسلسل الإقلاع، وهو مناسب تماماً لمفاتيح جلسات تعمية الشبكة. (قامت جميع توزيعات لينكس الرئيسة بحفظ ملف البذرة عبر عمليات إعادة التشغيل منذ عام 2000 على الأقل.) نظراً لأن القراءات من \fI/dev/random\fP قد تُعطل، سيرغب المستخدمون عادةً في فتحه في وضع عدم التعطيل (أو إجراء قراءة بمهلة زمنية)، وتقديم نوع من إشعار للمستخدم إذا لم يكن الاعتلاج المطلوب متاحاً على الفور. .SS الضبط إذا لم يكن نظامك يحتوي على \fI/dev/random\fP و \fI/dev/urandom\fP منشأين بالفعل، فيمكن إنشاؤهما بالأوامر التالية: .P .in +4n .EX mknod \-m 666 /dev/random c 1 8 mknod \-m 666 /dev/urandom c 1 9 chown root:root /dev/random /dev/urandom .EE .in .P عندما يبدأ نظام لينكس دون الكثير من تفاعل المشغل، قد يكون مجمع الاعتلاج في حالة يمكن التنبؤ بها إلى حد كبير. يقلل هذا من الكمية الفعلية للضجيج في مجمع الاعتلاج عن التقدير. ومن أجل مواجهة هذا التأثير، يساعد حمل معلومات مجمع الاعتلاج عبر عمليات الإغلاق وبدء التشغيل. للقيام بذلك، أضف السطور إلى نص برمجي مناسب يُشغل أثناء تسلسل بدء تشغيل نظام لينكس: .P .in +4n .EX echo "جاري تهيئة مولد الأرقام العشوائية..." random_seed=/var/run/random\-seed # حمل بذرة عشوائية من بدء تشغيل لآخر # حمل ثم احفظ مجمع الاعتلاج بالكامل if [ \-f $random_seed ]; then cat $random_seed >/dev/urandom else touch $random_seed fi chmod 600 $random_seed poolfile=/proc/sys/kernel/random/poolsize [ \-r $poolfile ] && bits=$(cat $poolfile) || bits=4096 bytes=$(expr $bits / 8) dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .EE .in .P أيضاً، أضف السطور التالية في نص برمجي مناسب يُشغل أثناء إغلاق نظام لينكس: .P .in +4n .EX # حمل بذرة عشوائية من الإغلاق إلى بدء التشغيل # احفظ مجمع الاعتلاج بالكامل echo "جاري حفظ البذرة العشوائية..." random_seed=/var/run/random\-seed touch $random_seed chmod 600 $random_seed poolfile=/proc/sys/kernel/random/poolsize [ \-r $poolfile ] && bits=$(cat $poolfile) || bits=4096 bytes=$(expr $bits / 8) dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .EE .in .P .\" نفترض في الأمثلة أعلاه وجود لينكس 2.6.0 أو أحدث، حيث يعيد \fI/proc/sys/kernel/random/poolsize\fP حجم مجمع الاعتلاج بالبتات (انظر أدناه). .SS "واجهات /proc" توفر الملفات في الدليل \fI/proc/sys/kernel/random\fP (الموجودة منذ لينكس 2.3.16) معلومات إضافية حول جهاز \fI/dev/random\fP: .TP \fIentropy_avail\fP يعطي هذا الملف المخصص للقراءة فقط الاعتلاج المتاح، بالبتات. سيكون هذا رقماً في النطاق من 0 إلى 4096. .TP \fIpoolsize\fP يعطي هذا الملف حجم مجمع الاعتلاج. تختلف دلالات هذا الملف عبر إصدارات النواة: .RS .TP لينكس 2.4: يعطي هذا الملف حجم مجمع الاعتلاج بـ \fIالبايتات\fP. عادةً، سيتضمن هذا الملف القيمة 512، لكنه قابل للكتابة، ويمكن تغييره إلى أي قيمة تتوفر لها خوارزمية. الخيارات هي 32، 64، 128، 256، 512، 1024، أو 2048. .TP لينكس 2.6 وما يليه: هذا الملف للقراءة فقط، ويعطي حجم مجمع الاعتلاج بـ \fIالبتات\fP. ويحتوي على القيمة 4096. .RE .TP \fIread_wakeup_threshold\fP يحتوي هذا الملف على عدد بتات الاعتلاج المطلوبة لإيقاظ العمليات التي تنام بانتظار الاعتلاج من \fI/dev/random\fP. المبدئي هو 64. .TP \fIwrite_wakeup_threshold\fP يحتوي هذا الملف على عدد بتات الاعتلاج التي تحتها نوقظ العمليات التي تجري \fBselect\fP(2) أو \fBpoll\fP(2) للوصول بالكتابة إلى \fI/dev/random\fP. يمكن تغيير هذه القيم عن طريق الكتابة في الملفات. .TP \fIuuid\fP .TQ \fIboot_id\fP .\" تحتوي هذه الملفات المخصصة للقراءة فقط على سلاسل عشوائية مثل 6fd5a44b\-35f4\-4ad4\-a9b9\-6b9be13e1fe9. يُنشأ الأول من جديد لكل قراءة، بينما أُنشئ الأخير مرة واحدة. .SS "واجهة ioctl(2)" طلبات \fBioctl\fP(2) التالية معرفة على واصفات الملفات المتصلة بـ \fI/dev/random\fP أو \fI/dev/urandom\fP. ستتفاعل جميع الطلبات المنفذة مع مجمع اعتلاج المدخلات مما يؤثر على كل من \fI/dev/random\fP و \fI/dev/urandom\fP. مطلوب قدرة \fBCAP_SYS_ADMIN\fP لجميع الطلبات باستثناء \fBRNDGETENTCNT\fP. .TP \fBRNDGETENTCNT\fP استرجع تعداد الاعتلاج لمجمع المدخلات، ستكون المحتويات هي نفسها ملف \fIentropy_avail\fP تحت proc. ستُخزن النتيجة في العدد الصحيح (int) الذي يشير إليه المعطى. .TP \fBRNDADDTOENTCNT\fP زد أو أنقص تعداد اعتلاج مجمع المدخلات بالقيمة التي يشير إليها المعطى. .TP \fBRNDGETPOOL\fP أُزيل في لينكس 2.6.9. .TP \fBRNDADDENTROPY\fP أضف بعض الاعتلاج الإضافي لمجمع المدخلات، مع زيادة تعداد الاعتلاج. يختلف هذا عن الكتابة إلى \fI/dev/random\fP أو \fI/dev/urandom\fP، والتي تضيف فقط بعض البيانات ولكنها لا تزيد تعداد الاعتلاج. تُستخدم البنية التالية: .IP .in +4n .EX struct rand_pool_info { int entropy_count; int buf_size; __u32 buf[0]; }; .EE .in .IP هنا \fIentropy_count\fP هي القيمة المضافة إلى (أو المنقوصة من) تعداد الاعتلاج، و \fIbuf\fP هو المخزن المؤقت بحجم \fIbuf_size\fP الذي يُضاف إلى مجمع الاعتلاج. .TP \fBRNDZAPENTCNT\fP .TQ \fBRNDCLEARPOOL\fP صفر تعداد اعتلاج جميع المجمعات وأضف بعض بيانات النظام (مثل ساعة الحائط) إلى المجمعات. .SH الملفات \fI/dev/random\fP .br \fI/dev/urandom\fP .SH ملاحظات للحصول على نظرة عامة ومقارنة للواجهات المختلفة التي يمكن استخدامها للحصول على العشوائية، راجع \fBrandom\fP(7). .SH العلل .\" .SH AUTHOR .\" The kernel's random number generator was written by .\" Theodore Ts'o (tytso@athena.mit.edu). أثناء وقت الإقلاع المبكر، قد تعيد القراءات من \fI/dev/urandom\fP بيانات قبل تهيئة مجمع الاعتلاج. .SH "انظر أيضًا" \fBmknod\fP(1), \fBgetrandom\fP(2), \fBrandom\fP(7) .P RFC\ 1750, "Randomness Recommendations for Security" .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .