راهنمای راه اندازی vsftpd

یکی از ftp های بسیار مطرح vsftp هستش که نصب و راه اندازیش هم بسیار ساده است. اون رومی تونید از اینجا دانلود کنید. صفحه اصلی پروژه هم اینجا ست و در ضمن manpage اون رو هم می تونید اینجا رو ی وب بخونیدش. راهنمای نصب اون تو سایت پروژه موجود است ولی من اینجا علاوه بر اون یک سری directive های دیگه که می تونه مفید باشه رو توضیح می دم و نحوه پیکربندی vsftpd رو چه در حالت anonymous و چه nonanymous توضیح میدم.



نصب و راه اندازی anonymous ftp

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

tar xzvf vsftpd-2.0.5.tar.gz

cd vsftpd-2.0.5

make

vsftpd احتیاج به یکسری پیش نیاز داره یکی کاربر nobody و پوشه empty ٬وجود هر دوتای اونها رو مطمئن بشید (هواستون باشه از اینجا به بعد رو باید با کاربر ریشه انجام بدید) :

useradd nobody

mkdir /usr/share/empty/

برای اینکه بتونید ftp رو به صورت anonymous راه اندازی کنید نیاز به کاربر ftp دارید پس اونو به شکل زیر ایجاد کنید و مجوز های اون رو هم برای اینکه کاربرانی که به ftp وصل می شوند نتونند فایلهل رو دستکاری کنند اصلاح کنید:

mkdir /var/ftp/

useradd -d /var/ftp ftp

chown root.root /var/ftp

chmod og-w /var/ftp

خوب حالا اونو نصب کنید:

make install

cp vsftpd /usr/local/sbin/vsftpd

فایلهای manpage رو هم کپی کنید :

mkdir /usr/local/man/man5

mkdir /usr/local/man/man8

cp vsftpd.conf.5 /usr/local/man/man5

cp vsftpd.8 /usr/local/man/man8

خوب حالا کافیه نمونه فایل پیکربندی رو هم کپی کنید:

cp vsftpd.conf /etc



خوب مراحل نصب تموم شد حالا باید اونو اجرا کنید. هم می تونید به صورت یک Deamon و هم توسط inetd یا xinetd اون رو راه بندازید. برای راه اندازی به صورت یک دیمن باید directive زیر رو به آخر فایل vsftpd.conf اضافه کنید:

listen=YES

و حالا می تونید اون رو اجرا کنید:

root@debian:~$ /user/local/sbin/vsftpd &

[1] 2104 



الان می تونید با یه ftp client اون رو آزمایش کنید (برای login کردن هم از کاربر ftp و هم anonymous می تونید استفاده کنید ٬به جای password هم هر چیزی می تونید وارد کنید)‌:

behrad@debian:~$ ftp localhost

Connected to localhost (127.0.0.1).

220 (vsFTPd 1.1.1)

Name (localhost:chris): ftp

331 Please specify the password.

Password:

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

خوب الان vsftpd آماده است. چند directive دیگه برای anonymous می گم و می ریم سراغ مدل بعدی. یه سری هم پیش فرض تو فایل vsftpd.conf وجود داره که اونا رو خودتون می تونید با توجه به توضیحات درون فایل متوجه بشید.



anonymous_enable=YES

