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 伺服器

核心配置檔與相關檔案

檔案用途
/etc/vsftpd/vsftpd.conf核心配置檔
/etc/vsftpd/ftpusers永久禁止登入 FTP 的系統帳號(最高優先級)
/etc/vsftpd/user_list依 userlist_deny 允許/禁止的用戶清單
/etc/vsftpd/vsftpd_conf_migrate.sh版本遷移腳本
/var/ftp預設匿名用戶根目錄

相關檔案列表


案例一:匿名用戶上傳/下載/建立目錄(內部文件交換)

需求

允許所有員工匿名上傳、下載、建立目錄,無需帳號管理。

配置

# vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
write_enable=YES

匿名啟用 匿名上傳建立目錄

目錄權限關鍵點

  • 匿名用戶家目錄(/var/ftp)權限不可為 777,建議 755
  • 在家目錄下建立專用上傳目錄(如 /var/ftp/upload),設為 chown ftp:ftp、chmod 777
  • 或使用 anon_root=/var/ftp/upload 直接指向可寫目錄

目錄權限 建立上傳目錄

SELinux 配合

# 查詢 FTP 布林值
getsebool -a | grep ftp
# 開啟匿名寫入
setsebool -P allow_ftpd_anon_write=1
# 重啟服務
service vsftpd restart

SELinux 查詢 SELinux 設定 SELinux 上下文

測試驗證

匿名登入 匿名上傳成功 匿名刪除被拒 測試結果


案例二:本地用戶隔離、網站維護專用(Web 內容同步)

需求

  • 僅允許 webuser1、webuser2 登入
  • 禁止 Shell 登入(/sbin/nologin)
  • 根目錄鎖定為 /var/www/html(網站根目錄)
  • 不可跳出該目錄

配置步驟

  1. 建立帳號: useradd -s /sbin/nologin webuser1、passwd webuser1
  2. vsftpd.conf:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_root=/var/www/html
chroot_local_user=YES
allow_writeable_chroot=YES

建立帳號 基本配置 chroot 配置

  1. SELinux: setsebool -P ftp_home_dir=1(允許存取家目錄)
  2. 目錄權限: chown webuser1:webuser1 /var/www/html、chmod 755 /var/www/html

SELinux 關閉 重啟服務 權限設定 測試登入 測試上傳 測試刪除


案例三:虛擬用戶差異化權限與限速(企業級多租戶)

場景

  • 公共下載帳號 public:唯讀、限速 500 KB/s
  • 客戶上傳帳號 vip:讀寫、限速 2 MB/s、不可刪除
  • 管理員帳號 admin:完整權限、不限速

架構設計

虛擬用戶 (PAM + Berkeley DB)
    │
    ├─ public → 映射系統用戶 ftpuser → 目錄 /var/ftp/share (500 唯讀)
    ├─ vip    → 映射系統用戶 ftpvip  → 目錄 /var/ftp/vip (700 讀寫)
    └─ admin  → 映射系統用戶 ftpadmin → 目錄 /var/ftp (700 完整)

實施步驟

1. 建立用戶資料庫

# 文字檔(奇數行用戶名,偶數行密碼)
cat > /etc/vsftpd/vusers.txt <<'EOF'
public
pass1
vip
pass2
admin
pass3
EOF

# 產生 DB
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db

用戶文字檔 產生 DB DB 權限

2. PAM 配置 /etc/pam.d/vsftpd

# 註解原內容
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers

PAM 配置

3. 建立映射系統用戶與目錄

useradd -s /sbin/nologin -d /var/ftp/share ftpuser
useradd -s /sbin/nologin -d /var/ftp/vip ftpvip
useradd -s /sbin/nologin -d /var/ftp ftpadmin

chmod -R 500 /var/ftp/share   # 唯讀
chmod -R 700 /var/ftp/vip     # 讀寫
chmod -R 700 /var/ftp         # 管理員完整

系統用戶目錄權限

4. 主配置啟用虛擬用戶與獨立配置目錄

# vsftpd.conf 關鍵段
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=NO
chroot_local_user=YES
user_config_dir=/etc/vsftpd/user_conf

# 必備 PAM 服務名
pam_service_name=vsftpd

主配置虛擬用戶 chroot 啟用 user_config_dir

5. 每用戶獨立配置檔 /etc/vsftpd/user_conf/

mkdir -p /etc/vsftpd/user_conf

# public:唯讀、限速 500 KB/s
cat > /etc/vsftpd/user_conf/public <<'EOF'
local_root=/var/ftp/share
write_enable=NO
download_enable=YES
local_max_rate=512000
EOF

# vip:讀寫、限速 2 MB/s、不可刪除
cat > /etc/vsftpd/user_conf/vip <<'EOF'
local_root=/var/ftp/vip
write_enable=YES
download_enable=YES
local_max_rate=2097152
anon_other_write_enable=NO
EOF

# admin:完整、不限速
cat > /etc/vsftpd/user_conf/admin <<'EOF'
local_root=/var/ftp
write_enable=YES
download_enable=YES
# local_max_rate=0  不限速
EOF

建立配置目錄 public 配置 vip 配置

6. 重啟驗證

service vsftpd restart

重啟服務 public 測試 public 下載限速 public 拒絕刪除 public 拒絕上傳 public 拒絕上傳2 vip 測試限速


關鍵參數總結表

參數層級說明
guest_enable全域啟用虛擬用戶
guest_username全域虛擬用戶預設映射系統用戶
virtual_use_local_privs全域NO=匿名權限基準+user_config_dir覆寫;YES=本地用戶權限基準
user_config_dir全域每用戶覆寫配置目錄(檔名=虛擬用戶名)
local_root用戶指定用戶根目錄(chroot 環境)
write_enable用戶總寫入開關
download_enable用戶下載開關
local_max_rate用戶限速 (Bytes/sec)
anon_other_write_enable用戶刪除/重命名等其他寫入
chroot_local_user全域強制所有用戶限制在家目錄
allow_writeable_chroot全域允許 chroot 目錄可寫 (vsftpd 3.0+)

生產環境優化清單

  • TLS/SSL 加密: ssl_enable=YES、配置憑證、force_local_logins_ssl=YES
  • 被動模式埠口固定: pasv_enable=YES、pasv_min_port=50000、pasv_max_port=51000、防火牆同步開放
  • 連線保護: max_clients=200、max_per_ip=10、idle_session_timeout=600、data_connection_timeout=300
  • 日誌審計: xferlog_enable=YES、xferlog_std_format=YES、log_ftp_protocol=YES
  • IP 存取控制: tcp_wrappers=YES + /etc/hosts.allow/hosts.deny
  • SELinux: setsebool -P ftp_home_dir=1、setsebool -P allow_ftpd_full_access=1(視需求)
  • 監控告警: 收集 xferlog、系統日誌,監控連線數、錯誤率、頻寬使用率

本文從三個實戰案例層層遞進,完整展示了 vsftpd 從匿名共享、本地用戶隔離到虛擬用戶多租戶差異化權限與限速的企業級部署全景。掌握 user_config_dir、PAM+DB 認證、SELinux 布林值、chroot 隔離等核心技術,即可應對各類 FTP 服務構建需求。

Copyright © Windows教程網 All Rights Reserved