嵌入式linux FTP服务器

一般嵌入式Linux下的FTP服务器会有什么要求呢?一般来说差不多如下所示

  • 账号认证,需要特定用户才能访问(不一定要和登录用户挂钩)
  • 根目录固定在一个固定的位置,且不能向上级访问(例如/share)
  • 不需要匿名访问(不安全)
  • 可能需要配置只读权限

方案选型

busybox自带的ftpd

本来打算考虑使用本身自带的方案的,配置如下

️/etc/inetd.conf

ftp    stream  tcp     nowait  root    ftpd    ftpd -w /share

然后重启设备即可

在网上找ftpd的配置。并没有找到,最后直接看help

ftpd --help
BusyBox v1.24.1 (2020-09-01 09:09:54 UTC) multi-call binary. Usage: ftpd [-wvS] [-t N] [-T N] [DIR] Anonymous FTP server ftpd should be used as an inetd service.
ftpd's line for inetd.conf:
21 stream tcp nowait root ftpd ftpd /files/to/serve
It also can be ran from tcpsvd:
tcpsvd -vE 0.0.0.0 21 ftpd /files/to/serve -w Allow upload
-v Log errors to stderr. -vv: verbose log
-S Log errors to syslog. -SS: verbose log
-t,-T Idle and absolute timeouts
DIR Change root to this directory

可以发现这是个只支持匿名访问的ftp服务器软件,所以不能满足账号认证的要求

于是换了个方案

vsftpd

可以支持匿名,也可以支持限制目录权限,就它了

vsftpd的移植

官网地址

https://security.appspot.com/vsftpd.html

移植教程

https://blog.csdn.net/liuzhanchun/article/details/102814150

开始移植,移植过程非常简单

从官网下载源码

vsftpd-3.0.3.tar.gz,解压

先配置gcc工具

vim Makefile
# CC = gcc
CC = arm-linux-gnueabihf-gcc

然后make

注意:make之前先检查arm-linux-gnueabihf-gcc在不在path中,没有的话先source

编译通过

将可执行文件vsftpd拷到板子上的/usr/sbin,添加可执行权限

将vsftpd.conf拷到板子上的/etc/

chown root:root /etc/vsftpd.conf

然后运行

vsftpd &

这个时候就可以访问了,但是还不满足需求,然后根据需求修改配置

vsftpd的配置

这里我们需要配置的内容是

#禁止匿名
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#更改登录后的家目录,默认为各用户的家目录
local_root=/home/root
#不能切换到上级目录
chroot_local_user=YES
#限制访问自身目录
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

新增用户

参考这个

http://www.letuknowit.com/post/366.html

useradd -d /home/ftp1 ftp1 #增加用户ftp1,并制定ftp1用户的主目录为/home/ftp1
passwd ftp1 #为ftp1设置密码

更改权限

usermod -s /sbin/nologin ftp1   #限定用户ftp1不能telnet,只能ftp
usermod -s /sbin/bash ftp1 #用户ftp1恢复正常 #注意这里不一定是/sbin/bash,也可能是/bin/bash,具体用which bash应该可以看到
usermod -d /ftp1 ftp1 #更改用户ftp1的主目录为/ftp1

好了,最后运行一下

vsftpd &

嵌入式linux下的FTP服务器配置记录的更多相关文章

  1. 嵌入式 Linux下永久生效环境变量bashrc

    嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...

  2. linux 下搭建 ftp

    最近为了方便目标板与PC机上LINUX之间的通讯,就在LINUX搭建了FTP,工作不难,写个总结.主要经过以下几个步骤: 1.检查是否安装了vsftpd服务器 可以用rpm -q vsftpd命令来查 ...

  3. Linux下用ftp更新web内容!

    使用ftp更新web!让网页更新一次OK! 配置如下: 1.在Linux下安装ftp服务器! yum -y install vsftpd #ftp由vsftpd提供! 2.配置主配置文件/etc/vs ...

  4. Linux下部署FTP服务器

    Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...

  5. 嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误

    嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误 2015-05-27 14:19 184人阅读 评论(0) 收藏 举报  分类: 嵌入式(928)  一般察看函数运行时堆栈的 ...

  6. linux下常用FTP命令

    linux下常用FTP命令 1. 连接ftp服务器 1. 连接ftp服务器格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1b)服 ...

  7. 【转】基于Qt, TUIO和TSLIB的嵌入式Linux下的多点触摸设计

    这个教程描述了在嵌入式linux下使用Qt如何设置一个支持多点触摸和单点触摸的输入系统.这里假定你已经有了对应的驱动程序,驱动可以从触摸屏的厂商那里获得或者使用一个linux 内核源码中已经存在的驱动 ...

  8. 如何在linux下开启FTP服务

    如何在linux下开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下:   #which vsftpd   如果看到有vsftpd的目录说明服务器已经安装了ftp软件 2. ...

  9. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  10. 转: 嵌入式linux下usb驱动开发方法--看完少走弯路【转】

    转自:http://blog.csdn.net/jimmy_1986/article/details/5838297 嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至 ...

随机推荐

  1. Kubernetes集群巡检内容

    1.概述 Kubernetes 集群巡检是一种监测和评估底层系统运行状况的重要手段,旨在快速发现系统中存在的潜在风险并提供修复建议.通过对 Kubernetes(K8s)集群进行定期巡检,可以有效保障 ...

  2. 刷到一个 MLSQL 语言

    在 https://www.infoq.cn/video/2vFUBYfxFcoFWmSm5WOj 刷到一个 MLSQL 语言,主页 https://www.mlsql.tech/home ,意思是用 ...

  3. Java调用与发布Webservice接口(一)

    ​ 一  准备工作 (一)开发环境 demo以springboot为基础框架,使用到了httpclient.hutool等依赖,详情如下:         springboot版本: org.spri ...

  4. Spring源码阅读(一):使用IDEA搭建Spring5.0.x源码阅读环境

    说明 Spring源码阅读环境配置如下: Spring 5.x版本 Gradle 4.8.1 JDK8 IDEA2020.1 win10 搭建步骤 1. 下载Spring源码 下载地址:Github链 ...

  5. docker-compose.yml 使用说明

    docker-compose.yml 结构 docker-compose.yml文件分为三个主要部分:services.networks.volumes..services主要用来定义各个容器.net ...

  6. PostgreSQL 数据库的启动与停止管理

    title: PostgreSQL 数据库的启动与停止管理 date: 2024/12/28 updated: 2024/12/28 author: cmdragon excerpt: 作为一个强大的 ...

  7. Pytorch的主要组成模块

    Pytorch的主要组成模块 一.基本配置 对于一个PyTorch项目,我们需要导入一些Python常用的包来帮助我们快速实现功能.常见的包有os.numpy等,此外还需要调用PyTorch自身一些模 ...

  8. vs2017 iisexpress 绑定自定义域名

    1.项目根目录找到 项目/.vs/config/applicationhost.config 2.添加绑定域名 <site name="demo" id="2&qu ...

  9. CDS标准视图:分配到任务清单的维护包数据 I_PckgTaskListOpalLocData

    视图名称:分配到任务清单的维护包数据 I_PckgTaskListOpalLocData 视图类型:基础 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IPCKTLO ...

  10. 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法

    出现题目的异常,多是引用第三方控件引起的. 在NEW时,需要初始化该对象. AxESACTIVEXLib.AxESActiveX ax = new AxESACTIVEXLib.AxESActiveX ...