- trixie-backports 4.31.0-1~bpo13+1
- testing 4.32.4-1
- unstable 4.32.4-1
| TFTPD(8) | دليل مدير النظام | TFTPD(8) |
الاسم¶
tftpd - بروتوكول نقل الملفات البسيط
موجز¶
in.tftpd [خيارات...] دليل...
الوصف¶
tftpd خادم لبروتوكول نقل الملفات البسيط. يُستخدم بروتوكول TFTP على نطاق واسع لدعم الإقلاع عن بُعد للأجهزة عديمة القرص. يمكن تشغيل الخادم كخفيّة مستقلة أو يمكن بدؤه بواسطة أو
ينبغي أن يحدد directory... مجلداً واحداً أو أكثر يمكن لـ tftpd الوصول إليه. لاحظ أنه إذا حُدد خيار --path-prefix (انظر أدناه)، فلا ينبغي أن تتضمن أسماء المجلدات المدرجة prefix نفسه.
يجب أن تتبع أسماء المجلدات القواعد الموصوفة تحت التحقق من المسار، وإلا ستُرفض؛ وبشكل خاص يجب أن تبدأ بـ “/” وألا تحتوي على مكونات “.” أو “..”.
لا يُسمح بـ “/” كـ directory إلا بالاقتران مع خيار --path-prefix.
الخيارات¶
بعض الخيارات قابلة للضبط وقت الترجمة وقد لا تتوفر على أي نظام محدد. شغّل tftpd مع خيار -V لمعرفة الخيارات المحددة المتوفرة على نظامك.
- -4، --ipv4
- الاتصال باستخدام IPv4 فقط، حتى لو كان دعم IPv6 مُضمّنًا.
- -6، --ipv6
- الاتصال باستخدام IPv6 فقط، إذا كان مُضمّنًا.
- -l، --listen
- شغّل الخادم في الوضع المستقل (الاستماع)، بدلاً من التشغيل من خفيّة خدمة. في الوضع المستقل، يمكن استخدام خيار --address لتحديد عنوان محلي أو منفذ محدد للاستماع إليه، ويمكن استخدام --port لتحديد منفذ استماع مبدئي.
- -L, --foreground
- مشابه لـ --listen لكن دون الانفصال عن عملية المقدمة. يستلزم --listen.
- -a, --address [address][:port]
- حدد address و port محددين للاستماع إليهما عند التشغيل في الوضع المستقل (مع خياري --listen أو --foreground.) يجب إحاطة عناوين IPv6 الرقمية بأقواس مربعة لتجنب الالتباس مع معلومات port الاختيارية.
- إذا لم يُحدد address، فالمبدئي هو الاستماع إلى جميع العناوين المحلية.
- يمكن أن يكون port إما رقماً عشرياً بين 1 و 65535، أو اسم خدمة محدداً في قاعدة بيانات خيار --service.
- يمكن تحديد خيار --address عدة مرات، وإذا كان address اسم مضيف يُحل إلى عناوين متعددة، فسيربط tftpd بها جميعاً.
- -S, --service, --port port
- حدد اسم المنفذ/الخدمة لاستخدامه في الوضع المستقل ما لم يُحدد port صراحةً في خيار --address. بغض النظر عن الاسم المستخدم للخيار، يمكن أن يكون port إما رقماً عشرياً أو اسم خدمة محدداً في قاعدة بيانات
- -c, --create
- السماح بإنشاء ملفات جديدة. مبدئيًا، يسمح tftpd فقط برفع الملفات الموجودة بالفعل. تُنشأ الملفات بأذونات مبدئية تسمح لأي شخص بقراءتها أو كتابتها، ما لم يُحدد الخياران --permissive أو --umask.
- --ro, --read-only
- عطّل جميع وظائف الرفع، بغض النظر عن أذونات نظام الملفات. ستُرفض جميع طلبات الكتابة فوراً.
- --max-upload, --max-size size
- حدّ الرفع إلى size بايت كحد أقصى. يُرفض فوراً أي طلب كتابة يتضمن قيمة tsize وفق RFC 2349 أكبر من size. تُنهى عمليات الرفع بدون tsize، أو التي تتجاوز بياناتها tsize المحدد، مع خطأ. قيمة size صفر مكافئة لـ --read-only.
- -s, --secure, --chroot
- غيّر المجلد الجذر عند بدء التشغيل باستخدام هذا يعني أن المضيف البعيد لا يحتاج إلى تمرير المجلد كجزء من النقل، وقد يضيف أماناً. عند تحديد --secure، ينبغي تحديد directory واحد بالضبط على سطر الأوامر.
- لاحظ أنه عند استخدام --secure، لا يُنفذ أي من فحوصات اسم المسار الموصوفة تحت التحقق من المسار أدناه ما لم يُحدد --validate أيضاً؛ سيتعين تنفيذ أي فحوصات مطلوبة باستخدام قواعد إعادة تعيين صريحة.
- يتطلب استخدام --secure بدء tftpd كمستخدم الجذر، والتشغيل كمستخدم الجذر لفترة طويلة. فكّر بعناية شديدة فيما إذا كان هذا مرغوباً حقاً مقابل تشغيل الخفيّة كمستخدم غير متميز واستخدام خيارات --map-file و --normalize و/أو --path-prefix بدلاً من ذلك، أو خيار --jail إذا كان مدعوماً على نظامك.
- -j, --jail
- حلّل أسماء الملفات تحت مجلد جذر افتراضي. هذا بديل لـ --secure قد يسمح بعدم بدء الخفيّة كمستخدم الجذر، لكنه يتطلب دعم استدعاء النظام على النظام قيد التشغيل؛ اعتباراً من سبتمبر 2026، هذا مدعوم فقط على أنظمة Linux الأحدث. إذا لم يدعم نظامك --jail فسيخرج برسالة خطأ. عند تحديد --jail، ينبغي تحديد directory واحد بالضبط على سطر الأوامر.
- لاحظ أنه عند استخدام --jail، لا يُنفذ أي من فحوصات اسم المسار الموصوفة تحت التحقق من المسار أدناه ما لم يُحدد --validate أيضاً؛ سيتعين تنفيذ أي فحوصات مطلوبة باستخدام قواعد إعادة تعيين صريحة.
- --validate
- نفّذ التحقق من المسار حتى إذا استُخدم --secure أو --jail. عادةً لا يُنفذ التحقق من المسار إلا عندما لا يُحدد أي من هذين الخيارين. انظر التحقق من المسار أدناه.
- --path-prefix prefix
- يضيف prefix في بداية مسار نظام الملفات المحلي بعد حدوث إعادة تعيين اسم الملف والتحقق من المسار (انظر أدناه). يتحقق tftpd من أن prefix يشير إلى مجلد موجود، لكنه لا ينفذ أي فحوصات صلاحية أو أذونات أخرى.
- إذا استُخدم خيار --secure أو --jail، يُضاف prefix بدلاً من ذلك في بداية مسار الجذر؛ بعبارة أخرى:
- --path-prefix /var/lib --secure /tftpboot
- مكافئ تماماً لـ:
- --secure /var/lib/tftpboot
- -u, --user username
- تحديد اسم المستخدم الذي سيعمل به tftpd؛ المبدئي هو "nobody". سيتم تعيين معرف المستخدم، ومعرف المجموعة، و(إذا أمكن على المنصة) معرفات المجموعات الإضافية إلى تلك المحددة في قاعدة بيانات أذونات النظام لاسم المستخدم هذا.
- -U, --umask umask
- تعيين umask للملفات المنشأة حديثًا إلى القيمة المحددة. المبدئي هو صفر (يمكن لأي شخص القراءة أو الكتابة) إذا لم يُحدد الخيار --permissive، أو موروث من العملية المستدعية إذا حُدد --permissive.
- انظر
- -p, --permissive
- عدم إجراء فحوصات أذونات إضافية فوق ضوابط الوصول العادية التي يوفرها النظام للمستخدم المحدد عبر الخيار --user.
- -P, --pidfile pidfile
- عند التشغيل في الوضع المستقل، اكتب معرّف العملية للخادم المستمع في pidfile. عند الإنهاء الطبيعي (SIGTERM أو SIGINT أو انتهاء مهلة عدم النشاط) يُزال ملف pid آلياً.
- -t, --timeout timeout
- المدة، بالثواني، للانتظار قبل إنهاء الخادم. عادةً عند التشغيل من خفيّة خدمة، ستُعيد خفيّة الخدمة إنشاء الخادم إذا وصل اتصال جديد.
- المبدئي هو 0 (غير محدود) عند التشغيل المستقل، وإلا 900 (15 دقيقة.)
- -T, --retransmit timeout
- حدد المهلة المبدئية للحزمة، بالميكروثانية، قبل إعادة إرسال الحزمة. يمكن للعميل تعديل هذا إذا تفاوض على خيار timeout أو utimeout. القيمة المبدئية هي 1000000 (ثانية واحدة.)
- لإعادات الإرسال اللاحقة لنفس الحزمة، يطبق tftpd تراجعًا أسيًا كما يقتضي RFC 1123.
- -m، --map-file remap-file
- حدد استخدام إعادة تعيين أسماء الملفات. remap-file هو ملف يحتوي على قواعد إعادة التعيين، إذا كان مُضمَّنًا عند الترجمة. انظر القسم الخاص بإعادة تعيين أسماء الملفات أدناه.
- --map-steps الخطوات
- يحدد عدد قواعد إعادة التعيين التي يمكن تنفيذها قبل فشل تعيين اسم الملف. المبدئي هو 4096.
- --map-test inputfile
- اقرأ السطور في الملف inputfile وعالج كل منها كما لو كان اسم ملف مستلمًا من عميل. ثم يُكتب كل اسم ملف معاد كتابته صالح إلى المخرج القياسي، وينتهي tftpd.
- يستلزم --stderr --foreground.
- استخدم خياري --ipv4 و --ipv6 لمحاكاة عميل IPv4 أو IPv6. إذا أُدرج --create في سطر الأوامر، حاكِ طلب PUT (WRQ)، وإلا حاكِ طلب GET (RRQ).
- إذا استُخدم خيار --normalize، فسيُطبَّع المخرج أيضًا.
- --normalize[=mode]
- تطبيع اسم المسار. إذا استُخدمت إعادة التعيين، يُطبَّق التطبيع بعد إعادة التعيين. يمكن أن يكون mode هو none أو root أو path.
- إذا كان mode هو none، فلا يُجرى أي تطبيع. هذا هو المبدئي.
- إذا كان mode هو root، تُضاف شرطة مائلة بادئة إذا لم تكن موجودة.
- إذا كان mode هو path، تُضاف شرطة مائلة بادئة إذا لم تكن موجودة، وتُزال الشرطات المائلة المكررة ومكونات اسم المسار “.”، وتُزال مكونات اسم المسار “..” مع مكون اسم المسار السابق، إن وُجد. هذا هو المبدئي إذا لم يُحدَّد mode. لاحظ أن محتويات نظام الملفات الفعلية لا تُفحص؛ وبالتالي، لا تُؤخذ الروابط الرمزية أو المجلدات المفقودة في الحسبان.
- يمكن استخدام هذا الخيار مع --path-prefix للحصول على تأثير مشابه لـ --secure أو --jail دون الحاجة إلى ملف إعادة تعيين كامل. انظر "معالجة أسماء الملفات" أدناه.
- -v، --verbose
- زيادة مستوى تفصيل التسجيل لـ tftpd. يمكن تحديد هذه العلامة عدة مرات لمزيد من التفصيل.
- --verbosity value
- تعيين قيمة الإسهاب إلى value. هذا مكافئ لتحديد الخيار -v عدد value من المرات.
- -r، --refuse، --reject tftp-option
- الإشارة إلى أن خيار TFTP معينًا وفق RFC 2347 لا ينبغي قبوله أبدًا، حتى لو طلبه العميل. يمكن استخدام هذا للالتفاف حول العملاء المعطوبين.
- --refuse-all، --reject-all
- تعطيل جميع خيارات RFC 2347. الطلبات التي تحتوي على خيارات تنتقل مباشرة إلى مرحلة بيانات TFTP العادية دون إقرار بالخيار.
- -B، --blocksize max-block-size
- يحدد الحد الأقصى المسموح به لحجم الكتلة. النطاق المسموح به لهذا المعامل هو من 512 إلى 65464، أو يمكن تحديده كـ “mtu”، أو “mtu-slack”. عند تحديد mtu، سيحاول tftpd الاستعلام عن وحدة الإرسال القصوى (MTU) من النواة وتحديد حجم الكتلة الأقصى وفقًا لذلك. إذا حُدِّد slack، ستُعدَّل قيمة MTU للأسفل بمقدار slack بايت.
- بعض العملاء المدمجين يطلبون أحجام كتل كبيرة ومع ذلك لا يتعاملون مع الحزم المجزأة بشكل صحيح؛ لهذا السبب يُوصى بـ --blocksize mtu إذا كان لديك هذا النوع من العملاء على شبكتك.
- -W، --windowsize max-window-size
- يحدد الحد الأقصى المقبول لقيمة خيار windowsize وفق RFC 7440. النطاق المسموح به هو من 1 إلى 32768. طلب العميل الذي يتجاوز هذا الحد يُخفَّض إلى هذه القيمة. إذا كانت النافذة الناتجة كتلة واحدة، فلا يُعاد خيار windowsize ويستخدم النقل عملية التزامن العادية.
- المبدئي وقت الترجمة يُعيَّن بواسطة متغير الإعداد TFTPD_MAX_WINDOWSIZE ويكون مبدئيًا 256.
- --window-bytes max-window-bytes
- يحد النافذة المتفاوض عليها بحيث لا يتجاوز حجم الكتلة المتفاوض عليه مضروبًا في حجم النافذة max-window-bytes. القيمة صفر، وهي المبدئية، تعطل هذا الحد. الحد الذي يسمح بأقل من كتلتين يجعل الخادم يستخدم عملية التزامن العادية بدلاً من إعادة خيار windowsize.
- المبدئي وقت الترجمة يُعيَّن بواسطة متغير الإعداد TFTPD_MAX_WINDOWBYTES) ويكون مبدئيًا 4194304 (4 مبيبايت).
- -R، --port-range، --ports min-port:max-port
- إجبار رقم منفذ الخادم (معرّف المعاملة) على أن يكون ضمن نطاق أرقام المنافذ المحدد. يمكن استخدام هذا لتسهيل قواعد جدار الحماية أو تتبع الحزم.
- يجب أن تكون قيمتا min-port و max-port أرقامًا عشرية بين 1 و 65535.
- --syslog
- إرسال رسائل السجل إلى syslog. هذا هو الإعداد المبدئي.
- --stderr[=تنسيق]
- إرسال رسائل السجل إلى مخرج الخطأ القياسي بدلاً من syslog. العنصر الاختياري =format هو اختصار لـ “--stderr --logformat format”.
- --stdout[=تنسيق]
- إرسال رسائل السجل إلى المخرج القياسي بدلاً من syslog. العنصر الاختياري =format هو اختصار لـ “--stdout --logformat format”.
- --logfile ملف
- إرسال رسائل السجل إلى file بدلاً من syslog. يُفتح الملف لإضافة البيانات إليه، ويُنشأ بوضع 0644 إذا لم يكن موجودًا. إذا كان tftpd يعمل في الوضع المستقل (الاستماع)، فسوف يُغلق الملف ثم يُعاد فتحه عند تلقي إشارة SIGHUP، وذلك للسماح بتناوب ملفات السجل.
- --logformat تنسيق
- تعيين تنسيق إخراج السجل. تنسيقات السجل المحددة حاليًا هي:
- نظرًا لأن syslog يُنشئ علاماته الخاصة، فإن --logformat لا ينطبق على مخرجات syslog.
- --systemd
- استخدام تنشيط مقبس systemd. يُستخدم هذا الخيار فقط في ملف وحدة systemd. انظر
- هذا أيضًا يجعل عملية tftpd تعمل في المقدمة، كما لو حُدِّد الخيار --foreground، لكن على عكس الخيار --foreground فإنه لا يغير المبدئي للخيار --timeout.
- -V، --version
- طباعة رقم الإصدار والإعداد إلى المخرج القياسي، ثم الخروج بلطف. لا تبدأ أي عملية خفية ولا تُعد أي مقابس استماع.
RFC 2347 OPTION NEGOTIATION¶
يدعم هذا الإصدار من tftpd تفاوض الخيارات وفقًا لـ RFC 2347. الخيارات المنفذة حاليًا هي:
- blksize (RFC 2348)
- اضبط حجم كتلة النقل على أي شيء أقل من أو يساوي الخيار المحدد. يمكن لهذا الإصدار من tftpd دعم أي حجم كتلة يصل إلى الحد الأقصى النظري البالغ 65464 بايت.
- blksize2 (nonstandard)
- اضبط حجم كتلة النقل على أي شيء أقل من أو يساوي الخيار المحدد، ولكن قيد الاستجابات الممكنة على قوى العدد 2. الحد الأقصى هو 32768 بايت (أكبر قوة للعدد 2 أقل من أو تساوي 65464.)
- tsize (RFC 2349)
- الإبلاغ عن حجم الملف الذي على وشك نقله. يدعم هذا الإصدار من tftpd خيار tsize فقط لعمليات النقل بالوضع الثنائي (الثماني). لمعاملات الرفع (الكتابة)، يُقر به دون تغيير، وإذا حُدِّد --max-upload، يُستخدم لفرض حد الرفع.
- timeout (RFC 2349)
- اضبط الوقت قبل إعادة إرسال الخادم لحزمة، بالثواني.
- utimeout (nonstandard)
- اضبط الوقت قبل إعادة إرسال الخادم لحزمة، بالميكروثانية.
- windowsize (RFC 7440)
- تعيين عدد كتل البيانات المرسلة قبل طلب الإقرار. تُعيَّن القيمة القصوى بواسطة الخيارين --windowsize و --window-bytes. يمكن إعادة إرسال النافذة كاملة أو جزئيًا حسب حزم الإقرار المحددة المستلمة من العميل.
- rollover (nonstandard)
- تعيين رقم الكتلة للاستئناف عنده بعد تجاوز رقم الكتلة. القيمة المبدئية والموصى بها هي 0، لكن بعض العملاء يتوقعون 1 بدلاً من ذلك.
يقبل هذا الإصدار من tftpd فقط 0 و 1 كقيم صالحة للتجاوز.
- يقبل خيار cookie سلسلة محارف عشوائية يصل طولها إلى 255 بايت، ويعيدها إلى العميل كجزء من حزمة الرد (OACK). يمكن استخدام سلسلة الكوكي:
- 1.
- من قبل العميل، لتحديد أن حزمة الرد تطابق حزمة الطلب. يجعل TFTP القياسي هذا صعبًا، لأن خادم TFTP عادةً يعيد الرد الأولي باستخدام رقم منفذ مختلف، وفي بعض الظروف حتى عنوان IP مختلف.
- 2.
- من قبل الخادم، لاكتشاف الاستقبال المكرر (بسبب إعادة الإرسال) لحزم الطلب، مقابل جلسة إرسال جديدة.
يمكن استخدام خيار --refuse لتعطيل خيارات محددة؛ قد يكون هذا ضروريًا للالتفاف حول الأخطاء في تطبيقات عميل TFTP محددة. على سبيل المثال، وُجد أن بعض عملاء TFTP يطلبون خيار blksize، ولكنهم يتعطلون بخطأ إذا حصلوا بالفعل على قبول الخيار من الخادم.
يعطل الخيار --refuse-all جميع خيارات TFTP، وبالتالي لن يعيد الخادم أبدًا حزمة OACK.
معالجة أسماء الملفات¶
يمر اسم الملف المطلوب من الخادم بالخطوات التالية، بهذا الترتيب:
- 1.
- إذا استُخدم الخيار --map-file، إعادة تعيين اسم الملف. انظر "إعادة تعيين أسماء الملفات" أدناه.
- 2.
- إذا استُخدم الخيار --normalize، تطبيع اسم الملف. انظر الخيار --normalize أعلاه.
- 3.
- إذا لم يُستخدم الخياران --secure أو --jail، أو حُدِّد الخيار --validate، التحقق من المسار. انظر "التحقق من المسار" أدناه.
- 4.
- إذا استُخدم الخيار --path-prefix، تُضاف بادئة المسار.
إعادة تعيين اسم الملف¶
يحدد الخيار --map-file ملفًا يحتوي على قواعد إعادة تعيين اسم الملف. كل سطر غير تعليق (تبدأ التعليقات بعلامات التجزئة، #) يحتوي إما على تسمية، مسبوقة بنقطتين:
- :التسمية
أو عملية، محددة أدناه، متبوعة بتعبير نمطي ممتد regex (انظر واختياريًا نمط استبدال. تُنفَّذ العملية المشار إليها بواسطة operation إذا طابق regex كل اسم الملف أو جزءًا منه. تُعالَج القواعد من الأعلى إلى الأسفل، ومبدئيًا، تُعالَج جميع القواعد حتى إذا وُجد تطابق.
أحيانًا يكون من المفيد وجود قاعدة تطابق دائمًا، في هذه الحالة، التعبير النمطي:
- ^
(رمز الإقحام المفرد) يمكن استخدامه.
يمكن أن تكون العملية أي مجموعة صالحة من الأحرف التالية:
- r
- استبدل
السلسلة
الفرعية
المتطابقة
مع
التعبير
النمطي بـ
نمط
الاستبدال.
قد يحتوي
نمط
الاستبدال
على
تسلسلات
هروب؛ انظر
أدناه.
لا يمكن استخدام r مع ~ أو a أو j. - g
- كرر
الاستبدال
حتى لا
يتطابق بعد
ذلك، ببحث
السلسلة
كاملة، بما
في ذلك
البدائل،
من البداية
كل مرة.
يُستخدم g دائمًا مع r. - gg
- كرر
الاستبدال
حتى لا
يتطابق بعد
ذلك، ولكن
فقط على
الجزء من
السلسلة
الذي لم
يُطابق
بعد، على
غرار كيفية
عمل الأمر s
مع الخيار g
في
يُستخدم gg دائمًا مع r. - i
- طابق التعبير النمطي دون حساسية لحالة الأحرف. بشكل مبدئي، يكون حساسًا لحالة الأحرف.
- e
- إذا تطابقت
هذه
القاعدة،
أنهِ
معالجة
القواعد
بعد تنفيذ
القاعدة.
لا يمكن استخدام e مع a أو E أو j أو s. - E
- إذا تطابقت
هذه
القاعدة،
وتطابقت
النتيجة مع
اسم ملف
يمكن
نقله،
فأنهِ
معالجة
القاعدة
بعد تنفيذ
القاعدة.
إذا
استُخدم
هذا مع r،
فعندئذ إذا
لم يُسفر
الاستبدال
عن اسم ملف
صالح،
يُلغى
الاستبدال.
لا يمكن استخدام E مع a أو e أو j أو s. - s
- إذا تطابقت
هذه
القاعدة،
ابدأ
معالجة
القواعد من
جديد من أول
قاعدة بعد
تنفيذ هذه
القاعدة.
لا يمكن استخدام s مع a أو e أو E أو j. - a
- إذا تطابقت
هذه
القاعدة،
ارفض الطلب
وأرسل خطأ
رفض الوصول
إلى العميل.
لا يمكن استخدام a مع e أو E أو j أو r أو s. - j
- إذا تطابقت هذه القاعدة، فاقفز إلى التسمية المحددة بواسطة نمط الاستبدال.
- G
- تنطبق هذه القاعدة على طلبات GET (RRQ) فقط.
- P
- تنطبق هذه القاعدة على طلبات PUT (WRQ) فقط.
- 4
- تنطبق هذه القاعدة على جلسات IPv4 فقط.
- 6
- تنطبق هذه القاعدة على جلسات IPv6 فقط.
- ~
- اعكس معنى
هذه
القاعدة،
أي نفذ
العملية
فقط إذا كان
التعبير
النمطي
لا يتطابق.
لا يمكن استخدام ~ مع r.
يتم التعرف على تسلسلات الهروب التالية كجزء من نمط الاستبدال:
- \0
- السلسلة الكاملة التي تطابقها التعبير النمطي.
- \1 إلى \9
- السلاسل التي طابقتها كل من أول تسعة تعبيرات فرعية بين أقواس، (...)، من نمط regex.
- \i
- عنوان IP للمضيف الطالب، بترميز النقاط الرباعية لـ IPv4 (مثال 192.0.2.169) أو صيغة النقطتين التقليدية لـ IPv6 (مثال 2001:db8::1).
- \x
- عنوان IP للمضيف الطالب، بترميز سداسي عشري موسع (مثال C00002A9 لـ IPv4، أو 20010DB8000000000000000000000001 لـ IPv6).
- \\
- شرطة مائلة عكسية حرفية.
- \whitespace
- مسافة بيضاء حرفية.
- \#
- علامة مربعة حرفية.
- \U
- يحول جميع الأحرف التالية إلى أحرف كبيرة.
- \L
- يحول جميع الأحرف التالية إلى أحرف صغيرة.
- \E
- يلغي تأثير \U أو \L.
إذا تم تغيير ملف التعيين، فستحتاج إلى إرسال SIGHUP إلى أي عملية tftpd معلقة.
التحقق من المسار¶
إذا لم يُعطَ خيار --secure أو --jail على سطر الأوامر، أو أُعطي خيار --validate، فسيجري tftpd التحقق والتقنين التاليين لاسم المسار النهائي، قبل التحقق من أن المسار يقع داخل أحد المجلدات المحددة على سطر الأوامر (المقنَّنة بالمثل):
- 1.
- يجب أن يبدأ اسم المسار بـ “/”.
- 2.
- يجب ألا يحتوي المسار على مكونات “.” أو “..”.
- 3.
- يجب ألا يحتوي اسم المسار على محارف تحكم ASCII (0-31).
- 4.
- تُزال الشرطات المتتالية والنهائية.
- 5.
- على منصات Windows، تُحظر المحارف < > : " \ | ? * غير الصالحة في أسماء الملفات. يُسمح فقط بالشرطات الأمامية (“/”) كفاصل مسار. لا يمكن أن ينتهي مكون اسم المسار بحرف “.” أو مسافة، ويُفحص كل مكون اسم مسار ضد قائمة أسماء ملفات Windows المحجوزة المرمزة.
يُنفَّذ التحقق والتطبيع بعد إعادة تعيين اسم الملف، إذا كانت إعادة التعيين مستخدمة.
إذا حُدد خيار --path-prefix، فستُضاف بادئة المسار بعد إجراء التحقق من المسار.
عند استخدام --secure أو --jail، لا يجري tftpd نفسه أي تحقق من المسار.
الأمن¶
لا يتطلب استخدام خدمات TFTP حسابًا أو كلمة سر على نظام الخادم. بسبب نقص معلومات الاستيثاق، سيسمح tftpd بالوصول فقط إلى الملفات القابلة للقراءة العامة (o+r)، ما لم يُحدد خيار --permissive. لا يمكن كتابة الملفات إلا إذا كانت موجودة بالفعل وقابلة للكتابة العامة، ما لم يُحدد خيار --create. لاحظ أن هذا يوسع مفهوم “العام” ليشمل جميع المستخدمين على جميع المضيفين الذين يمكن الوصول إليهم عبر الشبكة؛ قد لا يكون هذا مناسبًا على جميع الأنظمة، وينبغي النظر في آثاره قبل تمكين خدمة TFTP.
إذا لم تكن هناك حاجة لأن يقبل الخادم طلبات الكتابة (الرفع)، فمن الجيد تحديد خيار سطر الأوامر --read-only لمنع أي ضبط عرضي لأذونات نظام الملفات من السماح بالرفع عن غير قصد.
يوصى بشدة باستخدام نوع من جدار حماية أو حل تصفية الحزم لتقييد الوصول إلى منفذ TFTP. يستخدم TFTP منفذ TFTP نفسه فقط للحزمة الأولية (الطلب)، لذا فإن تكلفة مثل هذا المرشح ضئيلة.
ينبغي ضبط الخادم ليعمل باسم المستخدم ذي أقل صلاحية ممكنة؛ راجع علامة --user. يُوصى بشدة بإنشاء حساب مستخدم مخصص لـ tftpd، بدلاً من تركه يعمل باسم "nobody"، للحماية من تسرب الصلاحيات بين التطبيقات.
يُقيَّد الوصول إلى الملفات بقائمة المجلدات التي تُمرَّر إلى tftpd على سطر الأوامر. بدلاً من ذلك، يمكن استخدام علامة --secure أو --jail لإعداد بيئة جذر افتراضية ليعمل فيها الخادم بمجرد إنشاء اتصال.
يمكن استخدام دعم ميزة تعيين أسماء الملفات (علم --map-file) لتوفير تحكم دقيق في الأذونات وكذلك التعامل مع أسماء المسارات غير القياسية المطلوبة من العملاء، مثل عملاء Windows الذين يتوقعون القدرة على استخدام \ كفواصل مسار.
تأكد من فحص تدفق "معالجة أسماء الملفات" للتأكد من أن أسماء المسارات التي تُعالَج فعلاً هي المقصودة.
متوافق مع¶
RFC 1123،
متطلبات
مضيفي
الإنترنت -
التطبيق
والدعم.
RFC 1350،
بروتوكول TFTP
(المراجعة 2).
RFC 2347، امتداد
خيار TFTP.
RFC 2348، خيار حجم
الكتلة لـ TFTP.
RFC 2349، خيارات
فترة
المهلة
وحجم النقل
لـ TFTP.
RFC 7440، خيار حجم
نافذة TFTP
المؤلف¶
هذا الإصدار من tftpd يُصان بواسطة H. Peter Anvin <hpa@zytor.com>. تم اشتقاقه من قاعدة مصدر OpenBSD، لكنه انحرف عنها بشكل كبير، مع تصحيحات إضافية من Markus Gutschke و Gero Kulhman.
العلل¶
بروتوكول TFTP غير فعال للغاية، حتى مع تمكين خيار windowsize. هذه الأوجه من عدم الكفاءة متأصلة في البروتوكول ويمكن التحايل عليها جزئياً، لكن لا يمكن إصلاحها أبداً. مبرره الوحيد هو أنه يمكن تنفيذ عميل TFTP مضمّن في ذاكرة ROM صغيرة للغاية.
أصبحت حزم TCP المضمّنة متاحة بسهولة الآن، وهي عموماً تشغل مساحة تخزين أقل من طبقة مشغلات العتاد. ينبغي على بائعي عتاد الشبكات المضمّن أن يفكروا بجدية في استخدام بروتوكول بسيط قائم على TCP مثل HTTP/1.0 بدلاً من ذلك.
“أولئك الذين لا يفهمون TCP محكوم عليهم بإعادة تنفيذه، بشكل رديء، على المستوى الخاطئ.”
انظر أيضًا¶
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 20 سبتمبر 2026 | tftp-hpa 7.3 |