当前位置: 首页 > news >正文

Ubuntu 上安装 FTP 服务、开放指定端口并创建用户

一、安装 FTP 服务(vsftpd)

sudo apt update
sudo apt install vsftpd -y

二、修改 vsftpd 配置,使用 21000 端口

编辑配置文件:

sudo nano /etc/vsftpd.conf

修改或添加以下配置:

使用以下配置文件需要修改的地方:listen_port=21000      			    # 替换为自己的ftp端口
pasv_min_port=20009        		    # 被动模式使用的端口范围(最小端口)
pasv_max_port=20009		 			# 被动模式使用的端口范围(最大端口)
local_root=/usr/local/nginx/html    # 本地用户的根目录路径 (连接建立后默认目录)
# 是否以独立模式运行?vsftpd 可以从 inetd 启动,也可以作为独立守护进程从初始化脚本启动。
listen=YES# 此指令启用 IPv6 套接字监听。默认情况下,监听 IPv6 "any" 地址 (::) 将接受 IPv6 和 IPv4 客户端的连接。
# 不需要同时监听 IPv4 和 IPv6 套接字。如果需要(例如监听特定地址),则必须运行两个 vsftpd 实例,并使用两个配置文件。
#listen_ipv6=YES# 指定 FTP 服务监听的端口号
listen_port=21000# 启用被动模式
pasv_enable=YES
# 被动模式使用的端口范围(最小端口)
pasv_min_port=20009
# 被动模式使用的端口范围(最大端口)
pasv_max_port=20009# 是否允许匿名 FTP?(默认禁用)
anonymous_enable=NO# 是否允许本地用户登录
local_enable=YES# 是否启用任何形式的 FTP 写入命令
write_enable=YES# 本地用户的默认 umask 是 077。可以改为 022(大多数其他 FTP 服务使用 022)
#local_umask=022# 是否允许匿名用户上传文件?仅在全局写入启用时有效。还需要创建一个 FTP 用户可写的目录。
#anon_upload_enable=YES# 是否允许匿名用户创建新目录?
#anon_mkdir_write_enable=YES# 是否启用目录消息 - 远程用户进入特定目录时显示的消息
dirmessage_enable=YES# 是否使用本地时区显示目录列表时间?默认显示 GMT 时间。MDTM FTP 命令返回的时间也受此选项影响。
use_localtime=YES# 是否启用上传/下载日志记录
xferlog_enable=YES# 确保 PORT 传输连接从端口 20(ftp-data)发起
connect_from_port_20=YES# 是否将匿名用户上传的文件所有者更改为其他用户?不建议使用 "root"!
#chown_uploads=YES
#chown_username=whoever# 可以自定义日志文件路径,默认如下
#xferlog_file=/var/log/vsftpd.log# 是否使用标准 ftpd xferlog 格式记录日志?默认日志位置为 /var/log/xferlog
#xferlog_std_format=YES# 可以更改空闲会话的超时时间(秒)
#idle_session_timeout=600# 可以更改数据连接的超时时间(秒)
#data_connection_timeout=120# 建议在系统中定义一个唯一用户,FTP 服务可以将其用作完全隔离且无特权的用户
#nopriv_user=ftpsecure# 是否启用异步 ABOR 请求识别?不建议启用(代码复杂),但禁用可能会使旧版 FTP 客户端困惑
#async_abor_enable=YES# 默认情况下,服务器假装允许 ASCII 模式但实际忽略请求。启用以下选项可真正支持 ASCII 模式(不推荐,可能存在安全风险)
#ascii_upload_enable=YES
#ascii_download_enable=YES# 可以自定义登录欢迎信息
#ftpd_banner=Welcome to blah FTP service.# 可以指定禁止的匿名电子邮件地址文件,用于防止某些 DoS 攻击
#deny_email_enable=YES
# (默认如下)
#banned_email_file=/etc/vsftpd.banned_emails# 是否将本地用户限制在其主目录中?使用前请参阅 FAQ 了解风险
# chroot_local_user=YES# 允许 chroot 目录可写(需谨慎)
allow_writeable_chroot=YES# 是否将本地用户 chroot() 到其主目录?如果启用,以下列表将成为不 chroot 的用户列表
# (警告:chroot 可能非常危险。使用时确保用户对 chroot 的顶级目录没有写权限)
chroot_local_user=YES
# 本地用户的根目录路径
local_root=/usr/local/nginx/html
# 是否启用 chroot 用户列表?
#chroot_list_enable=YES
# (默认如下)
#chroot_list_file=/etc/vsftpd.chroot_list# 是否启用内置 ls 的 "-R" 选项?默认禁用以避免远程用户在大站点上引发过多 I/O
# 但某些 FTP 客户端(如 "ncftp" 和 "mirror")需要此选项
#ls_recurse_enable=YES# 自定义设置
#
# 某些 vsftpd 设置默认不匹配文件系统布局# 此选项应为一个空目录名,且 FTP 用户不可写。此目录用作安全 chroot() 隔离区
secure_chroot_dir=/var/run/vsftpd/empty# 指定 vsftpd 使用的 PAM 服务名称
pam_service_name=vsftpd# 指定用于 SSL 加密连接的 RSA 证书位置
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# 是否启用 SSL?
ssl_enable=NO# 是否启用 UTF-8 文件系统支持?
#utf8_filesystem=YES

