vsftpd-2.3.4服务器在ok6410开发板上的移植_.text+0xdf0-程序员宅基地

技术标签: reference  ftp服务器  file  upload  asynchronous  服务器  移植  嵌入式开发  

老房原创修改版,在房老师教程基础上修改而成。

 

老房原创,转载声明,熬夜至凌晨2点捣鼓不容易啊!
我的环境飞凌OK6410开发板,arm-linux-gcc 4.3.2(我一般用的开发工具不新不旧)
--------------------------------------
------线-------------------------------------------------
1
下载
Ubuntu
上的ftp客户端软件filezilla
安装:
sudoapt-get installfilezilla

安装完成后,在应用程序->互联网会看到
采用ftp客户端filezilla下载:ftp://vsftpd.beasts.org/users/cevans/untar/下载vsftpd-2.3.4
2
修改Makefile文件
CC=arm-linux-gcc
3
执行make
若出现错误------------------------------------------
/bin/sh:./vsf_findlibs.sh: Permission denied
sysdeputil.o: In function`vsf_sysdep_check_auth':
sysdeputil.c:(.text+0xdcc): undefinedreference to `crypt'
sysdeputil.c:(.text+0xdf0): undefinedreference to `crypt'
collect2: ld returned 1 exit status
make:*** [vsftpd]
错误1
修改./vsf_findlibs.sh属性为可读写与执行
-------------------------------------------------------------
/lib/libcap.so.2:could not read symbols: File in wrong format
collect2: ld returned1 exit status
make: *** [vsftpd]
错误1
修改vsffindlibs.sh
屏蔽掉49-57行;

------------------------------------------------------------------------

如果之后再出现


sysdeputil.o:In function `vsf_sysdep_check_auth':
sysdeputil.c:(.text+0xdcc):undefined reference to `crypt'
sysdeputil.c:(.text+0xdf0):undefined reference to `crypt'
collect2: ld returned 1 exitstatus
make: *** [vsftpd]
错误 1


那么就把/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/下的libcrypt.so.1复制到开发板根文件系统/lib目录下

至于为什么这么处理我也想不明白。


4
执行arm-linux-readelf-d vsftpd显示需要哪些库,如下:
Dynamicsection at offset 0x170fc contains 29 entries:
  Tag        Type                        Name/Value
0x00000001 (NEEDED)                    Shared library: [libcrypt.so.1]

0x00000001(NEEDED)                     Shared library: [libc.so.6]

0x0000000c(INIT)                       0x9680

0x0000000d(FINI)                       0x1b3f4

0x00000019(INIT_ARRAY)                 0x26a58

0x0000001b(INIT_ARRAYSZ)               4 (bytes)

0x0000001a(FINI_ARRAY)                 0x26a5c

0x0000001c(FINI_ARRAYSZ)               4 (bytes)

0x00000004(HASH)                       0x8168

0x00000005(STRTAB)                     0x8d08

0x00000006(SYMTAB)                     0x84f8

0x0000000a(STRSZ)                      1100 (bytes)

0x0000000b(SYMENT)                     16 (bytes)

0x00000015(DEBUG)                      0x0

0x00000003(PLTGOT)                     0x26b54

0x00000002(PLTRELSZ)                   984 (bytes)

0x00000014(PLTREL)                     REL

0x00000017(JMPREL)                     0x92a8

0x00000011(REL)                        0x9298

0x00000012(RELSZ)                      16 (bytes)

0x00000013(RELENT)                     8 (bytes)

0x6ffffffe(VERNEED)                    0x9258

0x6fffffff(VERNEEDNUM)                 2

0x6ffffff0(VERSYM)                     0x9154

0x00000000(NULL)                       0x0
libcrypt.so.1l libc.so.6 及这两个连接所指向的源文件用cp-a 复制到根文件系统的/lib

另外还有libnss_files.so.2及该连接所指向的源文件, 否则运行时会出现:
500OOPS: vsftpd: cannot locate user specified in'ftp_username':ftp
错误;(这点错误弄了一晚上好几个小时)ps:好帅老师辛苦了


