TFTPD(8)

الاسم
tftpd - بروتوكول نقل الملفات البسيط

موجز
in.tftpd [خيارات...] دليل...

الوصف
tftpd هو خادم لبروتوكول نقل الملفات البسيط. يُستخدم بروتوكول TFTP على نطاق واسع لدعم الإقلاع عن بُعد للأجهزة عديمة الأقراص. يُشغّل الخادم عادةً بواسطة inetd، لكن يمكن تشغيله أيضًا بشكل مستقل.

الخيارات

--ipv4, -4
    الاتصال باستخدام IPv4 فقط، حتى لو كان دعم IPv6 مُضمّنًا.

--ipv6, -6
    الاتصال باستخدام IPv6 فقط، إذا كان مُضمّنًا.

-l، --listen
    تشغيل الخادم في وضع الاستماع المستقل، بدلاً من التشغيل من inetd. في وضع الاستماع، يُتجاهل الخيار --timeout، ويمكن استخدام الخيار --address لتحديد عنوان محلي أو منفذ معين للاستماع إليه.

--foreground, -L
    مشابه لـ --listen لكن دون الانفصال عن عملية المقدمة. يستلزم --listen.

--address [address][:port], -a [address][:port]
    تحديد عنوان ومنفذ معينين للاستماع إليهما عند الاستدعاء مع الخيار --listen أو --foreground. المبدئي هو الاستماع إلى منفذ tftp المحدد في /etc/services على جميع العناوين المحلية.

    يرجى الملاحظة: يجب وضع عناوين IPv6 الرقمية بين قوسين مربعين لتجنب الغموض مع معلومات المنفذ الاختيارية.

--create, -c
    السماح بإنشاء ملفات جديدة. مبدئيًا، يسمح tftpd فقط برفع الملفات الموجودة بالفعل. تُنشأ الملفات بأذونات مبدئية تسمح لأي شخص بقراءتها أو كتابتها، ما لم يُحدد الخياران --permissive أو --umask.

--secure, -s
    تغيير الدليل الجذر عند بدء التشغيل. هذا يعني أن المضيف البعيد لا يحتاج إلى تمرير الدليل كجزء من النقل، وقد يضيف أمانًا. عند تحديد --secure، يجب تحديد دليل واحد بالضبط في سطر الأوامر. يُوصى باستخدام هذا الخيار للأمان وكذلك للتوافق مع بعض ذاكرة الإقلاع ROM التي لا يمكن جعلها تتضمن اسم دليل في طلبها بسهولة.

--user username, -u username
    تحديد اسم المستخدم الذي سيعمل به tftpd؛ المبدئي هو "nobody". سيتم تعيين معرف المستخدم، ومعرف المجموعة، و(إذا أمكن على المنصة) معرفات المجموعات الإضافية إلى تلك المحددة في قاعدة بيانات أذونات النظام لاسم المستخدم هذا.

--umask umask, -U umask
    تعيين umask للملفات المنشأة حديثًا إلى القيمة المحددة. المبدئي هو صفر (يمكن لأي شخص القراءة أو الكتابة) إذا لم يُحدد الخيار --permissive، أو موروث من العملية المستدعية إذا حُدد --permissive.

--permissive, -p
    عدم إجراء فحوصات أذونات إضافية فوق ضوابط الوصول العادية التي يوفرها النظام للمستخدم المحدد عبر الخيار --user.

--pidfile pidfile, -P pidfile
    عند التشغيل في وضع مستقل، كتابة معرف العملية للخادم المستمع في pidfile. عند الإنهاء العادي (SIGTERM أو SIGINT) يُزال ملف pid آليًا.

--timeout timeout, -t timeout
    عند التشغيل من inetd، يحدد هذا المدة، بالثواني، للانتظار لاتصال ثانٍ قبل إنهاء الخادم. سيعيد inetd بعد ذلك إحياء الخادم عند ورود طلب آخر. المبدئي هو 900 (15 دقيقة).

--retransmit timeout, -T timeout
    تحديد المهلة المبدئية، بالميكروثانية، قبل إعادة إرسال الحزمة الأولى. يمكن تعديل هذا من قبل العميل إذا تم التفاوض على الخيار timeout أو utimeout. المبدئي هو 1000000 (ثانية واحدة).

--map-file remap-file, -m remap-file
    تحديد استخدام إعادة تعيين اسم الملف. remap-file هو ملف يحتوي على قواعد إعادة التعيين. انظر القسم الخاص بإعادة تعيين اسم الملف أدناه. قد لا يكون هذا الخيار مُضمّنًا، راجع مخرجات in.tftpd -V للتحقق من توفره أم لا.

