在 Linux 上搭建 FTP 服务器并设置用户,常见做法是使用 vsftpd(最流行、稳定)。下面以 vsftpd + 系统用户 / 虚拟用户 两种方式说明。
# Debian / Ubuntu
sudo apt update
sudo apt install vsftpd
# CentOS / Rocky / Alma
sudo yum install vsftpd
sudo systemctl enable vsftpd
sudo systemctl start vsftpd
sudo useradd -m ftpuser
sudo passwd ftpuser
sudo mkdir /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp
编辑:
sudo vim /etc/vsftpd.conf
关键配置:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
sudo systemctl restart vsftpd
此时可用 ftpuser 登录 FTP。
sudo apt install vsftpd libpam-pwdfile # Ubuntu
# CentOS
sudo yum install vsftpd pam
sudo mkdir /etc/vsftpd
sudo vim /etc/vsftpd/vusers.txt
内容:
user1
password1
user2
password2
sudo db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db
sudo vim /etc/pam.d/vsftpd
清空后写入:
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
sudo useradd -d /home/ftpdata -s /sbin/nologin ftpvuser
sudo mkdir /home/ftpdata
sudo chown ftpvuser:ftpvuser /home/ftpdata
anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=YES
guest_username=ftpvuser
virtual_use_local_privs=YES
chroot_local_user=YES
allow_writeable_chroot=YES
sudo systemctl restart vsftpd
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
vsftpd 配置:
pasv_min_port=30000
pasv_max_port=31000
allow_writeable_chroot=YESwrite_enable=YES如果你告诉我:
我可以给你一份可直接用的配置文件。