乐于分享
好东西不私藏

【信创】麒麟V10 -FTP 服务部署文档(vsftpd)

【信创】麒麟V10 -FTP 服务部署文档(vsftpd)

【信创】麒麟V10 -FTP 服务部署文档(vsftpd)

适用版本:vsftpd 3.0.3 | 系统:Linux (aarch64 / ky10) | 模式:被动模式


一、环境信息

项目
软件
vsftpd 3.0.3
安装方式
RPM 包安装
运行模式
独立模式(standalone)
传输模式
被动模式(PASV)
命令端口
21/tcp
被动端口范围
30000 - 31000/tcp
FTP 根目录
/data/ftp
FTP 用户
ftpuser

二、安装

上传并安装 RPM

# 将 vsftpd-3.0.3-30.ky10.aarch64.rpm 上传到服务器 /tmp/ 目录cd /tmprpm -ivh vsftpd-3.0.3-30.ky10.aarch64.rpm

如果提示依赖问题,使用 yum localinstall vsftpd-3.0.3-30.ky10.aarch64.rpm 自动解决。


三、配置文件

3.1 配置文件位置

/etc/vsftpd/vsftpd.conf

3.2 完整配置及说明

# === 访问控制 ===anonymous_enable=NO# 禁止匿名登录local_enable=YES# 允许本地用户登录userlist_enable=YES# 启用用户列表控制# === 读写权限 ===write_enable=YES# 允许上传文件local_umask=022# 上传文件权限掩码(755)# === 用户隔离 ===chroot_local_user=YES# 将用户锁定在自己的 home 目录allow_writeable_chroot=YES# 允许在锁定目录中写入# === 运行模式 ===listen=YES# 独立运行模式(仅 IPv4)listen_ipv6=NO# 不监听 IPv6pam_service_name=vsftpd           # PAM 认证服务名# === 被动模式 ===pasv_enable=YES# 开启被动模式pasv_min_port=30000# 被动模式端口下限pasv_max_port=31000# 被动模式端口上限# === 日志与连接 ===dirmessage_enable=YES# 进入目录时显示消息xferlog_enable=YES# 记录上传/下载日志xferlog_std_format=YES# 使用标准 xferlog 格式connect_from_port_20=YES# PORT 模式数据连接使用 20 端口

四、环境配置

4.1 创建 FTP 根目录

mkdir -p /data/ftpchmod 755 /data/ftp

4.2 创建 FTP 用户

useradd -s /sbin/nologin -d /data/ftp ftpuserpasswd ftpuser                    # 设置密码# 目录归属chown ftpuser:ftpuser /data/ftp

4.3 允许 nologin 用户登录 FTP

echo"/sbin/nologin" >> /etc/shells

4.4 开放防火墙端口

# FTP 命令端口firewall-cmd --permanent --zone=public --add-port=21/tcp# 被动模式数据端口(必须开!)firewall-cmd --permanent --zone=public --add-port=30000-31000/tcpfirewall-cmd --reload

五、启动与管理

5.1 启动服务

systemctl start vsftpd

5.2 设置开机自启

systemctl enable vsftpd

5.3 查看状态

systemctl status vsftpd

5.4 重启服务

systemctl restart vsftpd

5.5 停止服务

systemctl stop vsftpd

六、验证测试

6.1 本机 curl 测试

# 查看目录(空目录无输出即正常)curl -u "ftpuser:密码" ftp://127.0.0.1/# 创建测试文件后再次查看echo"hello ftp" > /data/ftp/test.txtcurl -u "ftpuser:密码" ftp://127.0.0.1/

期望:显示 test.txt

6.2 远程上传测试

在另一台服务器上执行:

# 创建测试文件echo"upload test" > /tmp/ftp_test.txt# 使用 curl 上传curl -T /tmp/ftp_test.txt -u "ftpuser:密码" ftp://FTP服务器IP/

回到 FTP 服务器验证:

ls -la /data/ftp/ftp_test.txtcat /data/ftp/ftp_test.txt

6.3 Windows 资源管理器测试

在 Windows 资源管理器地址栏输入:

ftp://服务器IP

输入 ftpuser 的用户名和密码,应该能看到目录内容并拖拽文件。


七、配置文件生效流程

上传配置文件到 /etc/vsftpd/vsftpd.conf           │           ▼   systemctl restart vsftpd           │           ▼    firewall-cmd 开放 21 + 30000-31000           │           ▼       curl 测试连接

八、常见问题

问题
原因
解决
530 Access denied
用户密码错误或 shell 不在允许列表
echo "/sbin/nologin" >> /etc/shells
530 Login incorrect
用户在黑名单中
检查 /etc/vsftpd/user_list,注释掉该用户
能登录但列不出目录
被动端口未开放
firewall-cmd --add-port=30000-31000/tcp
500 OOPS: vsftpd: refusing to run with writable root
根目录可写但未配置 allow_writeable_chroot
配置里加上 allow_writeable_chroot=YES
Permission denied
 上传失败
目录归属不对
chown ftpuser:ftpuser /data/ftp

九、安全建议

配置
说明
anonymous_enable=NO
必须用账号密码,防止匿名访问
chroot_local_user=YES
用户只能在自己的根目录操作,无法访问系统其他文件
nologin
 shell
FTP 用户无法 SSH 登录服务器
被动端口限制
只开放 30000-31000,缩小防火墙暴露面
userlist_enable=YES
可通过 /etc/vsftpd/user_list 精确控制谁能登录

喜欢我的文章点点关注⭐