ubuntu 搭建FTP服务,接收部标机历史音视频上报服务器

发布于:2025-05-22 ⋅ 阅读:(21) ⋅ 点赞:(0)

1.安装vsftpd

1.1.安装命令

sudo apt update
sudo apt install vsftpd

1.2.备份原始配置文件

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

1.3.配置 vsftpd

编辑配置文件 /etc/vsftpd.conf

sudo vim /etc/vsftpd.conf

将以下参数修改为对应值:

# 基本设置
anonymous_enable=NO           # 禁用匿名登录
local_enable=YES              # 允许本地用户登录
write_enable=YES              # 启用写入权限
local_umask=022               # 设置文件创建掩码
dirmessage_enable=YES         # 启用目录消息
use_localtime=YES             # 使用本地时间
xferlog_enable=YES            # 启用传输日志
connect_from_port_20=YES      # 启用端口 20 用于数据传输

# 增强安全性
chroot_local_user=YES         # 限制用户在其主目录内
allow_writeable_chroot=YES    # 允许可写的 chroot 目录
pasv_enable=YES               # 启用被动模式
pasv_min_port=40000           # 被动模式最小端口
pasv_max_port=40100           # 被动模式最大端口
ssl_enable=YES                # 启用 SSL/TLS
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

1.4.创建 FTP 用户

# 创建用户并设置密码
sudo adduser ftpuser
# 按照提示设置密码和其他信息

# 创建 FTP 目录
sudo mkdir -p /home/ftpuser/ftp/files
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod -R 755 /home/ftpuser/ftp

1.5. 配置防火墙

# 开放 FTP 端口
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp  # 被动模式端口范围
sudo ufw allow OpenSSH          # 确保 SSH 仍可访问
sudo ufw enable                  # 启用防火墙

1.6. 重启 vsftpd 服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd    # 设置开机自启

1.7.验证安装

可以使用命令行工具或图形化客户端验证 FTP 服务器是否正常工作:

 2.常见问题及处理

2.1.限制FTP账户只能访问当前主目录及其下级目录

2.1.1. 启用 chroot 限制

编辑 /etc/vsftpd.conf,确保以下参数设置正确:

sudo vim /etc/vsftpd.conf

修改下面的配置 

chroot_local_user=YES        # 限制所有本地用户在其主目录内
allow_writeable_chroot=YES   # 允许主目录可写(需 vsftpd 3.0.2+ 版本)

说明

  • chroot_local_user=YES:将所有本地用户限制在其主目录中(类似沙盒环境)。
  • allow_writeable_chroot=YES:若用户主目录可写(如 755 或 775 权限),需启用此选项,否则 FTP 连接会被拒绝。

2.1.2. 配置用户主目录权限

确保用户主目录不可写(父目录权限为 755),但子目录可写(如 775

# 假设用户主目录为 /home/ftpuser
sudo chmod 755 /home/ftpuser        # 主目录不可写(防止跳出)
sudo mkdir /home/ftpuser/files      # 创建可写子目录
sudo chmod 775 /home/ftpuser/files  # 赋予用户组写权限
sudo chown ftpuser:ftpuser /home/ftpuser/files  # 设置归属

2.1.3.重启 vsftpd 服务

sudo systemctl restart vsftpd

2.2.chroot_local_user=YES设置这个后xftp无法连接

当设置 chroot_local_user=YES 后无法使用 Xftp 连接,通常是由于 vsftpd 的 chroot 限制与用户主目录权限配置冲突导致的。

2.2.1. 核心问题分析

vsftpd 默认要求被 chroot 的用户主目录不可写(权限 755),否则会拒绝连接(错误码 500)。若你的用户主目录需要可写(如上传文件),需额外配置:

# 编辑 /etc/vsftpd.conf
allow_writeable_chroot=YES  # 允许被 chroot 的目录可写(需 vsftpd 3.0.2+ 版本)

2.2.2. 检查 vsftpd 版本

确认你的 vsftpd 版本是否支持 allow_writeable_chroot

vsftpd -v
# 若版本 < 3.0.2,需升级 vsftpd 或调整目录结构

2.2.3. 重启服务

sudo systemctl restart vsftpd

3.部标机上报历史音视频到服务器

3.1.上报音视频命令0x9206

 指令示例解释:

7E
9206
006A
018026966027
1835
0E --服务器长度,14个字节
3132342E3232332E36302E323334 --服务器的地址124.223.60.234
0015 --服务器端口号21
08 --用户名长度,8个字节
FFFFFFFFFFFFFFFF --这里我用FF替代了,注意要输入自己实际的FTP用户名
08 --密码长度,8个字节
FFFFFFFFFFFFFFFF --这里我用FF替代了,注意要输入自己实际的FTP密码
2D --文件上传目录长度,45个字节
2F31383032363936363032372F3231453937313632363544413439383342313131373145424235314339363339 --/18026966027/21E9716265DA4983B11171EBB51C9639,注意这是在你的FTP主目录上追加的
01 --视频通道号,01
250521141359 --视频的开始时间
250521151644 --视频的结束时间
0000000000000000 --报警标志
00 --默认音视频
00 --默认主码流或者子码流
00 --默认主存储器或者灾备存储器
07 --任务执行条件,默认全开
AB
7E

3.2.音视频控制命令0x9207

因为比较简单,这里就不进行拆包分析了。

3.3.上报完毕,设备主动发送命令0x1206

4.系统呈现

查看历史操作记录以及正在执行中的任务

远程查看已经上报到服务器上的音视频文件,并支持预览与下载