5
把生成的vsftpd拷贝到根文件系统的sbin目录,vsftpd.conf文件拷贝到根文件系统的etc目录下
6
配置vsftpd.conf
对配置文件进行了修改,我的:
#Example config file /etc/vsftpd.conf
#
# The default compiledin settings are fairly paranoid. This sample file
# loosens thingsup a bit, to make the ftp daemon more usable.
# Please seevsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: Thisexample file is NOT an exhaustive list of vsftpd options.
# Pleaseread the vsftpd.conf.5 manual page to get a full idea of vsftpd's
#capabilities.
#
# Allow anonymous FTP? (Beware - allowed bydefault if you comment this out).
anonymous_enable=YES
#
#Uncomment this to allow local users to log in.
local_enable=YES
#
#Uncomment this to enable any form of FTP writecommand.
write_enable=YES
#
# Default umask for local usersis 077. You may wish to change this to 022,
# if your users expectthat (022 is used by most other ftpd's)
#local_umask=022
#
#Uncomment this to allow the anonymous FTP user to upload files. Thisonly
# has an effect if the above global write enable isactivated. Also, you will
# obviously need to create a directorywritable by the FTP user.
anon_upload_enable=YES
#
#Uncomment this if you want the anonymous FTP user to be able tocreate
# new directories.
anon_mkdir_write_enable=YES
#
#Activate directory messages - messages given to remote users whenthey
# go into a certain directory.
dirmessage_enable=YES
#
#Activate logging of uploads/downloads.
#xferlog_enable=YES
#
#Make sure PORT transfer connections originate from port 20(ftp-data).
connect_from_port_20=YES
#
# If you want, youcan arrange for uploaded anonymous files to be owned by
# adifferent user. Note! Using "root" for uploaded files isnot
# recommended!

#chown_uploads用户指定anonymous帐号上传的文件是否要改变其所有者,默认为NO,chown_username用来指定新的所有者
#在FTP服务器中,匿名用户的用户名和密码都是ftp

chown_uploads=YES
chown_username=ftp
#
#You may override where the log file goes if you like. The default isshown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# Ifyou want, you can have your log file in standard ftpd xferlogformat
xferlog_std_format=YES
#
# You may change the defaultvalue for timing out an idle session.
#idle_session_timeout=600
#
#You may change the default value for timing out a dataconnection.
#data_connection_timeout=120
#
# It isrecommended that you define on your system a unique user which the
#ftp server can use as a totally isolated and unprivilegeduser.
nopriv_user=ftp
#
# Enable this and the server willrecognise asynchronous ABOR requests. Not
# recommended forsecurity (the code is non-trivial). Not enabling it,
# however,may confuse older FTP clients.
async_abor_enable=YES
#
# Bydefault the server will pretend to allow ASCII mode but in factignore
# the request. Turn on the below options to have the serveractually do ASCII
# mangling on files when in ASCII mode.
#Beware that on some FTP servers, ASCII support allows a denial ofservice
# attack (DoS) via the command "SIZE /big/file"in ASCII mode. vsftpd
# predicted this attack and has always beensafe, reporting the size of the
# raw file.
# ASCII mangling isa horrible feature of theprotocol.
ascii_upload_enable=YES
ascii_download_enable=YES
#
#You may fully customise the login banner string:
ftpd_banner=Welcometo blah FTP service.
#
# You may specify a file of disallowedanonymous e-mail addresses. Apparently
# useful for combattingcertain DoS attacks.
#deny_email_enable=YES
# (defaultfollows)
#banned_email_file=/etc/vsftpd.banned_emails
#
#You may specify an explicit list of local users to chroot() to theirhome
# directory. If chroot_local_user is YES, then this listbecomes a list of
# users to NOTchroot().
#chroot_list_enable=YES
# (defaultfollows)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# Youmay activate the "-R" option to the builtin ls. This isdisabled by
# default to avoid remote users being able to causeexcessive I/O on large
# sites. However, some broken FTP clientssuch as "ncftp" and "mirror" assume
# thepresence of the "-R" option, so there is a strong case forenablingit.
ls_recurse_enable=YES


#使vsftpd处于独立启动模式

listen=YES


listen_port=21
anon_other_write_enable=YES
7
开发板根文件系统创建必要的目录:
mkdir-p /var/ftp/pub
mkdir -p /usr/share/empty
chown root:root/var/ftp
chmod 755 /var/ftp
cd /var/ftp
chmod 777 pub


说明:


pub这个目录是用来供匿名用户上传文件的,上传的文件存放在此处,故其属性为777,而其他目录无此属性,不能用来作为上传目录。


8
创建用户
/etc/group
文件至少要有root:
root:*:0:
/etc/passwd
文件增加ftpnobody用户:
root::0:0:root:/:/bin/sh
ftp::14:50:FTPUser:/var/ftp:
nobody:*:99:99:Nobody:/:


说明:

root:*:0:

root是用户组名称,*是密码字段,0GID


root::0:0:root:/:/bin/sh

