برای ساخت اکانت FTP در لینوکس میتوانید از سرویس vsftpd استفاده کنید. ابتدا این سرویس را روی سرور نصب کنید، سپس با دستور useradd یک کاربر جدید بسازید و با passwd برای آن رمز عبور تعیین کنید. در ادامه، باید دسترسی کاربر را به پوشه مشخصی محدود کنید، تنظیمات vsftpd را تغییر دهید و پورتهای موردنیاز را در فایروال باز کنید. برای جلوگیری از دسترسی غیرمجاز و محافظت از اطلاعات ورود نیز لازم است محدودیت Chroot و رمزنگاری SSL/TLS را فعال کنید.
در این مقاله، مراحل ساخت و مدیریت کاربران FTP را در اوبونتو، دبیان و توزیعهای مبتنی بر RHEL مانند CentOS و AlmaLinux آموزش میدهیم. همچنین نحوه تنظیم فایل vsftpd.conf، ایجاد پوشه اختصاصی برای آپلود، رفع خطاهای رایج مانند 530 Login incorrect و 500 OOPS و تست اتصال با FileZilla را بررسی میکنیم.
جدول محتواها
FTP چیست و چه کاربردی دارد؟
پروتکل انتقال فایل یا FTP (مخفف File Transfer Protocol) یکی از قدیمیترین و درعینحال پرکاربردترین استانداردهای شبکه برای جابهجایی فایل بین کلاینت و سرور است. زمانی که قصد دارید فایلهای یک وبسایت را مدیریت کنید، بکاپهای حجیم بگیرید یا به اعضای تیم اجازه دهید بدون دسترسی به تنظیمات حساس سیستمعامل فایل آپلود کنند، ساخت اکانت FTP در لینوکس اولین و منطقیترین راهکار پیش روی شما است.
تفاوت کاربر FTP با کاربر سیستم لینوکس
بسیاری از ادمینهای تازهکار تصور میکنند هر کاربری که در لینوکس ساخته میشود، مستقیماً یک کاربر FTP است. اما واقعیت کمی متفاوت است:
- کاربر سیستم لینوکس (System User): اجازه ورود به خط فرمان (Shell/SSH) را دارد و میتواند دستورات سیستمعاملی را اجرا کند.
- کاربر FTP: دسترسی Shell ندارد (/bin/false یا /sbin/nologin) و صرفاً مجاز است ازطریق پورت FTP به یک پوشه مشخص متصل شود و فایلها را دریافت یا ارسال کند.
چرا برای مدیریت FTP از سرویس vsftpd استفاده میکنیم؟
در لینوکس ابزارهای مختلفی مثل ProFTPD یا Pure-FTPd برای راهاندازی FTP Server وجود دارند، اما دیمون vsftpd (مخفف Very Secure FTP Daemon) استانداردی است که ردهت (Red Hat) و اوبونتو بهصورت پیشفرض آن را پیشنهاد میکنند. طبق داکیومنتهای رسمی Red Hat، دلیل این محبوبیت در چند ویژگی اصلی خلاصه میشود:
- امنیت بالا: ساختار آن طوری طراحیشده که در برابر حملات سرریز بافر (Buffer Overflow) کاملاً مقاوم است.
- مصرف ناچیز منابع: رم و پردازنده بسیار کمی درگیر جابهجایی فایلها میشود.
- سرعت بالا و ایزولهسازی عالی: مکانیزم Chroot در vsftpd اجازه نمیدهد کاربر از دایرکتوری تعیینشدهاش بیرون برود.
پیشنیازهای ساخت و تنظیم FTP Server در لینوکس

