溫馨提示×

如何配置Linux VSFTP虛擬用戶

小樊
38
2025-10-22 12:40:33
欄目: 云計算

Linux VSFTP虛擬用戶配置指南

一、前置準備

  1. 安裝vsftpd
    大多數Linux發行版可通過包管理器安裝vsftpd(以CentOS為例):

    sudo yum install vsftpd -y
    

    安裝完成后,啟動服務并設置開機自啟:

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd
    
  2. 安裝必要工具
    用于創建虛擬用戶數據庫的db_load工具(屬于db4-utilsdb-util包):

    sudo yum install db4-utils -y  # CentOS
    sudo apt install db-util -y    # Ubuntu/Debian
    

二、創建虛擬用戶數據庫

  1. 準備用戶信息文件
    創建文本文件(如/etc/vsftpd/virtual_users.txt),格式為奇數行用戶名、偶數行密碼(每行一個用戶):

    sudo vi /etc/vsftpd/virtual_users.txt
    

    示例內容:

    user1
    password1
    user2
    password2
    
  2. 生成數據庫文件
    使用db_load將文本文件轉換為哈希格式的數據庫(避免明文存儲密碼):

    sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
    

    設置數據庫文件權限(僅root可讀寫):

    sudo chmod 600 /etc/vsftpd/virtual_users.db
    

三、配置PAM認證

  1. 創建PAM配置文件
    新建虛擬用戶專屬PAM文件(如/etc/pam.d/vsftpd.virtual),內容如下(注意路徑中的.db后綴需省略):

    sudo vi /etc/pam.d/vsftpd.virtual
    

    示例內容:

    auth required pam_userdb.so db=/etc/vsftpd/virtual_users
    account required pam_userdb.so db=/etc/vsftpd/virtual_users
    
  2. 修改vsftpd主配置
    編輯/etc/vsftpd.conf,指定PAM服務名:

    sudo vi /etc/vsftpd.conf
    

    添加/修改以下行:

    pam_service_name=vsftpd.virtual  # 指向自定義PAM文件
    

四、設置虛擬用戶宿主與權限

  1. 創建虛擬宿主用戶
    虛擬用戶需映射到系統用戶(僅用于權限控制,無登錄權限):

    sudo useradd -d /home/ftp_virtual -s /sbin/nologin ftp_virtual
    sudo chmod 700 /home/ftp_virtual  # 限制目錄權限
    
  2. 配置vsftpd虛擬用戶映射
    /etc/vsftpd.conf中啟用虛擬用戶功能,并關聯宿主用戶:

    guest_enable=YES                # 啟用虛擬用戶
    guest_username=ftp_virtual        # 虛擬用戶映射的系統用戶
    virtual_use_local_privs=YES     # 虛擬用戶繼承宿主用戶權限
    

五、配置用戶隔離(可選但推薦)

  1. 開啟chroot限制
    /etc/vsftpd.conf中添加以下配置,將用戶限制在自己的主目錄:

    chroot_local_user=YES           # 禁錮所有本地用戶(包括虛擬用戶)
    allow_writeable_chroot=YES      # 允許chroot目錄可寫(避免權限問題)
    
  2. 設置用戶專屬主目錄
    為每個虛擬用戶創建主目錄(以user1為例):

    sudo mkdir -p /home/ftp_virtual/user1
    sudo chown ftp_virtual:ftp_virtual /home/ftp_virtual/user1
    sudo chmod 700 /home/ftp_virtual/user1
    
  3. 配置用戶專屬設置(可選)
    若需為不同用戶設置不同權限(如禁止上傳),可創建用戶專屬配置文件:

    sudo mkdir /etc/vsftpd/vsftpd_user_conf
    sudo vi /etc/vsftpd/vsftpd_user_conf/user1
    

    示例內容(禁止上傳):

    local_root=/home/ftp_virtual/user1
    write_enable=NO
    

    /etc/vsftpd.conf中指定用戶配置目錄:

    user_config_dir=/etc/vsftpd/vsftpd_user_conf
    

六、重啟服務與測試

  1. 重啟vsftpd服務
    應用所有配置變更:

    sudo systemctl restart vsftpd
    
  2. 測試虛擬用戶登錄
    使用FTP客戶端(如FileZilla)或命令行工具測試:

    ftp localhost
    

    輸入虛擬用戶名(如user1)和密碼(如password1),驗證是否能成功登錄并訪問對應目錄。

常見問題解決

  • 問題1:登錄時報錯“500 OOPS: cannot change directory”
    原因:SELinux阻止ftp訪問用戶目錄。解決方法:

    sudo setsebool -P ftpd_disable_trans 1  # 關閉SELinux對ftp的轉換檢查
    
  • 問題2:被動模式無法連接
    原因:未配置被動模式端口或安全組未放行。解決方法:
    /etc/vsftpd.conf中添加:

    pasv_enable=YES
    pasv_min_port=30100
    pasv_max_port=30200
    pasv_address=服務器公網IP  # 云服務器需指定公網IP
    

    并在安全組中放行30100-30200端口。

通過以上步驟,即可完成Linux VSFTP虛擬用戶的配置,實現安全、隔離的FTP服務。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女