Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> FTP 伺服器

vsFTPd 入門完全指南:從安裝到進階配置實戰

編輯:FTP 伺服器

前言

vsFTPd(Very Secure FTP Daemon)是 Linux 發行版中最受推崇的 FTP 服務器軟體,以輕量、高效、安全著稱。本文面向初學者,涵蓋用戶管理基礎、安裝方式、服務啟停、防火牆/SELinux 衝突排除、常見錯誤修復、核心配置檔解析,以及匿名/本地用戶權限、虛擬路徑、日誌、歡迎訊息、連線數與速度限制、chroot 限制、IP 綁定等實戰技巧。

一、認識 FTP 用戶管理基礎

vsFTPd 預設依據 /etc/passwd 與 /etc/group 管理用戶,**務必先掌握 Linux 用戶/群組管理**,否則遇到問題時將無從下手。

1. 匿名用戶機制

  • 匿名登入時,用戶名與密碼皆為 ftp。
  • 系統中對應帳號範例:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    • /sbin/nologin 表示該帳號**無法登入系統 Shell**,僅供 FTP 使用,提高安全性。
    • 家目錄預設為 /var/ftp。
  • 對應群組:ftp:x:50:(GID 需與用戶一致)。

注意:/etc/passwd 與 /etc/group 中的 ftp 用戶/群組**不可刪除**,但可修改家目錄、UID/GID 等屬性。

二、vsFTPd 安裝

強烈建議使用發行版套件管理器安裝(約 2 分鐘),避免手動編譯源碼的複雜度。

# Fedora / RedHat / CentOS
yum install vsftpd

# Debian / Ubuntu
apt-get install vsftpd

# RPM 通用
rpm -ivh vsftpd*.rpm

若必須編譯安裝(以 vsftpd-2.0.3 為例):

tar zxvf vsftpd-2.0.3.tar.gz
cd vsftpd-2.0.3
make && make install
cp vsftpd.conf /etc
echo "listen=yes" >> /etc/vsftpd.conf
# RPM 系統需刪除 /etc/xinetd.d/vsftpd 並重啟 xinetd
/etc/init.d/xinetd restart

本文統一採用獨立運行模式,不使用 xinetd。

三、服務啟動、停止與狀態檢查

通用方法

# 啟動 (需 root)
/usr/sbin/vsftpd &          # 或 /usr/local/sbin/vsftpd &

# 檢查進程
pgrep vsftpd                # 顯示 PID 即運行中

# 停止
pkill vsftpd
pgrep vsftpd                # 無輸出即已停止

Fedora/RedHat/CentOS 服務腳本

/etc/init.d/vsftpd start
/etc/init.d/vsftpd restart
/etc/init.d/vsftpd stop

四、防火牆與 SELinux 關鍵設定

**最常見問題**:服務啟動正常但無法連線、或無法上傳,多半是防火牆或 SELinux 攔截。

  • 防火牆:執行 system-config-securitylevel-tui 開放 FTP,或直接清空規則 iptables -F(測試用)。
  • SELinux:建議設為 Disabled 或 Permissive。
    vim /etc/selinux/config
    SELINUX=disabled  # 修改後需重啟系統
    

五、經典錯誤:500 OOPS: refusing to run with writable anonymous root

**原因**:匿名用戶家目錄權限過於開放(如 chmod 777 /var/ftp)。vsFTPd 基於安全拒絕啟動。

**修復**:

# 查看 ftp 家目錄
grep ftp /etc/passwd
# 輸出範例:ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin

# 修正權限
chown root:root /var/ftp
chmod 755 /var/ftp

# 若需匿名上傳,在家目錄下建立子目錄並開放權限
mkdir /var/ftp/pub
chmod 777 /var/ftp/pub
# 並修改 vsftpd.conf 開啟匿名寫入權限(見下文)

六、核心配置檔 vsftpd.conf 解析

  • 位置:/etc/vsftpd.conf 或 /etc/vsftpd/vsftpd.conf
  • 每行一條規則,# 開頭為註解/停用。
  • **修改後必須重啟服務生效**。

七、常用功能實戰配置

1. 匿名上傳/下載

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

# 在 ftp 家目錄建立可寫入目錄
mkdir /var/ftp/pub
chmod 777 /var/ftp/pub

2. 新增本地虛擬用戶(無 Shell 登入權限)

# 建立用戶 beinan,家目錄 /opt/beinan,群組 ftp,禁止登入 Shell
adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
passwd beinan

# vsftpd.conf 確保啟用
local_enable=YES
write_enable=YES
local_umask=022

3. 虛擬路徑映射

將 /mnt/LinG/WinSoft 映射到 FTP 目錄 /var/ftp/WinSoft:

mkdir /var/ftp/WinSoft
mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft

4. 啟用傳輸日誌

xferlog_file=/var/log/vsftpd.log

5. 自訂歡迎訊息

dirmessage_enable=YES
message_file=.message
# 在各用戶家目錄放置 .message 檔案
echo -e "歡迎來到 LinuxSir FTP\n這裡提供最真誠的幫助" > /var/ftp/.message

6. 更改 ftp 用戶家目錄(解決磁碟空間不足)

# 修改 /etc/passwd 中 ftp 那行的家目錄欄位
ftp:x:14:50:FTP User:/opt/ftp:/sbin/nologin

mkdir /opt/ftp
chown root:root /opt/ftp
chmod 755 /opt/ftp

7. 限制總連線數與單 IP 連線數

max_clients=100
max_per_ip=5

8. 限制傳輸速度

# 單位為 Bytes/秒。80 KB/s = 81920
anon_max_rate=81920
local_max_rate=81920

9. 選擇性 chroot 限制用戶在家目錄

# 建立名單檔
touch /etc/vsftpd.chroot_list
echo -e "beinan\nnanbei" > /etc/vsftpd.chroot_list

# vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

**一刀切限制所有用戶**:chroot_local_user=YES

10. 綁定特定 IP

# vsftpd.conf 僅監聽內網 IP
listen_address=192.168.0.2
Copyright © Windows教程網 All Rights Reserved