关于FTP 实操

675 阅读2分钟

Debian 上搭建一个 FTP 服务器

安装 vsftpd

首先,更新包列表并安装 vsftpd (Very Secure FTP Daemon)

sudo apt update   # 更新apt的包
sudo apt install vsftpd # 安装vsftpd

配置 vsftpd

打开配置文件进行编辑:

# 禁用匿名访问
anonymous_enable=NO

# 启用本地用户访问
local_enable=YES

# 允许本地用户进行写操作
write_enable=YES

# 设置本地用户上传文件的遮罩
local_umask=022

# 启用 chroot 以限制用户到其主目录
chroot_local_user=YES

# 禁用 ASCII 模式传输(可选)
ascii_upload_enable=NO
ascii_download_enable=NO

# 其他有用的选项
ftpd_banner=Welcome to FTP service.
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# 被动模式设置
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=172.18.6.66

# 设置用户访问列表
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

创建 FTP 用户

如果需要为 FTP 服务创建专用用户

sudo adduser ftpuser

配置用户目录权限

为 FTP 用户设置目录权限。例如,为 ftpuser 设置 home 目录:

sudo mkdir /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp
sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files

启动 vsftpd 服务

重启 vsftpd 服务以应用更改:

sudo systemctl restart vsftpd
sudo systemctl status vsftpd

对外开放服务

使用iptables:

sudo iptables -I INPUT -p tcp --dport 21 -j ACCEPT  # 开放 FTP 控制端口(21)
sudo iptables -I INPUT -p tcp --dport 40000:50000 -j ACCEPT  # 开放被动模式端口范围(40000-50000)
sudo iptables -I INPUT -p tcp --dport 20 -j ACCEPT # 开放 FTP 数据端口(20

使用FileZilla 做 FTP 客户端

下载链接:filezilla-project.org/download.ph…

image.png

问题

500 OOPS: cannot read user list file:/etc/vsftpd.user_list 错误: 严重错误: 无法连接到服务器

问题原因:该错误表示 vsftpd 配置文件中提到的用户列表文件 /etc/vsftpd.user_list 不存在或不可读。所以需要创建该文件以及写入用户名,并在配置文件中加入对应配置

解决:

vi /etc/vsftpd.user_list
写入 ftpuser

给/etc/vsftp.conf 中加入
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

500 OOPS: vsftpd: refusing to run with writable root inside chroot() 错误: 严重错误: 无法连接到服务器

问题原因:这个错误通常是由于 vsftpd 默认设置不允许用户的主目录具有写权限(可写)时使用 chroot。为了解决这个问题,我们可以修改 vsftpd 配置文件,或者调整用户的主目录权限。

解决:

调整用户主目录权限
sudo mkdir /home/ftpuser/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/uploads
sudo chmod a-w /home/ftpuser