vsftpd یا Very Secure FTP Daemon یک FTP Server برای سیستم‌های خانواده یونیکس است. vsftpd تحت اجازه‌نامه GPL عرضه شده و از IPv6 و SSL پشتیبانی می‌کند. vsftpd بسیار امن و سریع بوده و توسط شرکت‌ها و پروژه‌های بزرگی استفاده می‌شود.

نصب

vsftpd از طریق پورت‌های FreeBSD قابل نصب است. کافی است دستورات زیر را اجرا کنید:

cd /usr/ports/ftp/vsftpd
make install clean

منویی باز شده و از شما خواسته می‌شود تا برنامه را برای کامپایل کردن پیکربندی کنید. اگر می‌خواهید از قابلیت SSL استفاده کنید، گزینه VSFTPD_SSL را تیک بزنید.

اجرا

برای اینکه vsftpd در هنگام بوت شدن سیستم اجرا شود، خط زیر را به فایل /etc/rc.conf اضافه کنید:

vsftpd_enable=”YES”

vsftpd را می‌توانید در دو حالت اجرا کنید: standalone یا تحت مدیریت inetd

در حالت standalone سرویس vsftpd به صورت کاملا مستقل اجرا شده و خودش به درخواست ها پاسخ می‌دهد. بدین ترتیب همیشه یک نسخه از vsftpd در حال اجرا بوده و بر روی پورت خاصی به درخواست ها گوش می‌دهد. اما شما می‌توانید vsftpd را تحت کنترل و مدیریت inetd اجرا کنید. در این حالت vsftpd فقط موقعی اجرا می‌شود که کاربری قصد استفاده از سرویس را داشته باشد.

پیکربندی

فایل پیکربندی vsftpd در مسیر /usr/local/etc/vsftpd.conf قرار دارد. این فایل از قالب بسیار ساده‌ای برخوردار است. توضیحات با استفاده از # درج می‌شوند. هر دایرکتیو قالبی به صورت زیر دارد:

option=value

دقت داشته باشید که در دو طرف = هیچ فاصله‌ای قرار نگرفته باشد.

این فایل را با استفاده از یک ویرایشگر دلخواه باز کنید:

vi /usr/local/etc/vsftpd.conf

این فایل دایرکتیو‌های بسیار زیادی دارد که ما فقط مهمترین آنها را شرح می‌دهیم

anonymous_enable

این دایرکتیو تعیین می‌کند که آیا کاربران مهمان می توانند از سرویس استفاده کنند یا نه. اگر این گزینه فعال باشد، تمام افراد می‌توانند از سرویس شما استفاده کنند. برای این‌کار باید از نام کاربری anonymous یا ftp استفاده کنند.

local_enable=YES

این گزینه تعیین می‌کند که آیا کاربران محلی می‌توانند از سرویس استفاده کنند یا نه. کاربران محلی کاربرانی هستند که یک حساب کاربری در سیستم داشته و نام آنها در فایل/etc/passwd وجود داشته باشد.

write_enable=YES

این خط مشخص می‌کند که آیا کاربران مجاز به نوشتن بر روی فایل‌ها هستند یا نه.

listen

اگر این گزینه را فعال کنید، vsftpd در حالت standalone شروع به کار خواهد کرد. این یعنی vsftpd تحت مدیریت inetd اجرا نخواهد شد و خودش به طور مستقل به درخواست ها پاسخ می‌دهد. اگر می‌خواهید vsftpd را تحت کنترل inetd به اجرا درآورید، این گزینه را با NO مقدار دهی کنید.

xferlog_file

این گزینه محل فایل log را مشخص می‌کند.

allow_anon_ssl

فقط زمانی اثر دارد که ssl_enable فعال باشد. اگر مقدار YES بگیرد کاربران مهمان (anonymous) می توانند از اتصال امن (ssl) استفاده کنند.

anon_mkdir_write_enable

اگر مقدار YES بگیرد، کاربران anonymous هم می توانند تحت شرایط خاصی اقدام به ایجاد دایرکتوری کنند. برای این کار گزینه write_enable باید فعال باشد. و کابر ftp باید مجوز write در پوشه والد را داشته باشد.

anon_other_write_enable

اگر مقدار YES بگیرد، به کاربران مهمان اجازه انجام کارهای نوشتاری غیر از آپلود و ساخت دایرکتوری مثل پاک کردن و تغییر نام فایلها داده می شود. این کار معمولاً توصیه نمی شود ولی برای تکمیل امکانات گنجانده شده است.

anon_upload_enable

اگر مقدار YES بگیرد کاربران anonymous می توانند تحت شرایطی اقدام به آپلود فایل هایشان نمایند. برای این کار گزینه write_enable باید فعال باشد و کاربر ftp باید مجوز نوشتن write در مکان آپلود فایل ها باشد.

delete_failed_uploads

اگر فعال باشد، همه آپلودهای ناقص پاک خواهند شد.

ls_recurse_enable

اگر فعال باشد می توان از دستور ls -R برای لیست گرفتن بازگشتی استفاده کرد. این یک ریسک کوچک امنیتی است. چون اگر این دستور در جایی اجرا شود که خروجی زیادی داشته باشد، منابع به شدت درگیر می شوند.

listen_port

مشخص می‌کند که vsftpd باید بر روی کدام پورت به درخواست ها گوش دهد. فقط وقتی تاثیر دارد که vsftpd در حالت standalone اجرا شده باشد.

max_clients

اگر vsftpd در حالت standalone باشد، این گزینه بیشترین تعداد کلاینت هایی را مشخص می کند که می توانند همزمان وصل شوند. هر موقع تعداد کلاینت های موجود پر شد، کلاینت های اضافه پیغام خطا دریافت می کنند.

اجرا تحت مدیریت inetd

ابتدا فایل پیکربندی vsftpd را باز کرده و خط زیر را به آن اضافه کنید:

listen=NO

حالا فایل /etc/inetd را باز کرده و این خط را به آن اضافه کنید:

ftp     stream  tcp     nowait  root    /usr/local/libexec/vsftpd	vsftpd

سپس این دستور را اجرا کنید تا inetd فایل پیکربندی‌اش را بازخوانی کند:

# /etc/rc.d/inetd reload

برای اجرا در حالت standalone هم خط مقدار listen را به YES تغییر داده و دستور زیر را اجرا کنید:

/usr/local/etc/rc.d/vsftpd start

فایل‌های مورد نظر خود را در مسیر /var/ftp کپی کنید تا کاربران بتوانند از آنها استفاده کنند.