--map-steps الخطوات
    يحدد عدد قواعد إعادة التعيين التي يمكن تنفيذها قبل فشل تعيين اسم الملف. المبدئي هو 4096.

--verbose, -v
    زيادة مستوى تفصيل التسجيل لـ tftpd. يمكن تحديد هذه العلامة عدة مرات لمزيد من التفصيل.

--verbosity value
    اضبط قيمة الإسهاب إلى قيمة.

--refuse tftp-option, -r tftp-option
    أشر إلى أن خيار TFTP RFC 2347 معين لا ينبغي قبوله أبدًا.

--blocksize max-block-size, -B max-block-size
    يحدد الحد الأقصى المسموح به لحجم الكتلة. النطاق المسموح به لهذه المعلمة هو من 512 إلى 65464. تطلب بعض العملاء المضمنة أحجام كتل كبيرة ولكنها لا تعالج الحزم المجزأة بشكل صحيح؛ بالنسبة لهؤلاء العملاء، يُوصى بضبط هذه القيمة على أصغر MTU في شبكتك ناقص 32 بايت (20 بايت لـ IP، و8 لـ UDP، و4 لـ TFTP؛ أقل إذا كنت تستخدم خيارات IP على شبكتك.) على سبيل المثال، على إيثرنت قياسي (MTU 1500) تكون القيمة 1468 معقولة.

--port-range port:port, -R port:port
    أجبر رقم منفذ الخادم (معرف المعاملة) على أن يكون في النطاق المحدد لأرقام المنافذ.

--version, -V
    اطبع رقم الإصدار والتكوين إلى المخرجات القياسية، ثم اخرج بأمان.

RFC 2347 OPTION NEGOTIATION
يدعم هذا الإصدار من tftpd تفاوض الخيارات وفقًا لـ RFC 2347. الخيارات المنفذة حاليًا هي:

blksize (RFC 2348)
    اضبط حجم كتلة النقل على أي شيء أقل من أو يساوي الخيار المحدد. يمكن لهذا الإصدار من tftpd دعم أي حجم كتلة يصل إلى الحد الأقصى النظري البالغ 65464 بايت.

blksize2 (nonstandard)
    اضبط حجم كتلة النقل على أي شيء أقل من أو يساوي الخيار المحدد، ولكن قيد الاستجابات الممكنة على قوى العدد 2. الحد الأقصى هو 32768 بايت (أكبر قوة للعدد 2 أقل من أو تساوي 65464.)

tsize (RFC 2349)
    أبلغ عن حجم الملف الذي سيتم نقله. يدعم هذا الإصدار من tftpd خيار tsize فقط لنقل الوضع الثنائي (octet).

timeout (RFC 2349)
    اضبط الوقت قبل إعادة إرسال الخادم لحزمة، بالثواني.

utimeout (nonstandard)
    اضبط الوقت قبل إعادة إرسال الخادم لحزمة، بالميكروثانية.

rollover (nonstandard)
    اضبط رقم الكتلة للاستئناف منه بعد تجاوز رقم الكتلة. القيمة المبدئية والموصى بها هي صفر.

يمكن استخدام خيار --refuse لتعطيل خيارات محددة؛ قد يكون هذا ضروريًا للالتفاف حول الأخطاء في تطبيقات عميل TFTP محددة. على سبيل المثال، وُجد أن بعض عملاء TFTP يطلبون خيار blksize، ولكنهم يتعطلون بخطأ إذا حصلوا بالفعل على قبول الخيار من الخادم.

