بلاگ ابرفردوسی > آموزش سرور ابری : آموزش ساخت اکانت FTP در لینوکس با vsftpd

آموزش ساخت اکانت FTP در لینوکس با vsftpd

ساخت اکانت FTP در لینوکس

برای ساخت اکانت 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، دلیل این محبوبیت در چند ویژگی اصلی خلاصه می‌شود:

  1. امنیت بالا: ساختار آن طوری طراحی‌شده که در برابر حملات سرریز بافر (Buffer Overflow) کاملاً مقاوم است.
  2. مصرف ناچیز منابع: رم و پردازنده بسیار کمی درگیر جابه‌جایی فایل‌ها می‌شود.
  3. سرعت بالا و ایزوله‌سازی عالی: مکانیزم Chroot در vsftpd اجازه نمی‌دهد کاربر از دایرکتوری تعیین‌شده‌اش بیرون برود.

پیش‌نیازهای ساخت و تنظیم FTP Server در لینوکس

ملزومات ساخت اکانت FTP

در ابتدای کار باید مطمئن شوید که زیرساخت سرور و سیستم‌عامل شما برای میزبانی این سرویس آماده است. عدم توجه به همین چند پیش‌نیاز ساده، دلیل ۸۰ درصد خطاهای عدم اتصال یا خطاهای دسترسی در مراحل بعدی است.

لیست تجهیزات و دسترسی‌های لازم

  • دسترسی 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) داشته باشد. در نتیجه اگر لینوکس ببیند پوشه ریشه قابل نوشتن است، ارتباط را فوراً قطع می‌کند.

راهکارهای حل خطا:

  1. روش استاندارد و امن (پیشنهادی):

طبق همان گام‌های بالا، مالکیت پوشه ریشه FTP را به root بدهید و مجوز نوشتن را از آن بگیرید (chmod 755) و فایل‌ها را داخل یک زیرپوشه (مثل upload) مدیریت کنید.

  1. روش سریع با تغییر کانفیگ (کمتر توصیه می‌شود):

اگر اصرار دارید کاربر مستقیماً روی خودِ پوشه ریشه دسترسی نوشتن داشته باشد، می‌توانید دستور زیر را به فایل تنظیمات /etc/vsftpd.conf اضافه کنید: allow_writeable_chroot=YES

💡 ترفند کاربردی
ساخت کاربر FTP در اوبونتو و دبیان
در برخی نسخه‌های اوبونتو، آدرس شل /sbin/nologin در فایل /etc/shells وجود ندارد. این موضوع باعث می‌شود vsftpd کاربر را احراز هویت نکند و خطای 530 Login incorrect بدهد. برای حل این مشکل، کافی است یک بار دستور زیر را بزنید تا این مسیر به لیست پوسته‌های مجاز سیستم اضافه شود:
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

جدول راهنمای پارامترهای vsftpd.conf

برای اینکه هربار مجبور به خواندن کامل فایل کانفیگ نشوید، مهم‌ترین دستوراتی که لازم بود در این بخش از آموزش ساخت اکانت FTP با VSFTPD بدانید را در جدول زیر خلاصه کرده‌ایم:

پارامتر (Directive)مقدار پیشنهادیکاربرد و اثر فنی
anonymous_enableNOمسدود کردن دسترسی عمومی و بدون احراز هویت
local_enableYESاجازه به کاربران سیستم‌عامل برای اتصال به FTP
write_enableYESصدور مجوز ایجاد، ویرایش و حذف فایل‌ها
local_umask022تعیین دسترسی پیش‌فرض فایل‌های آپلودشده
chroot_local_userYESزندانی‌کردن کاربر در دایرکتوری اختصاصی خودش
userlist_denyNOتبدیل فایل userlist به لیست سفید (Whitelist)
pasv_min_port / max40000:50000تعیین محدوده پورت‌ها برای حالت غیرفعال (Passive Mode)

پس‌از ذخیره فایل، نام کاربر خود را به لیست سفید اضافه کنید:

echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

ایمن‌سازی دسترسی و ایزوله‌سازی کاربران

