移植vsftpd FTP服务器到ARM-Linux系统

一、下载并解压
 
 vsftpd 官方网站:http://vsftpd.beasts.org/ 
 使用当前的最新版本:vsftpd-2.0.6。

[tekkamanninja@Tekkaman-Ninja tarball_for_ftp]$ tar xjvf vsftpd-2.0.6.tar.bz2
[tekkamanninja@Tekkaman-Ninja tarball_for_ftp]$ cd vsftpd-2.0.6

二、交叉编译(for ARM-Linux)

需要修改两处地方。
第一处是Makefile的交叉编译器路径:

[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$ kwrite Makefile
 
# Makefile for systems with GNU tools
CC     =    /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-gcc

第二处是软件源码根目录下的脚本vsf_findlibs.sh。这是因为libcap库的问题。上一次移植我没有成功就是卡在了这里!!网上的修改都是更改到交叉编译器的lib文件夹下,发现即使在lib文件夹下面没有,也不影响。我在网上的提问与那篇文章的作者回复如下:
http://www.cnitblog.com/zouzheng/archive/2008/02/25/32543.html#40104

# re: 嵌入式FTP服务器的移植 
您好!我正在移植基于ARM 的Linux下的ftp服务程序。尚未成功,看了您的文章,很受启发。在实际操作中,libcap库的移植出了问题,希望能得到您的帮助。提供一下libcap库的移植文档,谢谢!
E-mail:tekkamanninja@163.com
QQ:78027228
tekkamanninja 评论于 2008-02-20 08:33  回复  更多评论

# re: 嵌入式FTP服务器的移植 
不知道你们怎么都要这个libcap库,按照步骤做就可以了,我也没有这个库文件
zz 评论于 2008-02-25 09:14  回复  更多评论

根据CalmArrow( http://blog.chinaunix.net/u/21948/showart.php?id=504050)判断,这个库是没有必要的,直接把这两行注释就可以了。

[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$ kwrite vsf_findlibs.sh
# Look for libcap (capabilities)
# locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1";
# locate_library /usr/lib/libcap.so && echo "-lcap";

上一次我居然没有试试就放弃了,值得检讨。后来CalmArrow 发现了这个问题,通知了我。我晕,我怎么没想到!!在这里感谢CalmArrow ,并对他的钻研和实验精神表示敬佩!
不过我觉得不能因为libcap库不需要就不去交叉编译他(也许以后需要),libcap库的交叉编译(需要一定技巧)可以锻炼一下ARM-Linux的交叉编译技能,有空一定试试!

改完后,执行make,动态编译就成功了。

[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$ make

三、处理动态库依赖及其相应的配置文件
 
   (1)因为是动态编译,查看相应的动态库。

[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$ file vsftpd
vsftpd: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, stripped
[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$ /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf -d vsftpd

Dynamic section at offset 0x130e4 contains 25 entries:
  Tag Type Name/Value
 0x00000001 (NEEDED) Shared library: [libcrypt.so.1]
 0x00000001 (NEEDED) Shared library: [libdl.so.2]
 0x00000001 (NEEDED) Shared library: [libnsl.so.1]
 0x00000001 (NEEDED) Shared library: [libresolv.so.2]
 0x00000001 (NEEDED) Shared library: [libutil.so.1]
 0x00000001 (NEEDED) Shared library: [libc.so.6]
 0x0000000c (INIT) 0x97b4
 0x0000000d (FINI) 0x17efc
 0x00000004 (HASH) 0x8128
 0x00000005 (STRTAB) 0x8d78
 0x00000006 (SYMTAB) 0x8548
 0x0000000a (STRSZ) 1245 (bytes)
 0x0000000b (SYMENT) 16 (bytes)
 0x00000015 (DEBUG) 0x0
 0x00000003 (PLTGOT) 0x231d4
 0x00000002 (PLTRELSZ) 952 (bytes)
 0x00000014 (PLTREL) REL
 0x00000017 (JMPREL) 0x93fc
 0x00000011 (REL) 0x93cc
 0x00000012 (RELSZ) 48 (bytes)
 0x00000013 (RELENT) 8 (bytes)
 0x6ffffffe (VERNEED) 0x935c
 0x6fffffff (VERNEEDNUM) 2
 0x6ffffff0 (VERSYM) 0x9256
 0x00000000 (NULL) 0x0
[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$

  把需要的动态库文件(我是从/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib中)拷贝到rootfs的/lib下。
(2)把vsftpd拷贝到rootfs中。
我的是拷贝到了/usr/sbin下。

[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$ cp vsftpd /home/tekkamanninja/working/nfs/rootfs/usr/sbin/

(3)配置文件vsftpd.conf。

我是直接将vsftpd-2.0.6/vsftpd.conf拷贝到了rootfs的 /etc中

[tekkamanninja@Tekkaman-Ninja vsftpd-2.0.6]$ cp vsftpd.conf /home/tekkamanninja/working/nfs/rootfs/etc/

然后我对配置文件进行了修改,实现本地和匿名的文件上传和下载。(暂不考虑安全问题,只为实现其基本功能),具体修改不再赘述,提供我的vsftpd.conf文件,你可以直接使用!

文件: vsftpd.rar
大小: 1KB
下载: 下载

(4)为vsftpd建创建用户。

首先有一个本地用户,这样可以通过本地用户进行访问;其次要匿名用户,需要ftp用户(具体用户明和配置文件有关);至于nobody用户我没有创建照样可用。

[root@~]#adduser -g user ftp
Changing password for ftp
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Bad password: too short.

Warning: weak password (continuing).
Re-enter new password:
passwd[785]: password for `ftp' changed by user `root'
Password changed.

(5)创建必须的目录:/usr/share/empty,否则在访问时会出现:

500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/usr/share/empty

这个与的配置选项相关的。因为默认情况下 secure_chroot_dir为/usr/share/empty。在我的 vsftpd.conf文件中,并没有配置secure_chroot_dir。

[root@~]#mkdir /usr/share 
[root@~]#mkdir /usr/share/empty

经过以上配置,用本地和匿名登录都成功了,本地和匿名传输文件也成功,(与的配置选项相关)。这只是初步工作,实现其基本功能。对于配置问题(如安全设置)请参考vstfpd的使用和配置的资料,这里不再赘述。给出以下连接方便学习:
《vsFTPd 服务器初学者指南(欢迎大家参与补充)》   http://www.linuxsir.org/main/?q=node/152#6

《VSFTPD 服务器安装配置》http://debian.linuxsir.org/doc/inthedebianway/vsftpd/index.html


这里只介绍我遇到的一个问题(其它问题看以上两个资料或google):

当我一开始用匿名登录时,会出现:

500 OOPS: vsftpd: refusing to run with writable anonymous root

解决方法:http://www.linuxsir.org/main/?q=node/152#6

但注意:使用我的配置方法:ftp用户的家目录(也就是匿名登录的根目录)并非/var/ftp,而是/home/ftp

[root@~]#cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
httpd:x:500:500:user:/home/httpd:/bin/sh
boa:x:501:501:user:/home/boa:/bin/sh
lighttpd:x:502:502:user:/home/lighttpd:/bin/sh
ftp:x:503:503:user:/home/ftp:/bin/sh

所以修正这个错误,应该用下面的办法:

[root@localhost ~]# chown root:root /home/ftp
[root@localhost ~]# chmod 755 /home/ftp

以下是我在fedora 7下用gFTP时的截图:一张是root登录,一张是匿名登录。

文件: 截图.rar
大小: 240KB
下载: 下载

移植vsftpd FTP服务器到ARM-Linux系统相关推荐

  1. linux系统怎么建ftp服务器地址,Ubuntu Linux系统建立FTP服务器方法步骤

    实现了Apache多用户的虚拟主机设置,那么一般这些用户都会选择用ftp上传的方式来管理自己的web内容,这就需要我们再为他们开设FTP服务. Ubuntu自带的FTP服务器是vsftpd. 1.安装 ...

  2. linux系统建立ftp用户名和密码,linux系统搭建ftp服务器及创建用户使用

    linux 系统下搭建ftp服务器 ftp是什么 FTP是 File Transfer Protocol 文件传输协议的英文名称,用于在Internet上控制文件的双向传输. 同时它也是一个应用程序. ...

  3. boa linux arm修改网卡,Boa服务器在ARM+Linux上的移植

    Boa服务器在ARM+Linux上的移植 一.Boa服务器介绍 Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右. 作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会 ...

  4. 修改linux ftp共享目录权限,linux系统下修改文件夹目录权限

    文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何修改Linux文件-文件夹权限.以主 ...

  5. linux下的arm仿真,使用QEMU仿真ARM Linux系统

    使用QEMU仿真ARM  Linux系统 使用方法,网上有很多文章可以参考: http://www.aurel32.net/info/debian_arm_qemu.php http://qemu-f ...

  6. 云服务器liunx系统怎么安装,云服务器怎么安装linux系统

    云服务器怎么安装linux系统 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...

  7. Centos7安装vsftpd (FTP服务器)

    Centos7安装vsftpd (FTP服务器) 原文链接:https://www.jianshu.com/p/9abad055fff6 TyiMan 关注 2016.02.06 21:19* 字数 ...

  8. 服务器 为什么linux,为什么服务器要用linux系统?

    接着上篇补充一下,这篇主要内容是为什么服务器要用linux系统,因为很多朋友对这方面不太懂,所以小编另写一篇讲下为什么服务器要用linux系统的原因,有不懂的欢迎留言. 1. 稳定性高 业界公认:Li ...

  9. 移植中文TTS(ekho)到ARM linux开发板

    移植ekho到arm linux,实现将中文转换为.wav格式的语音文件. 移植开源库libsndfile到arm linux开发板 1. 下载压缩源码包libsndfile-1.0.28.tar.g ...

最新文章

  1. 【网络流】解题报告:luogu P2740 [USACO4.2]草地排水Drainage Ditches(Edmonds-Karp增广路,最大流模板)
  2. 吴明曦:马斯克的天基互联网与未来6G地基互联网优劣比较分析
  3. 拥抱开源IaaS云平台:360度盘点OpenStack
  4. java 构造函数和_Java类和构造函数
  5. sql Server 2008 数据库自动备份维护计划
  6. python qt build environment
  7. julia: ubuntu下安装
  8. JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码
  9. umijs 下载文件
  10. 已知圆的半径radius= 1.5,求其面积
  11. 7000字爆肝!我把14个自学编程的压箱底网站全部分享给你们啦
  12. 全球及中国汽车扬声器粘合剂行业市场发展状况与竞争格局分析报告2022-2028年
  13. PS从复制图层到的项目
  14. 回顾过去 展望未来(写给自己)
  15. 青龙面板-- 咸鱼吃鱼(废-已不能使用)
  16. 大数据时代,AIoT在智慧社区的深度应用
  17. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合
  18. MP综述:植物-微生物互作的系统生物学
  19. 二分法求解平方根注意点:
  20. FGui导出图集提示 vips2png

热门文章

  1. 关于 Indentifying Non-explicit Citing Sentences for Citation-based Summarization
  2. Python学习笔记(字符串、列表、字典)
  3. Java随笔记 - 内核缓冲区与进程缓冲区
  4. Python实现基于负熵最大判据的FastICA胎心信号分离
  5. php实现发送微信模板消息的方法
  6. 处理RCV_TRANSACTIONS_INTERFACE的数据
  7. python量化策略——多均值-趋势-股债轮动-策略
  8. IDEA 问题记录-2022
  9. 企业邮箱品牌哪家好?四大品牌企业邮箱推荐
  10. 微信H5页面图片上传避坑指南(vant+vue)