linux搭建ftp服务

本地用户模式

安装vsftpd

sudo apt update && sudo apt install vsftpd
sudo systemctl status vsftpd

配置vsftpd

  1. 编辑/etc/vsftpd.conf

    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    chroot_local_user=YES
    allow_writeable_chroot=YES
    pasv_min_port=30000
    pasv_max_port=31000
    userlist_enable=YES
    userlist_file=/etc/vsftpd.user_list
    userlist_deny=NO
    listen_port=2121
    no_anon_password=YES
    listen=YES
  2. 创建ftp用户

    sudo useradd -m -d /home/ftpuser -s /bin/bash ftpuser
    sudo passwd ftpuser
  3. 将用户加入白名单

    echo "ftpuser" | sudo tee -a /etc/vsftpd.user_list
  4. 设置目录权限

    sudo mkdir /home/ftpuser/ftp  # 创建FTP根目录
    sudo chown ftpuser:ftpuser /home/ftpuser/ftp
    sudo chmod 755 /home/ftpuser/ftp  # 限制权限
  5. 开启防火墙端口

    sudo ufw allow 2121
    sudo ufw allow 30000:31000/tcp
    sudo ufw reload  # 重新加载规则
  6. 重启vsftp服务

虚拟用户模式

安装vsftpd

sudo apt update && sudo apt install vsftpd
sudo systemctl status vsftpd

创建虚拟用户数据库

  1. 生成用户密码文件,最后一行需回车

    // file: loguser.txt
    ftpuser
    ftppass
  2. 生成数据库

    sudo apt install db-util
    sudo db_load -T -t hash -f loguser.txt /etc/vsftpd_login.db
    sudo chmod 600 /etc/vsftpd_login.db

配置PAM文件

  1. 配置/etc/pam.d/vsftpd.vu文件添加到头两行。

    auth sufficient pam_userdb.so db=/etc/vsftpd_login
    account sufficient pam_userdb.so db=/etc/vsftpd_login

为虚拟用户创建本地系统用户

sudo useradd -m -d /home/vsftpd -s /bin/false vsftpd
sudo chown vsftpd:vsftpd /home/vsftpd

配置vsftpd.conf文件

listen=YES
anonymous_enable=NO
write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
pasv_min_port=30000
pasv_max_port=31000
listen_port=2121
allow_writeable_chroot=YES

权限配置

  1. 根据user_config_dir=/etc/vsftpd_user_conf创建相应配置文件

    sudo mkdir /etc/vsftpd_user_conf
    cd /etc/vsftpd_user_conf 
    sudo touch ftpuser
  2. 修改/etc/vsftpd_user_conf/ftpuser文件

    write_enable=YES
    anon_world_readable_only=NO 
    anon_upload_enable=YES 
    anon_mkdir_write_enable=YES 
    anon_other_write_enable=YES 
    local_root=/home/vsftpd/ftpuser

重启vsftp服务