三、创建用户 ftpuser 并设置密码


sudo adduser ftpuser
# 当提示输入密码时,输入密码Enter new UNIX password:        ← 输入密码
Retype new UNIX password:       ← 再输一遍密码Full Name []:                   ← 直接按 Enter
Room Number []:                 ← 直接按 Enter
Work Phone []:                  ← 直接按 Enter
Home Phone []:                  ← 直接按 Enter
Other []:                       ← 直接按 Enter
Is the information correct? [Y/n] ← 输入 Y 然后回车

用户目录默认是 /home/ftpuser,vsftpd 会将其作为根目录。


四、设置用户目录权限

如果需要上传文件,则需要确保 ftpuser 拥有写权限:

# 如果说我们只允许操作Nginx的/html目录, 对应着 /etc/vsftpd.conf 中的local_root配置
sudo chown -R ftpuser:ftpuser /usr/local/nginx/html

五、开放防火墙端口(21000 及被动模式端口)

如果使用的是 ufw(Ubuntu 默认防火墙),执行:

如果是阿里云等服务器需要在安全组中开放对应端口

# ftp监听端口
sudo ufw allow 21000/tcp
# 被动模式中启用范围端口, 这里使用的是20009
sudo ufw allow 20009:20009/tcp
sudo ufw reload

六、重启 vsftpd 服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

七、测试 FTP

可以通过 FileZilla 或命令行工具连接:

  • 主机:你的服务器IP
  • 端口:21000
  • 用户名:ftpuser
  • 密码:你的密码

相关文章:

  • vue3学习——组合式 API:生命周期钩子
  • 电机控制储备知识学习(一) 电机驱动的本质分析以及与磁相关的使用场景
  • FFmpeg在Android开发中的核心价值是什么?
  • 串口模块详细讲解
  • Python-简单网络编程 I
  • 论文精读:YOLO-UniOW: Efficient Universal Open-World Object Detection
  • MES管理系统构建智能制造时代下的全面质量管理体系
  • Spring事务失效的全面剖析
  • windows c++ (9) 程序内注册服务并修改登录账户
  • web 自动化之 yaml 数据/日志/截图
  • 关于github使用总结
  • GNU Screen 曝多漏洞:本地提权与终端劫持风险浮现
  • 集合-进阶
  • 生产排产系统正从传统计划工具向智能化、协同化方向演进
  • 安科瑞能量管理系统在徐州某电池厂新能源储能柜的应用
  • TDengine 做为 Spark 数据源
  • spark-local模式
  • Linux513 rsync本地传输 跨设备传输 一
  • openFeign远程调用
  • 中国版Cursor:基于CodeBuddy与EdgeOne Pages的在线键盘测试工具开发方案
  • 习近平同巴西总统卢拉共同出席合作文件签字仪式
  • 外国游客“在华扫货”热:“带空箱子到中国!”
  • 水豚“豆包”出逃已40天,扬州茱萸湾景区追加悬赏
  • 观众走入剧院空间,人艺之友一起“再造时光”
  • 外交部:中方期待印巴巩固和延续停火势头,避免冲突再起
  • 特朗普将启的中东行会如何影响伊美核谈判?专家分析