سرویس FTP در حالت Anonymous اجازه می دهد به کاربران که بدون نیاز به کاربر خاصی در سیستم به یک سری فایل های خاص دسترسی داشته باشد و کاربر بتواند با استفاده از پروتکل انتقال فایل، فایل های مورد نظر را به سیستم خود منتقل کند. در این بخش راه و روش راه اندازی این سرویس را در OpenBSD توضیح داده می شود.

اضافه کردن کاربر FTP:

برای شروع، شما نیاز به اضافه کردن کاربر FTP در سیستم دارید. این کاربر نباید کد عبورقابل استفاده داشته باشد. شما به صورت انتخابی می توانید شاخه home این کاربر را در مسیر /home/ftp قرار دهید. زمانی که =از حالت Anonymous سرویس FTP استفاده می کنید پردازش راه انداز FTP به این شاخه که home کاربر است به اصطلاح Chroot می شود و این شاخه شاخه اصلی این پردازش برای انجام فعالیت می شود.

در ادامه برای اضافه کردن کاربر FTP از فرمان adduser استفاده می کنیم، قبل از شروع به این کار ابتدا خط /usr/bin/false را در فایل /etc/shell اضافه کنید و این shell را به کاربر FTP اضافه کنید. برای انجام این کار شما می توانید از فرمان زیر استفاده کنید:

echo /usr/bin/false >> /etc/shells

بعد از انجام این کارحال کاربر FTP را به روش زیر به سیستم اضافه کنید:

# adduser
Use option “-silent” if you don’t want to see all warnings and questions.
Reading /etc/shells
Check /etc/master.passwd
Check /etc/group
Ok, let’s go.
Don’t worry about mistakes. There will be a chance later to correct any input.
Enter username []: ftp
Enter full name []: anonymous ftp
Enter shell csh false ksh nologin sh [ksh]: false
Uid [1002]: Enter
Login group ftp [ftp]: Enter
Login group is “ftp”. Invite ftp into other groups: guest no
[no]: no
Login class authpf daemon default staff [default]: Enter
Enter password []: Enter
Set the password so that user cannot logon? (y/n) [n]: y
Name: ftp
Password: ****
Fullname: anonymous ftp
Uid: 1002
Gid: 1002 (ftp)
Groups: ftp
Login Class: default
HOME: /home/ftp
Shell: /usr/bin/false
OK? (y/n) [y]: y
Added user “ftp”
Copy files from /etc/skel to /home/ftp
Add another user? (y/n) [y]: n
Goodbye!

راه اندازی کردن شاخه مورد نظر:
بعد از ایجاد کاربر شاخه /home/ftp هم ایجاد می شود این همان شاخه است که ما به آن نیاز داریم ولی برای قابلیت anonymous نیاز به یک سری تغییرات دارد که در ادامه توضیح داده می شود. شما نیازی به ایجاد کردن شاخه های /home/ftp/usrو /home/ftp/bin ندارید.

شاخه هایی که در سرور به آن نیاز دارید:
۱٫ شاخه /home/ftp:

این بخش شاخه اصلی است و باید مالک این شاخه کاربر root باشد و سطح دسترسی آن عدد ۵۵۵ باشد.

۲٫ شاخه /home/ftp/etc:

این بخش کاملا انتخابی است و پیشنهاد نمی شود. اگر شما قصد دارید که به شاخه ftp فایل ها با نام هر کاربر به این سرویس دسترسی دارد نمایش داده شود فایلهای /etc/pwd.db و /etc/group را در این شاخه کپی کنید تا در خرو.جی ls –l نام هر کاربر منصوب به هر شاخه نمایش داده شود البته بهتر است که از فایل های اصلی سیستم استفاده کنید و به روش زیر فایل های انتخابی خود را ایجاد کنید. دسترسی به این شاخه باید به صورت ۵۱۱ و دسترسی به فایل های موجود در این شاخه باید ۴۴۴ باشد. با این روش می توانید با استفاده از کاربران سیستم سطح دسترسی به شاخه FTP را مدیریت کنید.

pwd_mkdb -d /home/ftp/etc master.passwd

