uFTP-Linux下FTPServer实现

一、介绍

uFTP服务器是一个开源的,可移植的,轻量级的FTP服务器,用C编写,适用于Unix / Linux和POSIX兼容操作系统。uFTP服务器与所有Linux发行版兼容,它可以在各种架构中运行,包括x86,x64,ARM等。

特点:

  • C语言编写
  • 易于安装配置到arm-linux
  • 实现了Server常用功能
  • 开源宽松的MIT协议

功能:

  • 支持使用本地账号登录
  • 支持创建虚拟账号登录,匿名登录暂时不支持(不过根据现有代码很快可以加上)
  • 支持SSL加密
  • 支持主动模式和被动模式
  • 支持ASCII和二进制文件类型
  • 支持常用的上传、下载、查看和删除等命令

二、其它实现

  1. vsftpd: https://security.appspot.com/vsftpd.html
  2. pure-ftpd: https://www.pureftpd.org/project/pure-ftpd/
  3. bftpd: https://bftpd.sourceforge.net/

三、移植

移植只需要改动两个文件:一个Makefile,一个uftpd配置文件。编译之后会生成一个可执行文件,启动这个程序后它会自动在可执行文件目录下寻找uftpd.cfg,读取了配置文件后执行相应服务。

  1. Makefile改动
# 指定编译器
CC=gcc# 选择是否支持大文件(2G以上)读写
ENABLE_LARGE_FILE_SUPPORT=
#TO ENABLE THE LARGE FILE SUPPORT UNCOMMENT THE NEXT LINE
# ENABLE_LARGE_FILE_SUPPORT=-D LARGE_FILE_SUPPORT_ENABLED -D _LARGEFILE64_SOURCE# 选择是否支持SSL
ENABLE_OPENSSL_SUPPORT=
#TO ENABLE OPENSSL SUPPORT UNCOMMENT NEXT 2 LINES
#ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED
#LIBS=-lpthread -lssl -lcrypto# 选择是否支持用主机本地的账户登录
ENABLE_PAM_SUPPORT=
PAM_AUTH_LIB=
#TO ENABLE PAM AUTH UNCOMMENT NEXT TWO LINES
#ENABLE_PAM_SUPPORT= -D PAM_SUPPORT_ENABLED
#PAM_AUTH_LIB= -lpam
  1. 生成uftpd.cfg
# 最多支持连接的FTPClient数量
MAXIMUM_ALLOWED_FTP_CONNECTION = 10# 是否只能执行一个Server进程
SINGLE_INSTANCE = true# 是否采用守护进程模式
DAEMON_MODE = false# 无操作超时时间
IDLE_MAX_TIMEOUT = 3600# 每个IP做多可连接数量
MAX_CONNECTION_NUMBER_PER_IP = 10# 每个IP最多可登录数量
MAX_CONNECTION_TRY_PER_IP = 10# SSL证书目录
CERTIFICATE_PATH=/etc/uFTP/cert.pem
PRIVATE_CERTIFICATE_PATH=/etc/uFTP/key.pem# 是否采用主机本地账户
#Enable system authentication based on /etc/passwd
#and /etc/shadow
ENABLE_PAM_AUTH = false# 随机端口范围
RANDOM_PORT_START = 10000
RANDOM_PORT_END   = 50000# 控制端口
FTP_PORT = 21
#TCP/IP PORT SETTINGS (DEFAULT 21)# 账户配置 START FROM USER 0 TO XXX
USER_0 = tang
PASSWORD_0 = tang
HOME_0 = /var/user/
GROUP_NAME_OWNER_0 = root
USER_NAME_OWNER_0 = root
  1. 使用

在可执行文件路径下写一份uftpd.cfg,然后sudo ./uFTP,即可执行。

四、资料

项目地址:https://github.com/kingk85/uFTP
项目文档:https://www.uftpserver.com/wiki/opensource-ftp-server

使用过程中发现源码有些小问题,更改了下:https://github.com/tang0-0/uFTP

uFTP-Linux下FTPServer实现相关推荐

  1. Linux下防火墙iptables用法规则详及其防火墙配置

    原博主文章更美丽: http://www.cnblogs.com/yi-meng/p/3213925.html iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国 ...

  2. linux下windows软件的代替品

    此文为网上找到的一篇博文稍后会根据个人日常使用习惯重新分化 ,希望能对想早日进入linux下工作的朋友有些帮助 Linux下数百种 Windows 软件的免费替代品列表 程序所执行任务的描述 Wind ...

  3. Linux下数百种Windows软件的免费替代品列表

    Linux下数百种 Windows 软件的免费替代品列表 程序所执行任务的描述 Windows Linux 1) 网络连接 网页浏览器 微软 IE,网景 Netscape / Mozilla, Ope ...

  4. 转载-Linux下hosts、host.conf、resolv.conf

    Linux下hosts.host.conf.resolv.conf /etc/resolv.conf 该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数. resol ...

  5. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

    过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...

  6. Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多

    Linux下创建软链接|硬链接,文件访问为空,提示:x x x: 符号连接的层数过多. 原因:创建符号链接的时候未使用绝对路径,无论是源文件路径还是目标路径,都需要使用绝对路径. 如: ln -s / ...

  7. Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 556  文章- 38  评论- 77 ...

  8. linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.

    所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...

  9. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6  文章- 2  评论- 2 < ...

最新文章

  1. 死锁产生的条件+排除死锁的方法
  2. 大数据陷阱:谁有权享有大数据,谁有权分析大数据
  3. 【PAT甲级 U形打印】1031 Hello World for U (20 分) Java版 6/6通过
  4. java下载图片到手机相册_Unity保存图片到Android手机且更新相册
  5. 传播时延、发送时延、处理时延和排队时延各自的物理意义是什么?
  6. 女性买房需要注意哪些问题
  7. JMeter脚本录制-快速上手篇
  8. 如何用minitab检测一组数据是否服从正态分布
  9. JSONObject.fromObject(obj) 报错
  10. UML常用图--类图,用例图,序列图(时序图),协作图(通信图),状态图,活动图
  11. 欧拉角(转子动力学)
  12. 海伦公式——初中数学证明
  13. win7升级win10正式版_如何使用小白系统对win7升级win10操作
  14. 基于微信公众平台的智能硬件/智能设备APP开发详解
  15. 随身WIFI刷机记录 UF1003
  16. web前端零基础html5
  17. 花式吊打源码中 Android.mk 集锦
  18. 群晖 使用SMB3进行局域网传输双倍叠加网速下踩的一些坑
  19. mysql替换空行解决导出到excel时由于内容有换行回车导致的问题
  20. 通过sql语句查询oracle版本信息

热门文章

  1. TDOA定位Taylor算法
  2. 在GitLab中集成Azure Kubernetes
  3. Matlab 将cell转换成double格式
  4. DirBuster的初涉使用笔记
  5. 大学物理----旋转矢量法证明同方向同频率简谐振动的合运动公式
  6. 解决报错 PHP TP5框架 .env 文件产生问题如:Fatal error: Uncaught think\exception\ErrorException: in....
  7. Win32自定义字体
  8. xmta温度控制仪说明书_XMTA-2C-0110211004 智能温度控制器详细解读
  9. 稳恒(有人透传云)NBIOT模块使用指南(1)
  10. POJ 4151/北大百练 4151 电影节 题解(两种方法)贪心算法基础