root是用户名;

后面冒号之间的空白是密码字段,这里是空;

后面两个0分别是UIDGID

再后面分别指定了root的家目录为/和要登录的shell/bin/bash


ftp::14:50:FTPUser:/var/ftp:


ftp是用户名;
冒号之间是密码字段,是隐藏的;

14
是用户的UID字段,可以自己来设定,不要和其它用户的UID相同,否则会造成系统安全问题;

50
用用户组的GID,可以自己设定,不要和其它用户组共用FTPGID,否则会造成系统全全问题;FTPUser是用户说明字段,可以随意取名;

/var/ftp
ftp用户的家目录,可以自己来定义;

后面的shell字段为空,应该是不能登录shell

(如果 shell 字段设置为 /sbin/nologin 表示该用户不能登录系统,系统虚拟帐号(也被称为伪用户)一般都是这么设置。如果我们把 ftp 用户的 /sbin/nologin改为/bin/bash,这样ftp 用户通过本地或者远程工具ssh telnet 以真实用户身份登录到系统。这样做对系统来说是不安全的)


9.
开发板执行vsftpd/etc/vsftpd.conf&启动ftp,输入帐号名和密码即登入;
用户名root密码空,可访问开发板任意目录;
用户名anonymous密码空,可访问/var/ftp/pub目录

用户名ftp密码空,可访问/var/ftp/pub目录


说明:

(摘自网络)

当我们访问各大FTP上访问时,可能我们不去想我们以什么身份登录的,如果他的FTP允许匿名登录的话;比如我们在浏览器上打入;

ftp://mirrors.kernel.org

ftp://ftp:[email protected]


我们会发现上面的两行最终都能访问,而且显示的结果也完全一样,最终都跳到ftp://mirrors.kernel.org地址;那我们访问这个FTP时,是不是有用户和密码呢?是的,也是需要在的,只是在服务器端允许匿名访问,而匿名访问的用户名和密码都是ftp,只是我们因为匿名访问,没有感觉到他有用户名和密码罢了。第二个地址就是以ftp用户,密码也是ftp来访问ftp://mirrors.kernel.org

如果我们以ftp命令连接mirrors.kernel.org时,我们会发现需要输入用户ftp,密码ftp才能访问;

FTP服务器中,匿名用户的用户名和密码都是ftp;这个用户可以在您的操作系统中的/etc/passwd中能找得到。


可采用最先开始安装的filezilla测试!!


参考资料:

http://www.linuxsir.org/main/node/152


http://apps.hi.baidu.com/share/detail/50310481


http://blog.sina.com.cn/s/blog_498719980100092k.html


以及老房原创原文:

http://user.qzone.qq.com/117482672#!


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/alan00000/article/details/7194702

智能推荐

2022黑龙江最新建筑八大员(材料员)模拟考试试题及答案_料账的试题-程序员宅基地

文章浏览阅读529次。百分百题库提供建筑八大员(材料员)考试试题、建筑八大员(材料员)考试预测题、建筑八大员(材料员)考试真题、建筑八大员(材料员)证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。310项目经理部应编制机械设备使用计划并报()审批。A监理单位B企业C建设单位D租赁单位答案:B311对技术开发、新技术和新工艺应用等情况进行的分析和评价属于()。A人力资源管理考核B材料管理考核C机械设备管理考核D技术管理考核答案:D312建筑垃圾和渣土._料账的试题

chatgpt赋能python:Python自动打开浏览器的技巧-程序员宅基地

文章浏览阅读614次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python自动打开浏览器

Linux中安装JDK-RPM_linux 安装jdk rpm-程序员宅基地

文章浏览阅读545次。Linux中安装JDK-RPM方式_linux 安装jdk rpm

net高校志愿者管理系统-73371,计算机毕业设计(上万套实战教程,赠送源码)-程序员宅基地

文章浏览阅读25次。免费领取项目源码,请关注赞收藏并私信博主,谢谢-高校志愿者管理系统主要功能模块包括页、个人资料(个人信息。修改密码)、公共管理(轮播图、系统公告)、用户管理(管理员、志愿用户)、信息管理(志愿资讯、资讯分类)、活动分类、志愿活动、报名信息、活动心得、留言反馈,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取SQL Server 作为后台数据的主要存储单元,采用Asp.Net技术进行业务系统的编码及其开发,实现了本系统的全部功能。

小米宣布用鸿蒙了吗,小米OV对于是否采用鸿蒙保持沉默,原因是中国制造需要它们...-程序员宅基地