برای اجرای این فرمان فایل master.passwd در شاخه /home/ftp/etc کپی کنید و بعد از اجرای این فرمان فایل pwd.db ایجاد می شود. البته سعی کنید که تعداد کاربران فایل master.passwd را کم کنید و انتخابی کنید. البته این کار اجباری نبوده و بیشتر حالت نمایش دارد ا.

۳٫ شاخه /home/ftp/pub:

این یک شاخه استاندارد است و محلی برای قراردادن فایل هایی که شما قصد دارید با دیگران به اشتراک بگذارید. هر فایلی که شما قصد دارید دیگران از آن استفاده کنند را در این شاخه کپی کنید، سطح دسترسی ۵۵۵ برای این شاخه مناسب است.
به این نکته توجه کنید که مالک همه شاخه در این بخش کاربر root باشد.
در زیر لیستی کامل و سطح دسترسی همه شاخه ها را مشاهده می کنید:

# pwd
/home
# ls -laR ftp
total 5
dr-xr-xr-x 5 root ftp 512 Jul 6 11:33 .
drwxr-xr-x 7 root wheel 512 Jul 6 10:58 ..
dr-x–x–x 2 root ftp 512 Jul 6 11:34 etc
dr-xr-xr-x 2 root ftp 512 Jul 6 11:33 pub
ftp/etc:
total 43
dr-x–x–x 2 root ftp 512 Jul 6 11:34 .
dr-xr-xr-x 5 root ftp 512 Jul 6 11:33 ..
-r–r–r– 1 root ftp 316 Jul 6 11:34 group
-r–r–r– 1 root ftp 40960 Jul 6 11:34 pwd.db
ftp/pub:
total 2
dr-xr-xr-x 2 root ftp 512 Jul 6 11:33 .
dr-xr-xr-x 5 root ftp 512 Jul 6 11:33 ..

راه اندازی سرور FTP:
در این بخش شما حق انتخاب دارید که سرویس FTP را درهر یک از دو حالت inetd و rc راه اندازی کنید.

راه اندازی در حالت inetd:
در این حالت شما فایل /etc/inetd.conf به صورت زیر ویرایش کنید، این خط به صورت پیش به صورت زیر است:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -US

بخش US به صورت پیش فرض در این حالت وجود دارد، این بخش باعث می شود که همه اتصالات در حالت Anonymous در فایل /var/log/ftpd ذخیره شود و ارتباط های فعال در فایل /var/run/utmp ذخیره می شود، این فایل باعث می شود که شما با استفاده از فرمان who اتصالات کاربرها را مشاهده کنید. البته شما با استفاده از فرمان last ftp می توانید این اتصالات را مشاهده کنید. برای غیرفعال کردن ذخیره سازی در فایل /var/run/utmp از بخش –W در این بخش استفاده کنید. برای اینکه حالت Anonymous در سرور فعال شود باید از بخش –A استفاده کنید از بخش –ll هم می توانید استفاده کنید تا همه ارتباط ها در syslog ذخیره شود. بعد از ایجاد تغییرات خط مربوط به ftp به صورت زیر تغییر می کند:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -llUSA

راه اندازی در حالت rc:
در بعضی از موارد به دلیل ترافیک بالا بهتر است که سرور FTP را از طریق inetd.conf راه اندازی نکنید برای این منظور باید از طریق rc.conf.local عمل کنید و در این فایل خط های زیر را اضافه کنید و سرور را از طریق قابلیت rc.d راه اندازی کنید:

ftpd_enable=”YES”
ftpd_flags=”-DllUSA” # for non-inetd use: ftpd_flags=”-D”

بخش –D باعث می شود که سرور FTP از طریق inetd راه اندازی نشود. روش راه اندازی از طریق rc.d به صورت زیر است:

# /etc/rc.d/ftpd start

نکته: اگر قصد دارید که هر کاربری که به سرور شما وصل می شود در شاخه کاربر ftp به اصطلاح chroot شود نام کاربر را در فایل etc/ftpchroot/ اضافه کنید.

نکته: برای محدود کردن دسترسی کاربران local به سرور FTP کافی است که نام کاربر را در فایل ftpusers که در شاخه etc/ قرار دارد تا حتی با کلمه عبور صحیح هم کاربر نتواند از طریق این سرویس به سیستم وصل شود.