需完成服务安装、用户权限设定、网络端口放行三步闭环:一、apt安装vsftpd并启用启动;二、创建nologin用户,配置chroot_local_user=YES与allow_writeable_chroot=YES,加入userlist白名单;三、ufw放行21及21000–21100端口,FileZilla客户端须设GBK字符集。

在统信UOS系统中配置可用的FTP文件传输服务器,需完成服务安装、用户权限设定、网络端口放行三步闭环,跳过任一环节都将导致客户端连接失败或上传中断;若仅执行安装却未启用chroot写入限制,FileZilla连接后会报“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”错误。
安装并启用vsftpd服务
打开终端,执行系统源同步:sudo apt update。
安装vsftpd服务端:sudo apt install vsftpd -y。注意:必须用apt,若误用rpm或yum会触发包管理器冲突导致后续无法修复。
安装完成后立即启用开机自启并启动服务:sudo systemctl enable vsftpd && sudo systemctl start vsftpd。
验证服务已监听21端口:sudo ss -tlnp | grep :21,输出中必须含“vsftpd”进程,否则说明服务未真正运行,不能继续下一步。
配置本地授权用户(生产环境推荐)
该方式为安全底线,每个用户绑定独立家目录,配合chroot可彻底阻断越权访问风险。切勿复用已有系统账户(如admin或root),必须新建专用FTP用户。
创建无登录shell的专用用户:sudo useradd -d /srv/ftp/testuser -s /usr/sbin/nologin testuser。
设置密码:echo "testuser:UosFtp2026!" | sudo chpasswd。
创建用户家目录并赋权:sudo mkdir -p /srv/ftp/testuser && sudo chown testuser:testuser /srv/ftp/testuser && sudo chmod 755 /srv/ftp/testuser。
编辑配置文件,在末尾添加以下四行(缺一不可):
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
userlist_enable=YES
【allow_writeable_chroot=YES是强制项】——vsftpd 3.0.5+版本默认禁止chroot目录可写,但FileZilla等客户端要求该目录可写才能上传,跳过此项会导致“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”错误。
将用户名加入白名单:echo "testuser" | sudo tee -a /etc/vsftpd.user_list。
调整超时与被动模式参数(大文件传输必需)
编辑主配置文件:sudo nano /etc/vsftpd.conf。
在文件末尾追加以下五行(顺序不限,但内容不可少):
idle_session_timeout=600
data_connection_timeout=300
timeout_idle=600
pasv_min_port=21000
pasv_max_port=21100
这组参数将空闲会话超时从默认的300秒延长至10分钟,数据通道超时设为5分钟,同时划定被动模式端口池——若不设此范围,客户端在NAT或防火墙后将无法建立数据连接,大文件必然失败。
放行防火墙端口
检查ufw是否启用:sudo ufw status。
若显示“Status: active”,则执行:sudo ufw allow 21 → sudo ufw allow 21000:21100/tcp。
若显示“Status: inactive”,跳过本节。
重启服务并验证连接
执行:sudo systemctl restart vsftpd。
在另一台设备上启动FileZilla客户端,点击“站点管理器”→“新站点”,填写服务器IP、端口21、协议选“FTP - 明文”、登录类型选“正常”,输入testuser和密码UosFtp2026!。
关键操作:切换到“字符集”选项卡,取消勾选“强制UTF-8”,下拉选择GBK。
点击“连接”,观察消息日志区出现“状态:已连接”及目录列表成功加载。