اقدامات لازم برای ایمن‌سازی دسترسی کاربران FTP

محدود کردن دسترسی کاربران 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
باکس نکته وردپرس – راست‌چین
✨ نکته مهم
تفاوت FTPS و SFTP را اشتباه نگیرید!
دقت کنید که FTPS همان سرویس standard FTP است که روی آن لایه SSL کشیده شده (پورت ۲۱)، اما SFTP کلاً زیرمجموعه‌ای از پروتکل SSH (پورت ۲۲) است و ربطی به دیمون vsftpd ندارد. اگر مقصد شما اتصال امن با همان ابزارهای standard FTP است، FTPS گزینه‌ای است که نیاز دارید.

پس‌از اعمال این کانفیگ‌ها، حتماً یک‌بار سرویس را ریستارت کنید تا تغییرات بنشینند:

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
⚠️ هشدار خیلی مهم
تله عدم باز کردن پورت‌های Passive Mode
بسیاری از ادمین‌ها فقط پورت ۲۱ را در فایروال باز می‌کنند. در این حالت کاربر به سرور متصل شده و یوزر و پسوردش هم تایید می‌شود، اما به‌محض زدن دستور مشاهده لیست فایل‌ها (ls یا dir)، برنامه روی پیام Entering Passive Mode هنگ می‌کند و اتصال می‌افتد! پس حتماً محدوده پورت‌های pasv_min_port و pasv_max_port را هم در فایروال و هم در فایل vsftpd.conf ست کنید.

تست اتصال 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) و باز کردن محدوده پورت‌ها
💡 ترفند کاربردی
تست زنده لاگ‌ها موقع خطایابی
اگر موقع تست اتصال کلاینت، خطا گرفتید و دلیلش را نفهمیدید، ترمینال سرور را باز کنید و لاگ‌های زنده vsftpd را با این دستور زیر نظر بگیرید:
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 به‌حداکثر برسانید و درصورت افزایش حجم داده‌ها، دیسک سرور را در لحظه و بدون قطعی بزرگ کنید.

شرکت رایانش ابری فردوسی با بهره‌گیری از سخت‌افزارهای پرچمدار 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 ارتقا یافته و تمام عبارات عبوری و فایل‌ها به‌صورت رمزنگاری‌شده منتقل می‌شوند.

یاسین اسدی

اگه می‌خوای زندگیت تغیر کنه کتاب نخون؛ نوشته‌های منو بخون!
پست های مرتبط

کاهش هزینه پهنای باند با ۶ روش کاربردی و مؤثر

کاهش هزینه پهنای باند بدون افت سرعت سایت یا محدود کردن کاربران، با بهینه‌سازی مصرف ترافیک سرور امکان‌پذیر است. استفاده از CDN، فشرده‌سازی فایل‌ها با Gzip و Brotli، فعال‌سازی کش، بهینه‌سازی تصاویر و کنترل ترافیک ربات‌ها از…

۲۶ مهر ۱۴۰۵

راه‌اندازی CRM و مراحل استقرار نرم‌افزار در سازمان

خرید لایسنس یا نصب یک برنامه، نامش راه‌اندازی CRM نیست؛ این کار فقط روشن کردن سیستم است! پیاده‌سازی واقعیِ مدیریت ارتباط با مشتری (یا Customer Relationship Management)، در واقع مهندسیِ مجددِ نحوه تعامل شما با مخاطب و…

۱۹ شهریور ۱۴۰۵

ساخت هاست دانلود و آموزش راه‌اندازی سرور دانلود اختصاصی

اگر تابه‌حال تلاش کرده باشید فایل‌های حجیم آموزشی، ویدیوها، نرم‌افزارها یا فایل‌های فروش محصولات خود را روی هاست اصلی سایت میزبانی کنید، احتمالاً خیلی زود با افت شدید سرعت سایت و پر شدن پهنای باند مواجه شده‌اید.…

۱۹ شهریور ۱۴۰۵
0 0 رای ها
به مقاله امتیاز بدید
0 نظرات