# E-FTP **Repository Path**: fortunely/e-ftp ## Basic Information - **Project Name**: E-FTP - **Description**: Easy FTP (E-FTP) Project Source Code. Support Linux C/C++. - **Primary Language**: C++ - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-09-27 - **Last Updated**: 2023-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目说明 E-FtpServer是用Libevent库开发的、基于Linux系统的简易FTP服务器程序,提供常用FTP服务器功能。运行E-FtpServer程序的主机,能通过FTP客户端,实现与服务器指定根目录下的文件传输功能。 支持匿名访问,任何修改服务器文件的行为,如上传,则需要使用用户名登录。 项目地址: 1. Gitee地址:https://gitee.com/fortunely/e-ftp # 配置文件 见项目根目录下ftpd.cfg文件。 1. FTP服务器根目录 下载安装后,用户可能需要通过配置文件,手动修改ftp服务器根目录物理路径(root_dir)。 2. FTP服务器IP地址及端口 IP地址默认使用第一个从网络接口查询到的非本地回环地址(“127.0.0.1”),如果程序自动识别到的IP地址并非所需IP地址,请手动指定服务器IP地址(ip)。 如果使用知名端口号(1~1023),请以管理员权限运行程序。 # 编译环境及运行 ## 编译器 要求支持gnu99 我使用的版本:gcc 4.8.4 ## 运行主机 要求Linux操作系统,建议4.2.0以上。我的实测电脑OS版本:Ubuntu 14.04.1 x86_64 LTS。 如果需要在其他类Unix系统下运行,则需要修改部分Linux专用API。 ## IDE 支持Clion 2021 载入项目后,请重新加载项目。方法: File> Reload CMake Project ## Libevent 版本:2.1.12-stable。 建议使用2.1.x-stable以上版本。 ## cmake编译 进入build目录,使用cmake命令编译 ``` $ cd build $ cmake .. & make ``` 清除编译 ``` $ cd build $ make clean ``` ## 启动程序 ``` $ sudo ./ftpServer ``` ## 端口权限问题 FTP服务器默认使用21作为控制端口,20作为数据端口。然而,linux中,使用<1024的知名端口号,需要root权限。 如果不想以root权限运行,可以利用CAP_NET_BIND_SERVICE,为服务程序授予绑定知名端口号的能力。 ### 赋予能力 root权限运行setcap 命令 ``` $ cd ./bin $ setcap cap_net_bind_service=+eip ./ftpServer ``` ### 清除能力 ``` $ setcap -r ./ftpServer ``` 注意:赋予指定程序使用知名端口号能力后,如果重新编译得到新的可执行程序目标,会丧失原来的能力,需要重新赋予能力。 ### 检查是否获得能力 运行程序以后,可以通过观察程序是否成功启动(服务程序打印日志),以及使用`$ ps aux`命令查看已启动服务进程绑定端口情况。 ``` $ ps aux | grep ftp ```