إعادة تعيين اسم الملف
يحدد الخيار --map-file ملفًا يحتوي على قواعد إعادة تعيين اسم الملف. كل سطر غير تعليق (تبدأ التعليقات بعلامات التجزئة، #) يحتوي إما على تسمية، مسبوقة بنقطتين:

    :التسمية

أو عملية، محددة أدناه، متبوعة بـ تعبير نمطي (تعبير نمطي موسع على غرار egrep(1)،) واختياريًا نمط استبدال. يتم تنفيذ العملية المشار إليها بواسطة العملية إذا تطابق التعبير النمطي مع كل أو جزء من اسم الملف. تتم معالجة القواعد من الأعلى إلى الأسفل، وبشكل مبدئي، تتم معالجة جميع القواعد حتى في حالة وجود تطابق.

أحيانًا يكون من المفيد وجود قاعدة تطابق دائمًا، في هذه الحالة، التعبير النمطي:

    ^

(رمز الإقحام المفرد) يمكن استخدامه.

يمكن أن تكون العملية أي مجموعة صالحة من الأحرف التالية:

r   استبدل السلسلة الفرعية المتطابقة مع التعبير النمطي بـ نمط الاستبدال. قد يحتوي نمط الاستبدال على تسلسلات هروب؛ انظر أدناه.
    لا يمكن استخدام r مع ~ أو a أو j.

g   كرر الاستبدال حتى لا يتطابق بعد ذلك، ببحث السلسلة كاملة، بما في ذلك البدائل، من البداية كل مرة.
    يُستخدم g دائمًا مع r.

gg  كرر الاستبدال حتى لا يتطابق بعد ذلك، ولكن فقط على الجزء من السلسلة الذي لم يُطابق بعد، على غرار كيفية عمل الأمر s مع الخيار g في sed(1).
    يُستخدم 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
    السلاسل التي تطابقها كل من التعبيرات الفرعية التسعة الأولى المحصورة بين أقواس، \( ... \)، من نمط التعبير النمطي.

\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 معلقة.

الأمن
لا يتطلب استخدام خدمات TFTP حسابًا أو كلمة مرور على نظام الخادم. نظرًا لغياب معلومات الاستيثاق، سيسمح tftpd فقط بالوصول إلى الملفات القابلة للقراءة عمومًا (o+r)، ما لم يتم تحديد الخيار --permissive. لا يمكن كتابة الملفات إلا إذا كانت موجودة مسبقًا وقابلة للكتابة عمومًا، ما لم يتم تحديد الخيار --create. لاحظ أن هذا يوسع مفهوم “عمومي” ليشمل جميع المستخدمين على جميع المضيفين التي يمكن الوصول إليها عبر الشبكة؛ قد لا يكون هذا مناسبًا على جميع الأنظمة، ويجب النظر في آثاره قبل تمكين خدمة TFTP. عادةً، يجب استخدام نوع من حلول جدار الحماية أو تصفية الحزم. إذا تم تجميعه بشكل مناسب (انظر مخرجات in.tftpd --version)، فسيستعلم tftpd قاعدة بيانات hosts_access(5) للحصول على معلومات التحكم في الوصول. قد يكون هذا بطيئًا؛ قد ترغب المواقع التي تتطلب أقصى أداء في التجميع بدون هذا الخيار والاعتماد على جدران الحماية أو مرشحات الحزم القائمة على النواة بدلاً من ذلك.

يجب ضبط الخادم ليعمل كمستخدم بأقل صلاحية ممكنة؛ يرجى الاطلاع على العلم --user. من المحتمل أن تكون فكرة جيدة إعداد حساب مستخدم محدد لـ tftpd، بدلاً من تركه يعمل كـ "nobody"، للحماية من تسرب الصلاحيات بين التطبيقات.

يمكن، ويجب، تقييد الوصول إلى الملفات عن طريق استدعاء tftpd مع قائمة من الدلائل من خلال تضمين أسماء المسارات كوسائط لبرنامج الخادم في سطر الأوامر. في هذه الحالة، يُقيّد الوصول إلى الملفات التي تسبق أسماؤها أحد الدلائل المعطاة. إذا أمكن، يُوصى باستخدام العلم --secure لإعداد بيئة chroot() ليعمل الخادم فيها بمجرد إنشاء الاتصال.

أخيرًا، يمكن استخدام دعم إعادة تعيين اسم الملف (العلم --map-file) لتوفير قدر محدود من التحكم الإضافي في الوصول.

متوافق مع
RFC 1123، متطلبات مضيفي الإنترنت - التطبيق والدعم.
RFC 1350، بروتوكول TFTP (المراجعة 2).
RFC 2347، امتداد خيار TFTP.
RFC 2348، خيار حجم الكتلة لـ TFTP.
RFC 2349، خيارات فترة المهلة وحجم النقل لـ TFTP.

المؤلف
هذا الإصدار من tftpd يُصان بواسطة H. Peter Anvin <hpa@zytor.com>. تم اشتقاقه من قاعدة مصدر OpenBSD، لكنه انحرف عنها بشكل كبير، مع تصحيحات إضافية من Markus Gutschke و Gero Kulhman.

انظر أيضًا
tftp(1), egrep(1), umask(2), hosts_access(5), regex(7), inetd(8).

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.