در این مقاله میخواهیم چگونگی راهاندازی vsftpd برای توزیع اوبنتو در لینوکس را یاد بگیریم. قبل از آن بد نیست کمی راجع به مفهوم این عبارت بدانیم.
vsftpd چیست؟
این عبارت مخفف Very Secure FTP Deamon است. میتوانید مقاله FTP چیست؟ را بخوانید تا بیشتر با این پروتکل آشنا شوید.
vsftpd هم تفاوت چندانی با پروتکل اصلی، یعنی FTP ندارد. فقط بهخاطر رابط کاربری کارآمدتری که نسبت به اپلیکیشنهای FTP دارد، دسترسی به فایلها را آسانتر میکند. همچنین امنیت آن نسبت به پروتکل FTP هم بیشتر است.
هرچه باشد FTP سالها پیش عرضه شده است و مشکلات امنیتی امروزی در آن زمان وجود نداشتند. به همین خاطر، خیلی نباید از آن توقع ایمنی داشت. vsftpd تنها یکی از سرویسهایی است که روی یک هاست لینوکس قابل نصب و پیکربندی است. برای آشنایی بیشتر با انواع سرویسهایی که میتوانید روی یک هاست لینوکس اجرا کنید، پیشنهاد میکنیم به مقاله هاست لینوکس چیست مراجعه کنید.
حالا بیایید چگونگی نصب vsftpd را یاد بگیریم.
چگونگی نصب vsftpd روی سرور ubuntu
برای اینکه از این پروتکل در توزیع ابنتو لینوکس بهره ببریم، ابتدا باید دستورات زیر را در محیط خط فرمان این توزیع وارد کنیم.
نکته: میتوانید مقاله کدام توزیع لینوکس برای شما مناسب است را بخوانید تا بیشتر با توزیعهای مختلف این سیستمعامل آشنا شوید.
برگردیم سر اصل مطلب. دستوراتی که برای شروع کار باید وارد کنید، دستورات زیر هستند:
apt-get update apt-get install vsftpd cp /etc/vsftpd.conf /etc/vsftpd.conf_default
در مرحله بعدی باید فایل etc/vsftpd.conf/ را باز کنیم و محتویات زیر را داخل آن قرار دهیم:
# Example config file /etc/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # # # Run standalone? vsftpd can run either from an inetd or as a standalone # daemon started from an initscript. listen=NO # # This directive enables listening on IPv6 sockets. By default, listening # on the IPv6 "any" address (::) will accept connections from both IPv6 # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6 # sockets. If you want that (perhaps because you want to listen on specific # addresses) then you must run two copies of vsftpd with two configuration # files. listen_ipv6=YES # # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) #local_umask=022 # # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. anon_mkdir_write_enable=YES # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=YES # # If enabled, vsftpd will display directory listings with the time # in your local time zone. The default is to display GMT. The # times returned by the MDTM FTP command are also affected by this # option. use_localtime=YES # # Activate logging of uploads/downloads. xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from_port_20=YES # # If you want, you can arrange for uploaded anonymous files to be owned by # a different user. Note! Using "root" for uploaded files is not # recommended! #chown_uploads=YES #chown_username=whoever # # You may override where the log file goes if you like. The default is shown # below. #xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format. # Note that the default log file location is /var/log/xferlog in this case. #xferlog_std_format=YES # # You may change the default value for timing out an idle session. #idle_session_timeout=600 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which the # ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure # # Enable this and the server will recognise asynchronous ABOR requests. Not # recommended for security (the code is non-trivial). Not enabling it, # however, may confuse older FTP clients. #async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that on some FTP servers, ASCII support allows a denial of service # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd # predicted this attack and has always been safe, reporting the size of the # raw file. # ASCII mangling is a horrible feature of the protocol. #ascii_upload_enable=YES #ascii_download_enable=YES # # You may fully customise the login banner string: #ftpd_banner=Welcome to blah FTP service. # # You may specify a file of disallowed anonymous e-mail addresses. Apparently # useful for combatting certain DoS attacks. #deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd.banned_emails # # You may restrict local users to their home directories. See the FAQ for # the possible risks in this before using chroot_local_user or # chroot_list_enable below. #chroot_local_user=YES # # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that # the user does not have write access to the top level directory within the # chroot) chroot_local_user=YES allow_writeable_chroot=YES #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list # # You may activate the "-R" option to the builtin ls. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling it. #ls_recurse_enable=YES # # Customization # # Some of vsftpd's settings don't fit the filesystem layout by # default. # # This option should be the name of a directory which is empty. Also, the # directory should not be writable by the ftp user. This directory is used # as a secure chroot() jail at times vsftpd does not require filesystem # access. secure_chroot_dir=/var/run/vsftpd/empty # # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd # # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO # # Uncomment this to indicate that vsftpd use a utf8 filesystem. #utf8_filesystem=YES useradd –m testuser passwd testuser mkdir /home/testuser ufw allow 20/tcp ufw allow 21/tcp systemctl start vsftpd systemctl enable vsftpd
دسترسی FTP
ما فقط به کاربران محلی اجازه دسترسی به سرور FTP خواهیم داد ، دستورالعمل های anonymous_enable و local_enable را پیدا کنید و مطمئن شوید که پیکربندی شما با خطوط زیر مطابقت دارد:
anonymous_enable=NO local_enable=YES
پارامتر anonymous_enable
این پارامتر مشخص میکند که آیا امکان اتصال به سرور به صورت ناشناس وجود دارد؟! در حالت پیشفرض، مقدار این گزینه برابر با yes است؛ این یعنی نام های کاربری anonymous و ftp امکان اتصال به سرور را دارند.
پارامتر local_enable
پارامتر فوق، امکان احراز هویت (authentication) بر اساس نامهای کاربری local را فراهم میکند. درواقع این گزینه، امکان Authentication کاربران با کمک فایل /etc/passwd را فراهم میکند.
فعالسازی امکان Upload
تنظیمات write_enable برای ایجاد تغییرات در فایل سیستم، کارآمد هستند. کارهایی مثل بارگذاری و حذف پروندهها. درصورت فعال بودن این تنظیمات، اجازه استفاده از دستوراتی که منجر به نوشتن بر روی دیسک میشوند، فراهم است. دستوراتی مثل put یا del.
write_enable=YES
پارامتر local_umask
این پارامتر نشاندهنده پیشفرض فایل های ایجاد شده است. مقدار پیش فرض 022 است که در دستورchmod برابر با ۷۵۵ است.
پارامتر dirmessage_enable
اگر زمانی که کاربری به دایرکتوریای جدید وارد میشود، اگر جلوی این پارامتر yes نمایش داده شود و همچنین درصورت وجود فایل message_file، پیغامی که درون آن فایل قرار دارد، در هنگام تغییر دایرکتوری به وی نمایش داده میشود.
پارامترmessage_file
نام فایلی است که قرار است پیغام آن به کاربر نمایش داده شود.
connect_from_port_20
برای فعال یا غیرفعالسازی پورت 20 بهعنوان data channel کاربرد دارد. مقدار این گزینه هم یا yes است یا no!
ftp_data_port
اگر تصمیم گرفتید مقدار گزینه بالا را no قرار دهید و از پورت 20 بهمنظور data channel استفاده نکنید، در این قسمت باید پورتی که برای اینکار در نظر گرفتهاید را مشخص کنید.
xferlog_std_format
اگر مقدار این پارامتر با no نشان داده شود، لاگهای اتصال کاربران در مسیر /var/log/vsftpd.log ثبت و ذخیره میشوند.
Listen
Listen تعیین میکند که آیا سرویس بهصورت standalone فعالیت میکند یا نه! اگر گزینه روبهروی آن no باشد، فعالیت سرویس تحت مدیریت xinted خواهد بود. در غیر اینصورت، تمام وظایف مانند listen روی پورتهای مختلف، برعهده خود سرویس است.
معمولاً وقتی قرار باشد از IPv4 و IPv6 بهصورت همزمان استفاده کرد، روبهوری listen مقدار no قرار میگیرد. نکته مهم اینکه اگر سرویس در حالت standalone باشد، خط listen-ipv6 باید برابر با no باشد.
listen_ipv6
با فعال بودن این گزینه، سرویس روی سوکت IPv6 به فعالیت خود ادامه میدهد.
pam_service_name
این پارامتر، نامی را نشان میدهد که ماژول امنیتی pam برای این سرور از آن استفاده میکند! فایل کانفیگ سرویسها در این ماژول، در مسیر etc/pam/vsftpd/ قرار میگیرند.
userlist_enable
اگر مقدار این پارامتر برابر با yes باشد، سرویس لیست کاربران را از فایلی که در مسیر etc/vsftpd.userlist/ قرار دارد میخواند. حالا اگر پارامتر userlist-deny برابر با yes باشد، هیچکدام از کاربرانی که درون لیست قرار دارند، امکان اتصال به سرور را نخواهند داشت. در نقطه مقابل، اگر این مقدار برابر با no باشد، تنها کاربران داخل لیست امکان اتصال را خواهند داشت.
tcp_wrappers
این گزینه، برای فعال یا غیرفعال کردن tcp wrappers کاربرد دارد. اگر کاربری قصد اتصاب به سرویسی یا استفاده از آن را داشته باشد، tcp wrappers ابتدا بهترتیب فایلهای /etc/hosts.allow و /etc/hosts.deny را بررسی میکند. اینکار بهمنظور پیدا کردن لیستی از هاستهای مجاز یا غیرمجاز انجام میشود؛ و اینکه اگر وجود دارد، کاربر در کدام یک از فایلها قرار دارد؟
مثلاً کلاینت (کاربر) با آدرس 192.168.200.201 و لوکال هاست، برای استفاده از vsftpd مجاز است و بقیه این اجازه را ندارند!
Vsftp : 192.168.200.201,LOCAL
همچنین افزودن خط زیر به زیر به /etc/hosts.deny، باقی کلاینتها را غیرمجاز معرفی میکند:
Vsftp : ALL ALL : ALL
chown_uploads
کاربرد این گزینه، مربوط به فایلهایی است که کاربران ناشناس در سرور آپلود میکنند. با کمک chown_uploads، میتوان تعیین کرد که این فایلها، دارای ownership مخصوصی باشند. البته این گزینه در کنار گزینه chown_username کارآمد است که در بخش بعدی به آن میپردازیم.
chown_username
این گزینه نام کاربری را نشان میدهد که فایلهای آپلود شده روی سرور، تحت مالکیت او هستند.
idle_session_timeout
این گزینه مدتزمانی را نشان میدهد که سرور منتظر فعالیتی از کاربر (کلاینت) میماند. اگر اتصالی بیشازمدت تعیینشده بدون فعالیت باشد، توسط سرور بسته خواهد شد.
userlist_file
مسیری را نشان میدهد که فایل userlist در آن قرار دارد.
userlist_deny
اگر برابر با yes باشد ( مقدار پیش فرض) کاربران داخل این لیست مجاز به اتصال نخواهند بود. در صورت no بودن تنها کاربران userlist امکان اتصال خواهند داشت.
اگر دست به حالت پیشفرض یعنی yes نزنیم، کاربرانی که داخل لیست قرار دارند، امکان اتصال را نخواهند داشت. اگر مقدار no باشد، تنها کاربران حاضر در userlist میتوانند متصل شوند.
chroot_local_user
این گزینه نشان میدهد که کاربران پس از ورود به home، در دایرکتوری خود محبوس میشوند! به بیانی دیگر، jail برای کاربران فعال است؛ اما vsftp، بهدلایل امنیتی، بهصورت پیشفرض اجازه نوشتن در مسیری که jail شده است را به کاربر نمیدهد.
برای اینکه کاربر چنین اجازهای را کسب کند، باید گزینه زیر نیز فعال شود.
allow_writeable_chroot
این گزینه به کاربر اجازه میدهد تا دایرکتوریای که در آن jail شده بنویسد.
Chroot Jail
این گزینه، کاربران FTP را از دسترسی به فایلهای خارج از home directories با chroot منع میکند:
chroot_local_user=YES
در حالت پیشفرض، هنگامی که chroot فعال باشد و فهرستی که کاربران در آن jail شدهاند، توسط ایشان قابل نوشتن باشد، vsftpd از آپلود پرونده جلوگیری میکند. اینکار جنت پیشگیری از وقوع آسیبپذیری امنیتی است.
اگر میخواهید هنگام فعال کردن chroot، امکان آپلود کردن داشته باشید، باید یکی از روشهای زیر را بهکار بگیرد:
1- احتمالاً بهترین کار برای کسب اجازه آپلود، فعال کردن chroot و پیکربندی دایرکتوریهای FTP است. در ادامه، برای آموزش یک دایرکتوری ftp داخل Home کاربر ایجاد میکنیم که بهعنوان chroot و یک فهرست بارگذاری نوشتاری برای بارگذاری فایلها مورداستفاده قرار میگیرد:
user_sub_token=$USER local_root=/home/$USER/ftp
2- روش دیگر، استفاده از دستور زیر در پیکربندی vsftpd است. اگر میخواهید به کاربر، اجازه اعمال تغییرات در home directory را بدهید، از این روش استفاده کنید:
allow_writeable_chroot=YES
اتصالات FTP منفعل
vsftpd می تواند از هر پورت برای اتصالات FTP منفعل استفاده کند. ما حداقل و حداکثر رنج پورتها را مشخص میکنیم و سپس دامنه را در فایروال خود باز خواهیم کرد.
خطوط زیر را به پرونده پیکربندی اضافه کنید:
pasv_min_port=30000 pasv_max_port=31000
محدود کردن ورود کاربر
اگر میخواهید فقط برخی از کاربران اجازه ورود به سرور FTP را داشته باشند، خطوط زیر را بعد از خط userlist_enable=YES بیاورید:
userlist_file=/etc/vsftpd/user_list userlist_deny=NO
وقتی این گزینه فعال شود، باید بهصراحت مشخص کنید که کابراران با اضافه کردن نامهای کابری به پرونده /etc/vsftpd/user_list (یک کاربر در هر خط) میتوانند وارد سیستم شوند.
تضمین انتقال با SSL / TLS
برای ایمن کردن انتقال FTP با کمک SSL/TLS، اول از همه به یک گواهی SSL نیاز دارید و سپس باید سرور FTP را هم پیکربندی کنید.
اگر دامنه یا زیردامنهای دارید که به آدرس IP سرور FTP اشاره میکند، خیلی راحت میتوانید یک مجوز رایگان SSL هم تولید کنید.
در ادامه، با کمک ابزار openssl یک self-signed SSL certificate میسازیم.
دستوری که آوردهایم، یک کلید خصوصی 2048 بیتی و یک گواهی self-signed بهمدت 10 سال ایجاد میکند. این کلید خصوصی و گواهی مذکور، در یک پرونده ذخیره میشوند:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
پس از ایجاد گواهینامه SSL، پرونده پیکربندی vsftpd را باز کنید:
sudo nano /etc/vsftpd/vsftpd.conf
حالا باید دستورالعملهای rsa_cert_file و rsa_private_key_file را پیدا کنید. پس از یافتن آنها، مقادیرشان را در مسیر فایل pam تغییر دهید و دستورالعمل ssl_enable را برابر با YES قرار دهید:
rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES
در غیراینصورت ، سرور FTP برای برقراری اتصالات ایمن فقط از TLS استفاده می کند.
پس از انجام ویرایش، محتویات فایل پیکربندی vsftpd (به استثنای comments ) باید چیزی شبیه به این باشد:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES
حالا فایل را ذخیره و سرویس vsftpd را بهمنظور اعمال تغییرات، ریاستارت کنید. اینکار با دستور زیر انجام میشود:
sudo systemctl restart vsftpd
ایجاد کاربر FTP بهمنظور تست سرور:
برای تست سرور FTP باید کاربر جدید ایجاد کنیم. در ادامه چگونگی اینکار را توضیح خواهیم داد:
اگر از قبل کاربرانی دارید که می خواهید به FTP دسترسی داشته باشند، از مرحله دوم شروع کنید.
1. کاربر جدیدی با نام newftpuser میسازیم:
useradd -m newftpuser
در مرحله بعد، باید رمزعبور کاربر را مشخص کنید :
passwd newftpuser
2. درخت پوشه FTP را ایجاد کنید و مجوزهای صحیح را تنظیم و ارائه کنید:
sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp
باز کردن فایروال با دستورا زیر انجام میشود:
فایروال ufw:
ufw allow 20/tcp ufw allow 21/tcp
فایروال firewalld:
sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp firewall-cmd -reload
جهت فعال کردن vsftp، سرویس را مجدداً استارت کنید:
systemctl start vsftpd
برای فعالسازی این سرویس، هنگام بوت شدن سیستمعامل دستور زیر را وارد کنید:
systemctl enable vsftpd
غیرفعال کردن دسترسی Shell
هنگام ایجاد کاربر، اگر صریحاً عدم دسترسی مشخص نشده باشد، کاربر بهطور پیشفرض اجازه دسترسی به SSH سرور را خواهد داشت.
برای غیرفعال کردن دسترسی به Shell، به یک پوسته جدید نیاز داریم که بهسادگی پیامی را چاپ کند. پیامی که به کاربر میگویند حسابش فقط به دسترسی FTP محدود است.
برای ایجاد شل /bin/ftponly و اجرای آن، باید دستور زیر را اجرا کنید:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly
حالا باید پوسته جدید را به لیست پوستههای معتبر، در پرونده/etc/shells shell ها اضافه کنید:
echo "/bin/ftponly" | sudo tee -a /etc/shells
سپس باید پوسته کاربر را به /bin/ftponly تغییر دهید:
sudo usermod newftpuser -s /bin/ftponly
اگر میخواهید پوسته را برای سایر کاربرانی که فقط قرار است به FTP دسترسی داشته باشند تغییر دهید. از همان دستور استفاده کنید.
در خصوص گزینه message_file، باید توجه داشته باشید که این فایل حتماً باید hidden باشد. همچنین در دایرکتوریای وجود داشته باشد که قصد نمایش آن به کاربر را داریم.
برای مثال، با قرار دادن مقدار این پارامتر بهشکل زیر و همچنین قرار دادن فایل warning در Home، باید پیغام داخل این فایل در هنگام ورود به کاربر نمایش داده شود:
message_file=.warning
به تصویر زیر توجه کنید:
با توجه به اینکه میخواهید امکان استفاده از FTP را برای کاربران Local فراهم کنیم، و همچنین با در نظر گرفتن این موضوع که هر کاربر در home خود jail میشود، فایل config نهایی بهصورت زیر خواهد بود:
پس از ذخیره کردن تنظیمات، باید سرویس را دوباره راهاندازی کنیم.
از آنجایی که ما در این آموزش از chroot استفاده کردیم، باید selinux را هم پیکربندی کنیم. اگر اینکار را نکنید، هنگام ورود با پیغام زیر برخورد میکنید:
setsebool -P ftpd_full_access on
تست عملکرد
بعد از اینکه تنظیمات را انجام دادیم، باید اتصال از طریق FTP به سرور را تست و بررسی کنیم.
همانطور که در تصویر بالا میبینید، اتصال به سرور موفق بوده است! از آنجایی که tcp wrapper هم در تنظیمات vsftp فعال شده بود، باید تست بعدی را با معرفی هاست و سرویس در فایلهای /etc/hosts.allwo و /etc/hosts.deny اجرا کنیم.
اول از همه، باید در فایل /etc/hosts.allow امکان استفاده از vsftpd را فقط برای local host فراهم کنیم. در مرحله بعد، باید در فایل /etc/hosts.deny، اجازه استفاده باقی سرویسها را سلب کنید. محتویات این فایل بهصورت زیر خواهد بود:
حالا اتصال local را بررسی میکنیم. همانطور که در تصویر زیر میبینید، اتصال موفقیتآمیز بوده است.
حالا اتصال را توسط کلاینت خود و از طریق شبکه بررسی میکنیم. با استناد به توضیحات تصویر بالا و پیکربندیای که انجام دادیم، کاربر امکان اتصال را نخواهد داشت.
توضیح نهایی این که تا این جای کار کاربران local امکان اتصال حواهند داشت، در صورتی قصد داشته باشیم تا تعداد محدودی از کاربران مجاز به ورود و استفاده از سرویس باشند، می بایست از userlist استفاده کنیم و تنها نام کاربری کاربران مجاز را در آن معرفی نماییم.
بنابراین، با انجام اینکارها، فقط کاربران local امکان اتصال را خواهند داشت؛ اما اگر میخواهید فقط تعداد محدودی از کاربران مجاز به ورود و استفاده از سرویس باشند، باید از userlist استفاده کنید و تنها یوزرنیم کابران مجاز را در آن وارد کنید.
کار تمام است!
جمعبندی
همانطور که دیدید، vsftpd نسخه کاملتر پروتکل FTP است که برای توزیعات مختلف لینوکس کاربرد دارد. این پروتکل که برای انتقال فایل است، رابط کاربری سادهتری نسبت به اپلیکیشنهای FTP دارد که دسترسی به فایلها را راحتتر میکند.
اگر سوالی در رابطه با vsftpd دارید، در قسمت کامنتها با ما در میان بگذارید تا متخصصانمان سریعاً پاسختان را بدهند.