您的位置:首页 > 运维架构 > Linux

推荐一款嵌入式Linux的FTP服务端软件(stupid-ftpd)

2014-06-10 18:10 344 查看
http://sourceforge.net/projects/stupid-ftpd/



作者:gzshun. 原创作品,转载请标明出处!

来源:http://blog.csdn.net/gzshun

在嵌入式Linux系统中,有时候需要搭建一个ftp服务器,以便windows或linux系统去访问嵌入式linux系统的数据。现在流行的ftp和vsftpd软件相对比较大,在嵌入式Linux系统下不太合适。最近由于需要,发现了一款很小型的ftp服务器,在这里分享。

stupid-ftpd 点击下载

根据自己的需要,修改Makefile,将gcc修改为交叉工具链的gcc,比如mips-gnu-linux-gcc。

若要静态编译,在CFLAGS后面添加"-static"选项。

以下的Makefile已经修改:

[plain] view
plaincopy

#

#

# Makefile for the linux version of stupid-ftpd

#

#

#

CC=mips-linux-gnu-gcc -EL #修改

OBJS=ftpcommand.o ftpdconfig.o command.o ls.o stupid-ftpd.o

DOBJS=ftpcommand.do ftpdconfig.do command.do ls.do stupid-ftpd.do

POBJS=ftpcommand.po ftpdconfig.po command.po ls.po stupid-ftpd.po

LIBS=

CFLAGS=-O2 -Wall -Wstrict-prototypes -static #修改

DCFLAGS=-g -DDEBUG -Wall -Wstrict-prototypes

PCFLAGS=-g -DDEBUG -Wall -Wstrict-prototypes -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs

EXEC=stupid-ftpd.Linux6

.SUFFIXES: .c .o .do .po

all: $(OBJS)

$(CC) $(CFLAGS) -o $(EXEC) $(OBJS) $(LIBS)

debug: $(DOBJS)

$(CC) $(DCFLAGS) -o $(EXEC) $(DOBJS) $(LIBS)

pedantic: $(POBJS)

$(CC) $(PCFLAGS) -o $(EXEC) $(POBJS) $(LIBS)

clean:

rm -f $(OBJS) $(DOBJS) $(POBJS) $(EXEC) *~

.c.o:

$(CC) $(CFLAGS) -c -o $@ $<

.c.do:

$(CC) $(DCFLAGS) -c -o $@ $<

.c.po:

$(CC) $(PCFLAGS) -c -o $@ $<

install:

install -m 755 -s ./stupid-ftpd /usr/local/bin/stupid-ftpd

install -m 700 -d /etc/stupid-ftpd

install -m 755 -d /usr/local/stupid-ftpd

install -m 600 ./stupid-ftpd.conf /etc/stupid-ftpd/stupid-ftpd.conf

只需修改两个位置。

编译完成后,生成stupid-ftpd.Linux6可执行程序,该程序运行需要配置文件,以下的配置已经被修改并验证,是可以用的。但前提是运行在嵌入式Linux系统下,21端口没有被占用。

[plain] view
plaincopy

#

# This is a config-file for stupid-ftpd

# ------------------------------------

#

# The standard path should be /etc/stupid-ftpd.conf

# You can define other paths by using the "-f" option

# when starting stupid-ftpd.

#

#

# ATTENTION: 1) Remember, that the server is running with YOUR permissions.

# It will fail to access other users directory, unless it is

# root, but it also allows to access ALL YOUR directories,

# which are deeper in a user's root-dir and YOU HAVE access to.

# 2) To solve the problem, the best way is to define a group-ID

# for stupid-ftpd.

# Or if you aren't root: set the MAIN root (serverroot=) to

# the highest directory depth which is possible.

# 3) REMEMBER: DO NOT PUT THIS FILE in an accessible directory!!!

# There are passwords defined here. The safest place is

# outside the serverroot.

# Server operation mode:

# daemon - quiet in background

# interactive - standard mode

#mode=interactive #交互式的形式运行

mode=daemon #以守护进程的形式运行在后台

# chroot to

#serverroot=/usr/home/cinek/tmp3/aaa

serverroot=/mnt #将ftp的根目录设置为/mnt目录下,在windows打开该ftp,就能访问/mnt目录

# type of chroot

# real - kernel chroot(), high security, but needs root privileges

# virtual - no real chroot(), software side (virtual) chroot

#changeroottype=real

changeroottype=virtual

# Port number for the FTP-Protocol

#port=2121

port=21 #默认为ftp的端口号。

# Maximum users allowed to log in

maxusers=10

# Message Of The Day (motd)

# It will be displayed after the login procedure.

#motd=/tmp/stupid-ftpd.motd

# Message on quit

# It will be displayed when quitting.

#byemsg=/tmp/stupid-ftpd.bye

# Log

#log=/tmp/stupid-ftpd.log

# User list:

# Format: user=<login> <passwd> <subdir> <maxlogins> <flags>

# <login> user name

# <passwd> password or * for anonymous access

# <subdir> (internally appended to serverroot)

# the user has access to the WHOLE SUBTREE,

# if the server has access to it

# <maxlogins> maximal logins with this usertype

# <flags> D - download

# U - upload + making directories

# O - overwrite existing files

# M - allows multiple logins

# E - allows erase operations

# A - allows EVERYTHING(!)

#

# user ftp is mapped to user anonymous, don't forget this

#

# Examples:

# user=user1 passx /tmp 2 D

# - login: user1, passwd: passx, max login twice (different IPs!)

# only download rights from directory /tmp

# user=user2 passy /home/user2 0 DU

# - login: user2, passwd: passy, no login count limit (different IPs!)

# download+upload rights to directory /home/user2

# user=user3 passz /home/user3 5 DUOM

# - login: user3, passwd: passz, max login count 5 (even from same IP)

# download+upload+overwrite rights to directory /home/user3

# user=user4 passq /tmp 10 -

# - login: user4, passwd: passq, max login count 10 (even from same IP)

# look-only rights at directory /tmp

#

# SEE: ATTENTION remark on the top of this file !!!

user=anonymous * / 5 A

# Banned hosts

# "*" and "?" are allowed here

#ban=192.168.*

#ban=localhost

#ban=*.banme.com

# Ban message (displayed to user who is banned)

# Please don't use more than 70 characters.

#banmsg=Go away !

# Login/password timeout

login-timeout=120

# Timeout (while logged in)

timeout=240

剩下的用默认的配置就可以了,特别注意,设置port参数的时候,2121端口不能使用,无法提供ftp服务。要设置为21端口,经过测试,设置为21端口,在Linux的PC机,报错:21端口被占用。但在嵌入式Linux下,是可以使用的。

stupid-ftpd.Linux6的使用方法:

直接用-f选项指定配置文件:

stupid-ftpd.Linux6 -f stupid-ftpd.conf

然后保证windows与嵌入式Linux系统的IP地址在同一网段,然后再"我的电脑"输入:ftp://192.168.x.x/

这里就不截图了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: