嵌入式linux下的FTP服务器配置记录

嵌入式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 &
posted @ 2021-02-07 00:21  '昵称'undeclared  阅读(652)  评论(0编辑  收藏  举报