در ابتدای کار باید مطمئن شوید که زیرساخت سرور و سیستمعامل شما برای میزبانی این سرویس آماده است. عدم توجه به همین چند پیشنیاز ساده، دلیل ۸۰ درصد خطاهای عدم اتصال یا خطاهای دسترسی در مراحل بعدی است.
لیست تجهیزات و دسترسیهای لازم
- دسترسی Root یا کاربر با مجوز Sudo: برای نصب پکیجها و ویرایش فایلهای سیستمعامل
- نصب پکیج vsftpd: براساس توزیع لینوکس خود دستور مربوطه را اجرا کنید:
در اوبونتو و دبیان (Ubuntu/Debian):
sudo apt update
sudo apt install vsftpd -y
در سنتاواس و آلما لینوکس (CentOS/RHEL/AlmaLinux):
sudo dnf install vsftpd -y
- فعالسازی و استارت سرویس:
sudo systemctl enable --now vsftpd
- باز بودن پورتهای شبکه: پورت ۲۱ برای دستورات کنترل FTP (Command Channel) و یک رنج پورت مشخص برای حالت غیرفعال (Passive Mode).
- دسترسی SELinux در توزیعهای مبتنی بر RHEL
اگر از توزیعهایی مثل CentOS، AlmaLinux یا Red Hat استفاده میکنید، سیستم امنیتی SELinux بهصورت پیشفرض اجازه خواندن و نوشتن فایل در دایرکتوری خانگی کاربر توسط FTP را مسدود میکند. برای جلوگیری از خطای ورود، پیش از ادامه کار دستور زیر را اجرا کنید تا به SELinux اجازه دسترسی دهید:
sudo setsebool -P ftpd_full_access 1
آموزش ساخت اکانت FTP در لینوکس
حالا که سرویس vsftpd نصب و آماده شده است، وقت آن رسیده که فرآیند اصلی ساخت حساب FTP در لینوکس را پیش ببریم. هدف ما در این بخش ساده است: کاربری بسازیم که بتواند فایل منتقل کند، اما دسترسی به خط فرمان (Shell) نداشته باشد، پوشه اختصاصی خودش را ببیند و تحت هیچ شرایطی نتواند به دایرکتوریهای حساس سیستمعامل سرک بکشد.
نحوه ایجاد کاربر FTP جدید (بدون دسترسی SSH)
برای اینکه امنیت سرور به خطر نیفتد، هنگام ساخت اکانت FTP در لینوکس نباید به کاربر اجازه ورود به محیط SSH داده شود. با دستور زیر یک کاربر جدید به نام ftpuser میسازیم و پوسته متنی (Shell) او را مسدود میکنیم:
sudo useradd -m -s /sbin/nologin ftpuser
- سوئیچ -m: دایرکتوری خانگی کاربر را در مسیر /home/ftpuser میسازد.
- سوئیچ -s /sbin/nologin: دسترسی کاربر به ترمینال سرور را قطع میکند (در اوبونتو میتوانید از /bin/false هم استفاده کنید).
در گام بعد، یک پسورد قوی برای این کاربر تعیین کنید:
sudo passwd ftpuser
ساختار پوشهبندی و تنظیم سطوح دسترسی
بزرگترین اشتباهی که ادمینها انجام میدهند این است که پوشه ریشه کاربر (/home/ftpuser) را مستقیماً قابل نوشتن (Writable) باقی میگذارند. ابزار vsftpd نسبت به این موضوع بسیار حساس است. بهترین شیوه این است که یک پوشه اصلی برای قرنطینه (Chroot) داشته باشیم و داخل آن یک پوشه مجزا برای آپلود فایلها بسازیم:
۱. ساخت پوشه آپلود داخل دایرکتوری کاربر
sudo mkdir -p /home/ftpuser/ftp/upload
۲. سلب مالکیتِ پوشه اصلی از کاربر FTP (برای امنیت chroot)
sudo chown root:root /home/ftpuser/ftp
sudo chmod 755 /home/ftpuser/ftp
۳. اعطای مالکیت پوشه آپلود به کاربر FTP
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/upload
با این ساختار، پوشه /home/ftpuser/ftp نقش پوستهای سخت را ایفا میکند و کاربر فایلهای خود را داخل پوشه upload ذخیره خواهد کرد.
داستان خطای معروف 500 OOPS
اگر در زمان تست اتصال با این ارور عریض و طویل زیر مواجه شدید اصلاً نگران نباشید؛ شما اولین نفری نیستید که با آن برخورد میکنید!
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
علت فنی خطا:
براساس داکیومنتهای Red Hat، دیمون vsftpd برای جلوگیری از حملات ارتقای سطح دسترسی (Privilege Escalation)، یک قانون سختگیرانه دارد: پوشه ریشهای که کاربر در آن chroot (محدود) میشود، نباید برای خودِ کاربر قابلیت نوشتن (Write Permission) داشته باشد. در نتیجه اگر لینوکس ببیند پوشه ریشه قابل نوشتن است، ارتباط را فوراً قطع میکند.
راهکارهای حل خطا:
- روش استاندارد و امن (پیشنهادی):
طبق همان گامهای بالا، مالکیت پوشه ریشه FTP را به root بدهید و مجوز نوشتن را از آن بگیرید (chmod 755) و فایلها را داخل یک زیرپوشه (مثل upload) مدیریت کنید.
- روش سریع با تغییر کانفیگ (کمتر توصیه میشود):
اگر اصرار دارید کاربر مستقیماً روی خودِ پوشه ریشه دسترسی نوشتن داشته باشد، میتوانید دستور زیر را به فایل تنظیمات /etc/vsftpd.conf اضافه کنید: allow_writeable_chroot=YES
echo “/sbin/nologin” | sudo tee -a /etc/shells
تنظیم vsftpd (هسته فنی پیکربندی سرور)
تنظیم FTP Server در لینوکس تماماً وابسته به فایل اصلی کانفیگ این سرویس در مسیر /etc/vsftpd.conf (در اوبونتو/دبیان) یا /etc/vsftpd/vsftpd.conf (در CentOS/آلما لینوکس) است. تنظیمات پیشفرض این فایل معمولاً بیشازحد باز و غیرامن هستند؛ بنابراین باید پیشاز اجرای نهایی چند تغییر کلیدی روی آن اعمال کنیم. برای شروع، فایل کانفیگ را با یک ویرایشگر متنی مثل nano باز کنید:
sudo nano /etc/vsftpd.conf
اعمال کانفیگهای ضروری امنیت و دسترسی
تغییرات زیر را در فایل پیدا کنید و مقدار آنها را مطابق دستورالعمل زیر بنویسید (اگر خطی با # کامنت شده بود، علامت # را از ابتدای آن بردارید):
- غیرفعالکردن ورود گمنام (Anonymous): اجازه ندهید افراد بدون نامکاربری وارد سرور شوند.
anonymous_enable=NO
- فعالسازی کاربران: به کاربرانی که در لینوکس ساختهاید اجازه ورود دهید.
local_enable=YES
- مجوز تغییر و آپلود فایل: برای اینکه کاربر بتواند فایل آپلود کند یا پوشه بسازد.
write_enable=YES
- کنترل لیست کاربران (User List): برای اینکه فقط به اکانتهای تاییدشده اجازه ورود بدهید:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
(توضیح: وقتی userlist_deny=NO باشد، فقط و فقط کاربرانی که نامشان در فایل vsftpd.userlist نوشته شده مجاز به اتصال خواهند بود).

جدول راهنمای پارامترهای vsftpd.conf
برای اینکه هربار مجبور به خواندن کامل فایل کانفیگ نشوید، مهمترین دستوراتی که لازم بود در این بخش از آموزش ساخت اکانت FTP با VSFTPD بدانید را در جدول زیر خلاصه کردهایم:
| پارامتر (Directive) | مقدار پیشنهادی | کاربرد و اثر فنی |
|---|---|---|
| anonymous_enable | NO | مسدود کردن دسترسی عمومی و بدون احراز هویت |
| local_enable | YES | اجازه به کاربران سیستمعامل برای اتصال به FTP |
| write_enable | YES | صدور مجوز ایجاد، ویرایش و حذف فایلها |
| local_umask | 022 | تعیین دسترسی پیشفرض فایلهای آپلودشده |
| chroot_local_user | YES | زندانیکردن کاربر در دایرکتوری اختصاصی خودش |
| userlist_deny | NO | تبدیل فایل userlist به لیست سفید (Whitelist) |
| pasv_min_port / max | 40000:50000 | تعیین محدوده پورتها برای حالت غیرفعال (Passive Mode) |
پساز ذخیره فایل، نام کاربر خود را به لیست سفید اضافه کنید:
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
ایمنسازی دسترسی و ایزولهسازی کاربران

محدود کردن دسترسی کاربران FTP در لینوکس مهمترین کار برای جلوگیری از نفوذ به لایههای ریشه سرور است. اگر فرایند ایزولهسازی را جدی نگیرید، کاربری که فقط برای آپلود یک عکس دسترسی گرفته، میتواند کل ساختار سیستمعامل و فایلهای سایر پروژهها را پیمایش کند.
۱. مکانیزم Chroot (ایجاد محیط قرنطینه)
مفهوم Chroot (مخفف Change Root) به زبان ساده یعنی تغییر دادن مفهوم «پوشه ریشه» برای کاربر. وقتی Chroot فعال است، کاربر لینوکس پوشه خانگی خودش را بهعنوان بالاترین سطح دیسک (/) میبیند و امکان استفاده از دستوراتی مثل cd .. برای رفتن به پوشههای بالادستی را نخواهد داشت.
طبق مستندات رسمی Red Hat Access، برای فعالسازی کامل Chroot کافی است این سه خط در فایل کانفیگ وجود داشته باشند:
chroot_local_user=YES
secure_chroot_control=YES
allow_writeable_chroot=YES
با این تنظیم، مدیریت کاربران FTP در لینوکس کاملاً تحت کنترل درمیآید و هر اکانت در جزیره خودش محبوس میشود.
۲. رمزنگاری انتقال داده با SSL/TLS (FTPS)
پروتکل FTP سنتی دادهها و حتی نامکاربری و پسورد را بهصورت متنی و واضح (Plain Text) روی شبکه بستر اینترنت منتقل میکند. این یعنی هرکسی در مسیر شبکه میتواند پکتها را شنود کند. برای رمزنگاری این ارتباط، باید لایه SSL/TLS را به vsftpd اضافه کنیم.
ابتدا یک گواهی خودامضا (Self-signed Certificate) بسازید:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
سپس کدهای زیر را به انتهای فایل /etc/vsftpd.conf اضافه کنید:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
پساز اعمال این کانفیگها، حتماً یکبار سرویس را ریستارت کنید تا تغییرات بنشینند:
sudo systemctl restart vsftpd
تنظیم فایروال و رفع خطاهای رایج اتصال
حتی اگر تمام مراحل ساخت اکانت FTP در لینوکس و کانفیگ فایل vsftpd.conf را موبهمو انجام داده باشید، تازمانیکه پورتهای شبکه در فایروال سرور باز نشوند، هیچ کلاینتی نمیتواند به FTP Server متصل شود. مسدود بودن پورتها معمولاً خود را با خطای کلافهکننده Connection Timed Out یا Connection Refused نشان میدهد.
سرویس FTP برای تبادل داده به دو نوع پورت نیاز دارد: پورت ۲۱ برای ارسال دستورات (Command Channel) و یک محدوده پورت اختصاصی برای انتقال خودِ فایلها در حالت غیرفعال (Passive Mode).
تنظیم فایروال در اوبونتو و دبیان (UFW)
اگر از فایروال پیشفرض اوبونتو استفاده میکنید، دستورات زیر را وارد کنید تا پورت ۲۱ و محدوده Passive Mode باز شوند:
باز کردن پورت اصلی FTP
sudo ufw allow 21/tcp
باز کردن محدوده پورتهای حالت Passive
sudo ufw allow 40000:50000/tcp
اعمال و بررسی وضعیت فایروال
sudo ufw reload
sudo ufw status
تنظیم فایروال در سنتاواس و آلما لینوکس (Firewalld)
در توزیعهای RHEL-Based تنظیم FTP Server و مدیریت پورتها با ابزار firewalld انجام میشود:
باز کردن پورت ۲۱ و رنج پورتهای Passive بهصورت دائمی
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
بارگذاری مجدد قوانین
sudo firewall-cmd --reload
تست اتصال FTP و اطمینان از صحت عملکرد
پساز اتمام مراحل کانفیگ و فایروال، وقت آن است که عملکرد سرور را در دنیای واقعی بسنجیم. برای تست اتصال میتوانید هم از محیط متنی (Terminal) و هم از نرمافزارهای گرافیکی مثل FileZilla استفاده کنید. اما به توصیه Red Hat Access، بهترین روش تست، سنجش کامل چرخه ورود، مشاهده دایرکتوری، آپلود و دانلود است.
تست اتصال با نرمافزار FileZilla (محیط گرافیکی)
۱- نرمافزار FileZilla را باز کنید.
۲- در کادرهای بالا اطلاعات زیر را وارد کنید:
- Host: آدرس IP سرور شما (مثلاً 192.168.1.50)
- Username: ftpuser (همان کاربری که ساختیم)
- Password: رمز عبوری که تعیین کردهاید
- Port: 21
۳- روی دکمه Quickconnect کلیک کنید.
۴- اگر SSL را فعال کرده باشید، پنجرهای برای تایید گواهی TLS ظاهر میشود؛ روی OK کلیک کنید.
اگر پساز ورود، ساختار پوشه upload را دیدید و توانستید یک فایل متنی را با Drag & Drop به داخل آن بکشید، یعنی آموزش ساخت کاربر FTP را با موفقیت ۱۰۰ درصدی پشت سر گذاشتهاید!
اگر نیاز به اطلاعات بیشتری درباره طرز کار فایلزیلا دارید به مقاله آموزش استفاده از فایلزیلا در ویندوز و لینوکس مراجعه کنید.
تست اتصال ازطریق خط فرمان (Terminal / CLI)
اگر میخواهید مستقیماً از ترمینال سیستم شخصی یا یک سرور دیگر اتصال را بررسی کنید، ابزار ftp را صدا بزنید:
ftp server_ip
پساز وارد کردن نام کاربری و پسورد، دستورات زیر را برای تست بفرستید:
# بررسی پوشه جاری (باید دایرکتوری قرنطینهشده را نشان دهد)
ftp> pwd
# تست ساخت پوشه آزمایشی
ftp> mkdir test_folder
# خروج از محیط FTP
ftp> quit
ماتریکس عیبیابی تست اتصال FTP
اگر در زمان تست با خطا مواجه شدید، جدول زیر در کمتر از چند ثانیه دلیل فنی و راهکار آن را روشن میکند:
| پیام خطای دریافتی | علت مشکل | راهحل فوری |
|---|---|---|
| 530 Login incorrect | عدم وجود مسیر شل /sbin/nologin در لیست شلهای مجاز لینوکس | اضافه کردن مسیر شل به فایل /etc/shells با دستور echo “/sbin/nologin” >> /etc/shells |
| 500 OOPS: chroot | قابل نوشتن بودن (Writable) دایرکتوری ریشه کاربر FTP | سلب مجوز write از پوشه اصلی با chmod 755 یا اضافه کردن allow_writeable_chroot=YES |
| 530 Permission denied | عدم وجود نام کاربر در فایل لیست سفید | اضافه کردن نام کاربری به فایل /etc/vsftpd.userlist |
| Connection timed out | مسدود بودن پورت ۲۱ یا پورتهای Passive در فایروال | بررسی قوانین فایروال (UFW / Firewalld) و باز کردن محدوده پورتها |
sudo tail -f /var/log/vsftpd.log
همزمان با کلاینت دکمه Connect را بزنید؛ علت دقیق رد شدن درخواست (از خطای پسورد تا مسدودی IP) در همان لحظه در لاگ چاپ میشود.
سناریوهای پیشرفته (مدیریت چند کاربر و دایرکتوریهای پروژه)
در سناریوهای واقعی و تیمهای نرمافزاری، کمتر پیش میآید که فقط یک کاربر FTP داشته باشید. معمولاً نیاز است برای طراح وب، برنامهنویس یا تیم پشتیبانی حسابهای مجزا بسازید تا هرکدام فقط به پروژه اختصاصی خود دسترسی داشته باشند. ساخت اکانت FTP در لینوکس، آن هم برای چندین کاربر، نیازمند دستهبندی اصولی و تعریف گروه (Group) است.
ساخت گروه کاربری اختصاصی برای FTP
برای مدیریت یکپارچه دسترسیها، ابتدا یک گروه کاربری لینوکس میسازیم:
sudo groupadd ftpgroup
سپس برای ایجاد چند کاربر FTP در لینوکس، آنها را عضو این گروه میکنید تا دسترسیها همگن باشد:
sudo useradd -m -s /sbin/nologin -g ftpgroup dev_user1
sudo useradd -m -s /sbin/nologin -g ftpgroup dev_user2
sudo passwd dev_user1
sudo passwd dev_user2
(نکته: نام هر دو کاربر جدید را هم به انتهای فایل لیست سفید /etc/vsftpd.userlist اضافه کنید).
اختصاص دایرکتوریهای مجزا به هر پروژه
اگر قصد دارید کاربر dev_user1 فقط به پوشه /var/www/site1 و کاربر dev_user2 به /var/www/site2 دسترسی داشته باشد، نیازی نیست پوشه خانگی آنها در مسیر پیشفرض /home باشد:
# تغییر مسیر دایرکتوری خانگی کاربر به پوشه پروژه
sudo usermod -d /var/www/site1 dev_user1
sudo usermod -d /var/www/site2 dev_user2
مدیریت کاربران FTP در لینوکس (حذف و تغییر دسترسی)
برای مدیریت کاربران و غیرفعالکردن موقت یا حذف یک اکانت:
- حذف کاربر همراه با پوشه خانگی: sudo userdel -r dev_user1
- مسدودسازی موقت ورود: کافی است نام کاربر را از فایل /etc/vsftpd.userlist حذف کنید یا ابتدای نامش علامت # بگذارید.
وقتی تعداد کاربران و حجم فایلها بالا میرود!
مدیریت چند کاربر همزمان روی FTP Server، زمانیکه فایلهای حجیم رسانهای یا بکاپهای سنگین جابهجا میشوند، فشار زیادی به پردازنده و بهویژه حافظه ذخیرهسازی (I/O) وارد میکند. اگر این بستر روی هاستهای اشتراکی یا زیرساختهای ضعیف سنتی باشد، خیلی زود با قطعی ارتباط، کندی شدید آپلود و پر شدن ناگهانی دیسک مواجه میشوید.
در چنین شرایطی، راهاندازی سرویس FTP روی سرور ابری کاری است که حتماً باید انجام دهید. بستر ابری به شما اجازه میدهد منابع اختصاصی داشته باشید، سرعت خواندن/نوشتن را با درایوهای NVMe بهحداکثر برسانید و درصورت افزایش حجم دادهها، دیسک سرور را در لحظه و بدون قطعی بزرگ کنید.
اگر میخواهید با معماری و مزایای فنی این زیرساخت بیشتر آشنا شوید، مطالعه مقاله سرور ابری یا Cloud Server چیست؟ دید بهتری به شما میدهد.
شرکت رایانش ابری فردوسی با بهرهگیری از سختافزارهای پرچمدار HPE و دیتاسنترهای داخلی و خارجی، بستری امن و پایدار را برای میزبانی سرویسهای لینوکسی شما فراهم کرده است:
مشخصات و مزایای زیرساخت ابری فردوسی برای مدیریت FTP Server
| ویژگی زیرساخت ما | دستاورد مستقیم برای مدیریت FTP و انتقال فایل |
|---|---|
| سختافزار HPE با دیسک NVMe | حذف کامل گلوگاههای I/O موقع آپلود و دانلود همزمان چند کاربر |
| سیستم پرداخت ساعتی | محاسبه لحظهای هزینهها (پساز خاموش کردن سرور آزمایشی، هزینهای بابت CPU و RAM نمیپردازید) |
| فایروال و مانیتورینگ پیشرفته | ایزولهسازی کامل شبکه و جلوگیری از حملات Brute Force روی پورت ۲۱ |
| ارتقای آنی منابع (Scalability) | افزایش ظرفیت دیسک و رم تنها با چند کلیک، بدون قطعی سرویس |
| بازارچه ابری با نصب اتوماتیک | استقرار سریع لینوکس و وبسرورها بدون کانفیگهای خستهکننده دستی |
| کلید API و اتوماسیون | امکان برنامهریزی هوشمند سرور و بکاپگیری اتوماتیک از دایرکتوریهای FTP |
برای اینکه سرعت دیسکهای NVMe و پایداری شبکه ابر فردوسی را در جابهجایی فایلها ارزیابی کنید، نیازی به پرداخت اولیه نیست. بهمحض ثبتنام، مبلغ ۱۰۰ هزار تومان اعتبار رایگان در کیف پول ابری شما شارژ میشود تا بتوانید تمام مراحل این آموزش را روی یک سرور ابری واقعی کاملاً رایگان تست کنید.
جمعبندی
راهاندازی و ساخت اکانت FTP در لینوکس شاید در نگاه اول صرفاً اجرای چند دستور ساده بهنظر برسد، اما رعایتنکردن نکات امنیتی مانند ایزولهسازی کاربران در محیط Chroot، مسدود کردن دسترسی SSH، تنظیم دقیق فایروال و فعالسازی FTPS، میتواند باعث ایجاد یک سرور آسیبپذیر شوند. در این مقاله یاد گرفتیم که چطور با سرویس vsftpd یک حساب کاربری ایزوله بسازیم، خطاهای رایج مانند ارور 500 OOPS را دیباگ کنیم و سرویس را برای سناریوهای چندکاربره توسعه دهیم.
حالا شما برای ما بنویسید که آیا هنگام تنظیم vsftpd با خطای دسترسی خاصی مواجه شدهاید؟ برای انتقال فایل بین سرورها بیشتر از FTP استفاده میکنید یا SFTP؟ سؤالات و تجربیات خود را در بخش نظرات بپرسید تا باهم بررسی کنیم!
منابع:
Redhat deployment guide | Redhat reference guide | Redhat managing confined services | Redhat deployment_guide | access.redhat
سؤالات متداول
چگونه در لینوکس کاربر FTP بسازیم؟
برای ایجاد کاربر FTP در لینوکس بدون دادن دسترسی به خط فرمان (SSH)، کافی است این ۴ گام کوتاه را در ترمینال طی کنید:
ساخت کاربر ایزوله: با دستور sudo useradd -m -s /sbin/nologin username اکانت جدید را بسازید تا دسترسی SSH نداشته باشد.
تعیین پسورد: با اجرا دستور sudo passwd username برای کاربر رمز عبور بگذارید.
تنظیم پوشه و دسترسی: یک زیرپوشه (مثلاً upload) داخل دایرکتوری خانگی کاربر بگذارید. مالکیت پوشه اصلی را روی root نگه دارید (chmod 755) و مالکیت پوشه upload را به کاربر جدید بدهید تا با ارور Chroot مواجه نشوید.
افزودن به لیست سفید و اعمال تغییرات: نام کاربر را در فایل /etc/vsftpd.userlist وارد کرده و در نهایت سرویس را ریاستارت کنید:
sudo systemctl restart vsftpd
تفاوت FTP با SFTP چیست و کدامیک امنیت بالاتری دارد؟
پروتکل FTP سنتی اطلاعات و رمزهای عبور را بهصورت متنی و واضح (Plain Text) روی شبکه (پورت ۲۱) منتقل میکند و امنیت پایینی دارد. در مقابل، SFTP تمام تبادلات را روی بستر امن SSH (پورت ۲۲) رمزنگاری میکند. اگر اصرار به استفاده از سرویس FTP دارید، حتماً لایه SSL/TLS را روی آن فعال کنید (FTPS).
آیا برای ایجاد کاربر FTP حتماً باید یک اکانت لینوکسی بسازیم؟
بله؛ سرویس vsftpd بهطور پیشفرض کاربران خود را ازطریق سیستم احراز هویت لینوکس (PAM) تایید میکند. اما برای حفظ امنیت سرور، حتماً دسترسی خط فرمان (SSH) این کاربران را با ست کردن شل /sbin/nologin یا /bin/false مسدود کنید.
چطور کاربر FTP را فقط به پوشه اختصاصی خودش محدود کنیم؟
با فعالسازی ویژگی Chroot. این مکانیزم کاربر را در دایرکتوری خانگیاش ایزوله میکند تا نتواند به پوشههای بالادستی و ریشه سیستمعامل سرک بکشد. برای فعالسازی آن کافی است پارامتر chroot_local_user=YES را در فایل /etc/vsftpd.conf ست کنید.
چه تنظیماتی برای غیرفعال کردن ورود کاربران گمنام لازم است؟
برای اینکه افراد بدون داشتن نامکاربری و پسورد نتوانند به سرور متصل شوند، فایل /etc/vsftpd.conf را باز کنید و مقدار این پارامتر را روی خیر بگذارید:
anonymous_enable=NO
چه پورتهایی باید برای کارکرد درست FTP در فایروال باز باشند؟
برای برقراری کامل ارتباط، باید پورت ۲۱ (جهت ارسال دستورات) و یک محدوده پورت مشخص برای حالت غیرفعال (مثلاً پورتهای ۴۰۰۰۰ تا ۵۰۰۰۰ برای Passive Mode) را در فایروال UFW یا Firewalld باز کنید.
چرا موقع اتصال با FileZilla خطای Connection Timed Out یا 530 Login Incorrect میگیریم؟
ارور 530 Login Incorrect: معمولاً بهدلیل اشتباه بودن پسورد، اضافه نشدن نام کاربر به فایل vsftpd.userlist یا عدم وجود مسیر /sbin/nologin در فایل /etc/shells رخ میدهد.
ارور Connection Timed Out: ناشی از مسدود بودن پورت ۲۱ یا پورتهای Passive Mode در فایروال سرور یا ISP است.
چگونه FTP Server را در لینوکس ریاستارت کنیم؟
پساز هر بار ویرایش فایل تنظیمات vsftpd.conf، دستور زیر را در ترمینال بزنید تا کانفیگ جدید اعمال شود:
sudo systemctl restart vsftpd
آیا میتوان انتقال فایل در FTP را رمزنگاری کرد؟
بله؛ با ساخت یک گواهی SSL/TLS با ابزار OpenSSL و قرار دادن دستورات مربوط به SSL (مانند ssl_enable=YES) در فایل کانفیگ vsftpd، سرویس شما به FTPS ارتقا یافته و تمام عبارات عبوری و فایلها بهصورت رمزنگاریشده منتقل میشوند.

