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

RHEL 5.5 Vsftpd 2.0.5 虛擬用戶差異化權限配置完整實戰

編輯:FTP 伺服器

實驗環境

元件版本/規格
作業系統RHEL 5.5 (Red Hat Enterprise Linux)
FTP 服務vsftpd 2.0.5
認證方式PAM + Berkeley DB (虛擬用戶)
核心需求建立多組虛擬帳號,分別賦予「唯讀下載」「僅上傳」「完整讀寫」不同權限

系統版本確認 vsftpd 版本確認

架構設計

虛擬用戶 (PAM 認證)
    │
    ├─ ws6l (唯讀下載) → 映射系統用戶 ftp → 目錄 /var/ftp/ws6l (權限 500)
    ├─ upload (僅上傳) → 映射系統用戶 ftp → 目錄 /var/ftp (權限 700)
    └─ admin (完整權限) → 映射系統用戶 ftp → 目錄 /var/ftp (權限 700)

詳細配置步驟

1. 安裝 vsftpd 並備份原配置

yum install -y vsftpd db4-utils   # db4-utils 提供 db_load 指令
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

備份配置檔 修改配置檔

2. 修改主配置檔 /etc/vsftpd/vsftpd.conf

關鍵設定:

# 基礎設定
anonymous_enable=NO           # 關閉匿名登入
local_enable=YES              # 允許本地/虛擬用戶登入
write_enable=YES              # 全域開啟寫入權限(虛擬用戶個別再細分)
ascii_upload_enable=YES       # 允許 ASCII 模式上傳
ascii_download_enable=YES     # 允許 ASCII 模式下載

# 虛擬用戶核心設定
guest_enable=YES              # 啟用虛擬用戶功能
guest_username=ftp            # 虛擬用戶映射的系統用戶
pam_service_name=vsftpd       # PAM 服務名稱(需與 /etc/pam.d/vsftpd 對應)
virtual_use_local_privs=NO    # 虛擬用戶使用匿名用戶權限基準,再由 user_config_dir 覆寫

# 每用戶獨立配置目錄
user_config_dir=/etc/vsftpd/users

關閉匿名登入 開啟 ASCII 上傳下載 虛擬用戶核心配置

3. 建立虛擬用戶帳密文字檔並產生 DB

# 建立帳密檔(奇數行用戶名,偶數行密碼)
cat > /etc/vsftpd/vm_user.txt <<'EOF'
ws6l
password1
upload
password2
admin
password3
EOF

# 產生 Berkeley DB 檔案
db_load -T -t hash -f /etc/vsftpd/vm_user.txt /etc/vsftpd/vm_user.db

# 設定權限 600(僅 root 可讀寫,防洩漏)
chmod 600 /etc/vsftpd/vm_user.db

建立帳密文字檔 帳密檔內容 產生 DB 檔案 修改 DB 權限

4. 配置 PAM 認證檔 /etc/pam.d/vsftpd

註解原內容,新增:

auth required pam_userdb.so db=/etc/vsftpd/vm_user
account required pam_userdb.so db=/etc/vsftpd/vm_user

注意: db= 參數不含 .db 副檔名,且必須與第 3 步產生的檔案基底名稱一致。

修改 PAM 配置 PAM 配置內容

5. 建立映射系統用戶 ftp 並設定基礎目錄權限

# 確認 ftp 用戶存在(vsftpd 安裝通常自動建立)
id ftp

# 設定基礎目錄 /var/ftp 歸屬與權限
chown -R ftp:ftp /var/ftp
chmod 700 /var/ftp

設定 ftp 用戶目錄 chown/chmod 指令

6. 建立每用戶獨立配置檔(/etc/vsftpd/users/)

mkdir -p /etc/vsftpd/users

用戶 ws6l(唯讀下載)

# 建立專屬目錄
mkdir -p /var/ftp/ws6l
chown ftp:ftp /var/ftp/ws6l
chmod 500 /var/ftp/ws6l   # 唯讀+進入,不可寫入

# 建立配置檔 /etc/vsftpd/users/ws6l
cat > /etc/vsftpd/users/ws6l <<'EOF'
local_root=/var/ftp/ws6l
write_enable=NO
download_enable=YES
EOF

ws6l 配置 ws6l 權限設定 建立 ws6l 目錄

用戶 upload(僅上傳)

# 共用 /var/ftp 根目錄,不需另建子目錄
cat > /etc/vsftpd/users/upload <<'EOF'
local_root=/var/ftp
write_enable=YES
download_enable=NO
# 可進一步限制:anon_upload_enable=YES, anon_mkdir_write_enable=NO 等
EOF

用戶 admin(完整讀寫)

cat > /etc/vsftpd/users/admin <<'EOF'
local_root=/var/ftp
write_enable=YES
download_enable=YES
EOF

新增 upload/admin 帳密 重新產生 DB 修改 DB 權限 建立 upload/admin 配置檔 upload 配置內容 admin 配置內容

7. 重啟服務並驗證

service vsftpd restart
chkconfig vsftpd on

測試指令(使用 lftp 或 FileZilla)

# ws6l 測試:應可下載、列表,不可上傳/刪除/建立目錄
lftp -u ws6l,password1 localhost

# upload 測試:應可上傳、建立目錄,不可下載/刪除
lftp -u upload,password2 localhost

# admin 測試:完整讀寫刪除權限
lftp -u admin,password3 localhost

關鍵權限控制參數對照表

參數作用層級說明
write_enable全域/用戶總開關,NO 時所有寫入操作(上傳、刪除、重命名、建立目錄)均失效
download_enable用戶YES 允許下載,NO 禁止下載(目錄列表不受影響)
anon_upload_enable用戶允許上傳檔案(需 write_enable=YES)
anon_mkdir_write_enable用戶允許建立目錄(需 write_enable=YES)
anon_other_write_enable用戶允許刪除、重命名等其他寫入操作(需 write_enable=YES)
local_root用戶指定用戶登入後的根目錄(chroot 環境)
chroot_local_user全域YES 將所有本地/虛擬用戶限制在各自 home 目錄

常見坑點與排查

  • 530 Login incorrect: PAM 檔名稱與 pam_service_name 不一致、DB 路徑錯誤、db= 參數帶了 .db 後綴。
  • 500 OOPS: cannot change directory: SELinux 阻擋 → setsebool -P ftp_home_dir=1 或設定正確 context(public_content_rw_t)。
  • 虛擬用戶權限不生效: user_config_dir 路徑錯誤、配置檔名稱與虛擬用戶名不完全一致(區分大小寫)。
  • 上傳後檔案權限異常: 檢查 local_umask、file_open_mode 設定。

安全加固建議

  1. 啟用 TLS/SSL 加密傳輸(ssl_enable=YES、配置憑證)。
  2. 限制來源 IP(tcp_wrappers=YES + /etc/hosts.allow / hosts.deny)。
  3. 設定連線數與頻寬限制(max_clients、max_per_ip、local_max_rate、anon_max_rate)。
  4. 啟用詳細傳輸日誌(xferlog_enable=YES、xferlog_std_format=YES、log_ftp_protocol=YES)。
  5. 定期審核虛擬用戶帳號,停用不用帳號。

本實戰完整展示了 RHEL 5.5 環境下,利用 vsftpd + PAM + Berkeley DB 實現虛擬用戶差異化權限控制的全流程。此架構可平滑遷移至 RHEL 6/7/8、CentOS、Rocky Linux 等相容發布版,只需注意套件管理器(yum/dnf)與 SELinux 策略的版本差異。

Copyright © Windows教程網 All Rights Reserved