嵌入式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. ORCA避障源码笔记

    参考资料 https://gamma.cs.unc.edu/ORCA/publications/ORCA.pdf https://gamma.cs.unc.edu/RVO2/ 数学知识 1.向量的点乘 ...

  2. 【论文系列】PPO知识点梳理 (尽我可能细致通俗理解!)

    零.题记 这篇博客一方面为了记录当前的知识点,另一方面PPO算法实在是太重要了,不但要从理论上理解它到底是怎样实现的,还需要从代码方面进行学习和记录,这里我就通俗的将这个知识点进行简单的记录,用来日后 ...

  3. .NET 模拟&编辑平滑曲线

    本文介绍不依赖贝塞尔曲线,如何绘制一条平滑曲线,用于解决无贝塞尔控制点的情况下绘制曲线.但数据点不在贝塞尔曲线的场景. 在上一家公司我做过一个平滑曲线编辑工具,用于轮椅调整加减速曲线.基于几个用户可控 ...

  4. pip 安装 Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1123)'))

    1.问题 1.1 问题截取 pip install redis -i https://pypi.tuna.tsinghua.edu.cn/simple Looking in indexes: http ...

  5. kubernetes更改nodePort模式下的默认端口范围

    使用nodePort模式,官方默认范围为30000-32767,详见Service官方文档. NodePort 类型如果将 type 字段设置为 NodePort,则 Kubernetes 控制平面将 ...

  6. shell中字符串比较和模糊比较说明

    shell字符串比较说明 1 完全比较方法(完全匹配) if [ "$soure" == "$dest" ]; then echo "is ==&qu ...

  7. Qt编写物联网管理平台34-地图按钮

    一.前言 地图按钮很常见,这也是用户给钱就干的一个模块.设备现场提供了对应的地图文件,其实就是图片文件,做的简单点就是直接CAD图纸转成jpg,做的精致点就是搞了3D风格的立体样式图片,其实还是图片, ...

  8. 跟着源码学IM(八):万字长文,手把手教你用Netty打造IM聊天

    本文作者芋艿,原题"使用 Netty 实现 IM 聊天贼简单",本底价有修订和改动. 一.本文引言 上篇<跟着源码学IM(七):手把手教你用WebSocket打造Web端IM ...

  9. BOF编写-修改时间戳

    模板配置 跟着网上的教程使用evilashz师傅的模板,下载模板解压至vs的模板目录: %UserProfile%\Documents\Visual Studio 2022\Templates\Pro ...

  10. C#正则表达式匹配候选词

    来自文心一言(多次修改才正确的): public App() { string input = "例子文字{备选,:'词1t324|备选词2gdfg,该方法|备选词3dsfdsf}继续{备选 ...