ATFTPD(8) System Manager's Manual ATFTPD(8)

atftpd - کارساز پروتکل ساده انتقال پرونده (TFTP)

atftpd [گزینه‌ها] دایرکتوری

atftpd یک کارساز TFTP (بر اساس RFC1350) است. به‌طور پیش‌فرض در بیشتر سیستم‌ها توسط inetd راه‌اندازی می‌شود، اما می‌تواند به‌صورت یک دیمون مستقل نیز اجرا گردد. این کارساز چندنخی (multi-threaded) بوده و از تمامی گزینه‌های شرح‌داده‌شده در RFC2347 (گسترش گزینه‌ها)، RFC2348 (گزینه blksize)، RFC2349 (گزینه‌های tsize و timeout) و RFC2090 (گزینه چندپخشی یا multicast) پشتیبانی می‌کند. همچنین از mtftp آن‌طور که در مشخصات PXE تعریف شده است، پشتیبانی می‌نماید.

این برنامه هم از نحو معمول خط فرمان GNU با گزینه‌های طولانی که با دو خط تیره ('-') شروع می‌شوند، و هم از گزینه‌های کوتاه پشتیبانی می‌کند. شرح گزینه‌ها در ادامه آمده است:

تعداد ثانیه‌های عدم فعالیت پیش از خروج کارساز. این مقدار تنها زمانی معنا دارد که کارساز توسط inetd راه‌اندازی شده باشد. در حالت دیمون، کارساز هرگز خارج نمی‌شود. مقدار پیش‌فرض ۳۰۰ ثانیه است.
مدت زمانی (به ثانیه) که کارساز باید پیش از ارسال مجدد یک بسته منتظر پاسخ بماند. مقدار پیش‌فرض ۵ ثانیه است. این مقدار می‌تواند توسط کلاینت TFTP با استفاده از گزینه timeout بازنویسی شود.
حداکثر تعداد نخ‌های هم‌روند مجاز. مقدار پیش‌فرض ۱۰۰ است.
افزایش یا تنظیم سطح گزارش‌گیری. در صورت عدم تعیین آرگومان، مقدار فعلی یک واحد افزایش می‌یابد. مقدار پیش‌فرض LOG_NOTICE است؛ برای سطوح گزارش‌گیری به syslog(3) مراجعه کنید. مقادیر معتبر در بازه ۰ (LOG_EMERG) تا ۷ (LOG_DEBUG) قرار دارند.
هنگامی که سطح پرگویی (verbose) روی ۷ تنظیم شده باشد، اطلاعات اشکال‌زدایی را برای هر بسته ارسالی یا دریافتی از شبکه در خروجی چاپ می‌کند.
غیرفعال کردن timeout از RFC2349. این گزینه از تایید گزینه timeout درخواست‌شده توسط کلاینت از سوی کارساز جلوگیری می‌کند.
غیرفعال کردن tsize از RFC2349. این گزینه از تایید گزینه tsize درخواست‌شده توسط کلاینت از سوی کارساز جلوگیری می‌کند.
غیرفعال کردن blksize از RFC2348. این گزینه مانع از تایید درخواست blksize کلاینت توسط کارساز می‌شود.
غیرفعال کردن windowsize از RFC7440. این گزینه از تایید درخواست windowsize کلاینت توسط کارساز جلوگیری می‌کند.
غیرفعال کردن multicast از RFC2090. این گزینه مانع از تایید درخواست multicast کلاینت توسط کارساز می‌شود.
ثبت گزارش‌ها در یک فایل مشخص به‌جای استفاده انحصاری از syslog. کاربر nobody (یا هر کاربری که برای اجرای کارساز استفاده می‌شود) باید مجوزهای دسترسی به فایل مربوطه را داشته باشد. با فرض اینکه این فایل /var/log/atftpd.log باشد، کافی است دستورات touch /var/log/atftpd.log و سپس chown nobody.nogroup /var/log/atftpd.log را اجرا کنید. هنگامی که کارساز در حالت دیمون اجرا می‌شود، می‌توان از /dev/stdout یا /dev/stderr نیز استفاده نمود. تعیین یک خط تیره منفرد به‌عنوان نام فایل، گزارش‌ها را به خروجی استاندارد (stdout، توصیف‌کننده فایل ۱) ارسال می‌کند.
نوشتن شناسه فرایند (PID) کارساز در فایل مشخص‌شده. این گزینه می‌تواند در راه‌اندازی و توقف خودکار یک یا چند نمونه از کارساز مفید باشد.
اجرا به‌صورت دیمون. اگر atftpd توسط inetd راه‌اندازی شده است، از این گزینه استفاده نکنید.
هنگامی که گزینه --daemon تعیین شده باشد، این گزینه مانع از انشعاب (fork) کارساز به پس‌زمینه می‌شود. این ویژگی برای اهداف اشکال‌زدایی یا کاربردهای ویژه مفید است.
به‌طور پیش‌فرض، کارساز هویت خود را به کاربر nobody و گروه nogroup تغییر می‌دهد. با این گزینه می‌توانید کاربر و گروه دیگری را تعیین کنید.
روشی جایگزین برای تعیین گروه. اگر گروه هم با گزینه --user و هم با --group مشخص شود، مقدار آخرین گزینه اعمال خواهد شد.
تعیین پورتی که atftpd روی آن گوش فرا می‌دهد. هنگامی که گزینه --daemon مشخص شده باشد کاربرد دارد. مقدار پیش‌فرض، پورت استاندارد tftp است که توسط getservbyname(3) تعیین می‌شود.
تعیین آدرس IP که atftpd به آن متصل (bind) می‌شود. هنگامی که گزینه --daemon مشخص شده باشد مفید است. حالت پیش‌فرض، اتصال به تمام رابط‌های شبکه است. تنها یک آدرس را می‌توان تعیین کرد؛ کارساز فقط می‌تواند به یک رابط یا به تمامی رابط‌ها گوش فرا دهد.
تعیین مقدار TTL برای دیتاگرام‌های چندپخشی (multicast). به‌طور پیش‌فرض مقدار ۱ استفاده می‌شود. توجه داشته باشید که TTL در چندپخشی معنای ویژه‌ای دارد، چرا که برای تعیین محدوده (scope) بسته‌ها استفاده می‌شود. مقدار ۱ بدین معناست که بسته‌ها از شبکه محلی خارج نمی‌شوند؛ به ip(4) مراجعه کنید. محدوده ممکن است بر اساس آدرس نیز طبق آنچه در RFC2365 شرح داده شده است تعیین شود.
تعیین محدوده آدرس‌های IP مورد استفاده برای انتقال چندپخشی. رشته قالب می‌تواند شامل بازه و فهرستی از مقادیر باشد: "239.255.0.0-31,128-132,200". مقدار پیش‌فرض "239.255.0.0-255" است. این محدوده آدرس در RFC2365 برای محدوده محلی پیشنهاد شده است.
تعیین پورت UDP مورد استفاده برای انتقال چندپخشی. رشته قالب می‌تواند شامل بازه و فهرستی از شماره پورت‌ها باشد: "1758-2000,8000-9000". مقدار پیش‌فرض "1758" است.
تعیین یک فایل الگو/جایگزینی برای استفاده. این گزینه امکان می‌دهد نام فایل درخواستی بر اساس عبارت‌های باقاعده سازگار با پرل (PCRE) جایگزین شود. فایل README.PCRE را ببینید.
آزمایش یک فایل الگو/جایگزینی. هنگام استفاده از این گزینه، کارساز طبق معمول راه‌اندازی نمی‌شود، بلکه تنها نام فایل را از ورودی استاندارد (stdin) خوانده و نتیجه جایگزینی را چاپ می‌کند.
به ازای هر مدخل معتبر در فایل ارائه‌شده، یک نخ کارساز mtftp راه‌اندازی می‌کند. برای جزئیات در مورد mtftp به مشخصات PXE مراجعه کنید. یک فایل نمونه در توزیع منبع برنامه قرار داده شده است.
پورتی که کارساز mtftp باید برای درخواست‌های ورودی به آن گوش فرا دهد.
در برخی موارد خاص در شبکه‌های دارای متعادل‌کننده بار (load balancer) یا سایر تجهیزاتی که NAT (ترجمه نشانی شبکه) انجام می‌دهند، به دلیل تغییر یافتن شماره پورت، ممکن است نیاز باشد بررسی پورت مبدا غیرفعال شود. اگر مایل به استفاده از این ویژگی هستید، باید از دلیل نیاز به آن و پیامدهایش کاملاً آگاه باشید. توجه داشته باشید که این گزینه ناقض RFC1350 است. این گزینه تنها بر انتقال‌های غیرچندپخشی تأثیر می‌گذارد.
رسیدگی به وضعیت «سندروم شاگرد جادوگر» (Sorcerer's Apprentice Syndrome) طبق الزام RFC 1350. این RFC الزام می‌کند که پاسخ‌های تکراری به یک بسته منفرد رد شوند؛ بنابراین یک بلوک داده تنها در صورت بروز وقفه زمانی (timeout) مجدداً ارسال خواهد شد. برای حفظ سازگاری با نسخه‌های پیشین، رفتار پیش‌فرض نادیده گرفتن این RFC است؛ در نتیجه بلوک‌ها با دریافت هر درخواست مجدداً ارسال می‌شوند.
این گزینه به کارساز اجازه می‌دهد به محض بروز وقفه زمانی (timeout) برای کلاینت فعلی، به سراغ کلاینت چندپخشی بعدی برود. هنگامی که کلاینت اصلی فعلی (master client) موفق به ارسال تاییدیه (ACK) به کارساز نشود، کارساز یک تاییدیه گزینه (OACK) با فیلد MC (کلاینت اصلی) تنظیم‌شده روی false به کلاینت اصلی فرستاده و یک OACK با MC تنظیم‌شده روی true به کلاینت چندپخشی بعدی ارسال می‌کند. بدون این گزینه، کارساز تلاش برای ارتباط با کلاینت اصلی فعلی را تا ۵ بار تکرار کرده و سپس آن را پایان‌یافته علامت‌گذاری می‌کند و به سراغ کلاینت بعدی می‌رود.
نمایش نسخه برنامه.
نمایش خلاصه‌ای از گزینه‌ها.
این دایرکتوری ریشه‌ای است که توسط کارساز TFTP استفاده می‌شود. تمام فایل‌های درخواستی از سوی یک کلاینت TFTP باید در این دایرکتوری قرار داشته باشند. در صورت عدم تعیین، این دایرکتوری به‌طور پیش‌فرض /tftpboot خواهد بود. از آنجا که atftpd با شناسه کاربری nobody اجرا می‌شود، مجوزهای دایرکتوری باید به‌گونه‌ای مناسب تنظیم شوند که امکان خواندن و نوشتن فایل‌ها فراهم باشد.

از نسخه ۰.۲ به بعد، کارساز برخی داده‌های آماری را جمع‌آوری می‌کند. در حال حاضر کارساز بار سیستم، زمان بین اتصالات و برخی آمارهای نخ‌ها مانند تعداد فایل‌های ارسالی، دریافتی، تعداد انصراف‌ها و... را محاسبه می‌کند. برای مشاهده این آمارها در گزارش‌ها، باید گزینه --verbose=6 (LOG_NOTICE) یا بالاتر را تنظیم کنید.

پروتکل TFTP به‌خودی‌خود هیچ تمهیدی برای امنیت ندارد. هیچ احراز هویتی برای کاربران وجود ندارد و کلاینت‌های TFTP به تمام فایل‌های موجود در دایرکتوری ریشه مشخص‌شده که کارساز روی آن‌ها دسترسی دارد، دسترسی پیدا می‌کنند.

با استفاده از پشتیبانی libwrap در atftp می‌توان به سطحی از امنیت دست یافت. افزودن ورودی‌های مناسب به /etc/hosts.allow و /etc/hosts.deny دسترسی را به میزبان‌های مورد اعتماد محدود خواهد کرد. نام دیمون برای استفاده در این فایل‌ها in.tftpd است.

کارساز atftpd روشی را برای جایگزینی پویای نام فایل درخواستی با یک نام جدید بر اساس عبارت‌های باقاعده سازگار با پرل فراهم می‌کند. جفت‌های الگو/جایگزینی از فایل‌های مشخص‌شده خوانده می‌شوند. پس از دریافت یک درخواست خواندن، کارساز ابتدا تلاش می‌کند نام فایل درخواستی را باز کند. اگر این کار با شکست مواجه شد، بر اساس محتوای فایل الگو به دنبال یک جایگزین می‌گردد. در صورتی که این مورد نیز شکست بخورد، خطایی به کلاینت ارسال می‌شود. این ویژگی تنها برای درخواست‌های خواندن در دسترس است؛ انجام این جایگزینی برای کلاینت‌هایی که فایلی را روی کارساز می‌نویسند بی‌معناست.

نام mtftp به TFTP چندپخشی (multicast tftp) آن‌گونه که توسط مشخصات PXE تعریف شده است اشاره دارد. برای منبع مشخصات به pxespec.txt مراجعه کنید. توجه داشته باشید که این مورد با RFC2090 یکسان نیست. بوت‌های سازگار با PXE پروتکل mtftp را پیاده‌سازی می‌کنند، نه RFC2090 را.

inetd(8), hosts_access(5), libpcre(7), RFC1350, RFC2090, RFC2347, RFC2348, RFC2349 و pxespec.pdf.

این صفحه راهنما توسط Remi Lefebvre <remi@debian.org> و Jean-Pierre Lefebvre <helix@step.polymtl.ca> نوشته شده است.

27 دسامبر 2000