文章浏览阅读122次。原标题:小米OV对于是否采用鸿蒙保持沉默,原因是中国制造需要它们目前华为已开始对鸿蒙系统大规模宣传,不过中国手机四强中的另外三家小米、OPPO、vivo对于是否采用鸿蒙系统保持沉默,甚至OPPO还因此而闹出了一些风波,对此柏铭科技认为这是因为中国制造当下需要小米OV几家继续将手机出口至海外市场。 2020年中国制造支持中国经济渡过了艰难的一年,这一年中国进出口贸易额保持稳步增长的势头,成为全球唯一..._小米宣布用鸿蒙系统

Kafka Eagle_kafka eagle git-程序员宅基地

文章浏览阅读1.3k次。1.Kafka Eagle实现kafka消息监控的代码细节是什么?2.Kafka owner的组成规则是什么?3.怎样使用SQL进行kafka数据预览?4.Kafka Eagle是否支持多集群监控?1.概述在《Kafka 消息监控 - Kafka Eagle》一文中,简单的介绍了 Kafka Eagle这款监控工具的作用,截图预览,以及使用详情。今天_kafka eagle git

随便推点

Eva.js是什么(互动小游戏开发)-程序员宅基地

文章浏览阅读1.1k次,点赞29次,收藏19次。Eva.js 是一个专注于开发互动游戏项目的前端游戏引擎。:Eva.js 提供开箱即用的游戏组件供开发人员立即使用。是的,它简单而优雅!:Eva.js 由高效的运行时和渲染管道 (Pixi.JS) 提供支持,这使得释放设备的全部潜力成为可能。:得益于 ECS(实体-组件-系统)架构,你可以通过高度可定制的 API 扩展您的需求。唯一的限制是你的想象力!_eva.js

OC学习笔记-Objective-C概述和特点_objective-c特点及应用领域-程序员宅基地

文章浏览阅读1k次。Objective-C概述Objective-C是一种面向对象的计算机语言,1980年代初布莱德.考斯特在其公司Stepstone发明Objective-C,该语言是基于SmallTalk-80。1988年NeXT公司发布了OC,他的开发环境和类库叫NEXTSTEP, 1994年NExt与Sun公司发布了标准的NEXTSTEP系统,取名openStep。1996_objective-c特点及应用领域

STM32学习笔记6:TIM基本介绍_stm32 tim寄存器详解-程序员宅基地

文章浏览阅读955次,点赞20次,收藏16次。TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在 72MHz 计数时钟下可以实现最大 59.65s 的定时,59.65s65536×65536×172MHz59.65s65536×65536×721​MHz不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。_stm32 tim寄存器详解

前端基础语言HTML、CSS 和 JavaScript 学习指南_艾编程学习资料-程序员宅基地

文章浏览阅读1.5k次。对于任何有兴趣学习前端 Web 开发的人来说,了解 HTML、CSS 和JavaScript 之间的区别至关重要。这三种前端语言都是您访问过的每个网站的用户界面构建块。而且,虽然每种语言都有不同的功能重点,但它们都可以共同创建令人兴奋的交互式网站,让用户保持参与。因此,您会发现学习所有三种语言都很重要。如果您有兴趣从事前端开发工作,可以通过多种方式学习这些语言——在艾编程就可以参与到学习当中来。在本文中,我们将回顾每种语言的特征、它们如何协同工作以及您可以在哪里学习它们。HTML vs C._艾编程学习资料

三维重构(10):PCL点云配准_局部点云与全局点云配准-程序员宅基地

文章浏览阅读2.8k次。点云配准主要针对点云的:不完整、旋转错位、平移错位。因此要得到完整点云就需要对局部点云进行配准。为了得到被测物体的完整数据模型,需要确定一个合适的坐标系变换,将从各个视角得到的点集合并到一个统一的坐标系下形成一个完整的数据点云,然后就可以方便地进行可视化,这就是点云数据的配准。点云配准技术通过计算机技术和统计学规律,通过计算机计算两个点云之间的错位,也就是把在不同的坐标系下的得到的点云进行坐标变..._局部点云与全局点云配准

python零基础学习书-Python零基础到进阶必读的书藉:Python学习手册pdf免费下载-程序员宅基地

文章浏览阅读273次。提取码:0oorGoogle和YouTube由于Python的高可适应性、易于维护以及适合于快速开发而采用它。如果你想要编写高质量、高效的并且易于与其他语言和工具集成的代码,《Python学习手册:第4 版》将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者。本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成。《Python学习..._零基础学pythonpdf电子书

推荐文章

热门文章

相关标签