خوب این دستور که به طور پیشفرض برابر YES است و باعث می شه ftp به صورت anonymous کار کند. (در بخش بعدی آن را NO می کنیم



write_enable=YES

برای فعال کردن هر گونه اجازه نوشتن در ftp ابتدا باید این گزینه را فعال کنید.



anon_mkdir_write_enable=YES

زمانی که می خواهید به کاربران در حالت anonymous نیز اجازه ساخت پوشه و نوشتن در ftp را بدهید این گزینه را فعال کنید



anon_other_write_enable=YES

اجازه کارهای دیگر نظیر rename را به کاربر anonymous می دهد.



chown_uploads=YES

با set کردن این گزینه مالکیت فایلها و پوشه های جدید که بر روی host ساخته و یا کپی می شود با توجه به گزینه بعدی تغییر می کند.



chown_username=whoever

این گزینه نام کاربری که باید مالکیت فایل ها به آن منتقل شود را مشخص می کند.





راه اندازی در حالت none anonymouse

مواقعی هم هست که می خواهید کاربران با توجه به حساب کاربری که بر روی Host دارند به آن دسترسی داشته باشند و همه کس نتواند محتویات آن را ببیند.



anonymous_enable=NO

در درجه اول باید این گزینه را غیر فعال کنید.



passwd_chroot_enable=YES

این گزینه باعث می شود که هر کاربری که به سرور login می کند٬ وارد پوشه خانگی خودش شود.



local_enable=YES

اجازه می دهد تا امکان login به ftp به صورت local نیز وجود داشته باشد.



chroot_local_user=YES

این گزینه باعث می شود تا در هنگام login به صورت local نیز کاربر وارد پوشه خانگی خودش شود.



userlist_enable=YES

جلوی دسترسی کاربرانی را که در فایلی که توسط دستور userlist_file معرفی شده٬ آمده اند را می گیرد.



userlist_file=/etc/vsftpd.user_list

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



گزینه های دیگر

ftpd_banner=Welcome to FTP storage service.

این گزینه همانطور که از نام آن پیدا است banner سرویس دهنده ftp را مشخص می کند



syslog_enable=YES

این گزینه باعث می شود تا log ها برای syslog server فرستاده شود. Facility مربوط به آن نیز FTPD است. (برای ثبت log ها به صورت محلی می توانید از xferlog_file استفاده کنید)





خودکار سازی راه اندازی vsftpd در زمان بوت سیستم

برای آنکه سرویسی در زمان بوت سیستم به راه بیفتد باید یک اسکریپت برای آن در init.d بسازید و سپس آن را به runlevel ها اضافه کنید. برای این کار فیلی به نام vsftpd در شاخه etc/init.d/ بسازید و محتویات زیر را درون آن بریزی:

#! /bin/sh

# /etc/init.d/blah

#



# Some things that run always

touch /var/lock/blah



# Carry out specific functions when asked to by the system

case "$1" in

start)

echo "Starting script vsftpd "

/sbin/start-stop-daemon --start --background --pidfile /var/run/vsftpd.pid --make-pidfile --exec /usr/local/sbin/vsftpd

;;

stop)

echo "Stopping script vsftpd"

/sbin/start-stop-daemon --stop --pidfile /var/run/vsftpd.pid --name vsftpd

;;

restart)

echo "Stopping script vsftpd"

/sbin/start-stop-daemon --stop --pidfile /var/run/vsftpd.pid --name vsftpd

echo "Starting script vsftpd "

/sbin/start-stop-daemon --start --background --pidfile /var/run/vsftpd.pid --make-pidfile --exec /usr/local/sbin/vsftpd

;;

*)

echo "Usage: /etc/init.d/vsftpd {start|stop|restart}"

exit 1

;;

esac

exit 0

خوب حالا باید اونا رو به runlevel ها اضافه کنید که می تونید با دستور زیر این کارو انجام بدید:

update-rc.d vsftpd defaults

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



راه اندازی توسط inetd یا xinetd

برای آنکه سرویس را توسط این دو راه اندازی کنید ابتدا listen=YES را comment کنید و سپس تنضیمات را به صورت زیر انجام دهید.



برای inetd فایل inetd.conf را ویرایش کنید. خط زیر را به آخر آن اضافه کنید:

ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd

و سپس inetd را restart کنید.



برای راه اندازی توسط xinetd - که توصیه می کنم از آن استفاده کنید - باید ابتدا آن را نصب کنید(apt-get install xinetd) و سپس فایلی به نام vsftpd در شاخه etc/xinetd.d/ بسازید و خطوط زیر را در آن وارد کنید:

#vsftpd

service ftp

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/vsftpd

per_source = 5

instances = 50

log_on_success += PID HOST DURATION

log_on_failure += HOST

}

و پس از ذخیره آن xinetd را restart کنید.



بهراد اسلامی فر

behrad_es@yahoo.com

www.giveme5.ir

تاریخ نگارش ۲۰ مهر ۱۳۸۵