vsftpd移植到ARM Linux教程

应用移植 10536浏览 10评论

vsftpd移植vsftpdvery secure FTP daemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性。使用 vsftpd 可以在 Linux/Unix 系统上搭建一个安全、高性能、稳定性好的轻量级FTP服务器。

1 下载

下载最新版本源码包,下载地址:https://security.appspot.com/vsftpd.html#download。本文以 vsftpd-3.0.2.tar.gz 版本为例。

如果以上下载地址无法访问,也可以本地下载 vsftpd-3.0.2.tar.gz

2 解压

$ mkdir ~/vsftpd
$ cp vsftpd-3.0.2.tar.gz ~/vsftpd
$ cd ~/vsftpd
$ tar xzf vsftpd-3.0.2.tar.gz
$ cd vsftpd-3.0.2/

命令中的“~”表示当前用户目录,比如在Linux主机上面工作的用户是:veryarm,那么命令中的“~”就代表路径:/home/veryarm/目录。

3 配置

$ export PATH=$PATH:/usr/local/arm-2010q1/bin  #交叉编译工具路径加入系统环境变量!
$ vi Makefile

打开Makefile文件后,修改 CC 变量的值,修改后如下:

CC = arm-none-linux-gnueabi-gcc

其中,

  • CC: 指定交叉编译工具,一般为arm-none-linux-gnueabi-gcc、arm-linux-gnueabihf-gcc、arm-linux-gcc等,具体要和目标板用的交叉编译工具对应。

4 编译

$ make                  # 编译,如果电脑是多核CPU,如四核,使用make -j4可提高编译速度

make 后,当前目录下会生成两个文件:vsftpdvsftpd.conf,这两个文件是我们要用的。

 5 复制文件

将生成的 vsftpd 复制到目标板 /usr/sbin 目录,vsftpd.conf 复制到目标板 /etc 目录,并添加 vsftpd 为可执行:

$ cp vsftpd /usr/sbin                       # 复制执行文件到目标板
$ cp vsftpd.conf /etc/                      # 复制配置文件到目标板
$ chmod +x /usr/sbin/vsftpd                 # 添加可执行权限

 

6 配置

使用 vi 打开 vsftpd.conf 文件,并进行配置,如下配置可实现正常上传下载功能:

anonymous_enable=NO                 # 默认的 YES 改为 NO
local_enable=YES                    # 删除前面的#号注释符号
write_enable=YES                    # 删除前面的#号注释符号
anon_upload_enable=NO               # 删除前面的#号注释符号,并将 YES 改为 NO
anon_mkdir_write_enable=NO          # 删除前面的#号注释符号,并将 YES 改为 NO
anon_other_write_enable=NO          # 删除前面的#号注释符号,并将 YES 改为 NO(这一项新版本中可能没有) 
chroot_local_user=YES               # 删除前面的#号注释符号,改行表示把FTP用户都限制在家目录中

allow_writeable_chroot=YES          # 添加本行到文件最后

再在目标版上使用命令配置:

$ adduser nobody                    # vsftpd默认配置需要
$ mkdir /usr/share/empty            # vsftpd默认配置需要

创建一个本地用户,并设置密码:

$ adduser ftpadmin
Changing password for ftpadmin
New password: 
Retype password: 
Password for ftpadmin changed by root

 

7 打开vsftp

配置完之后,在目标板上打开vsftp,命令:

$ vsftpd &

注意,后面还有一个 &。如果要让 vsftpd 开机启动,可以将该命令添加到 /etc/profile 或者 rc.local 文件最后。

8 客户端测试

配置目标板 IP,使其能够与电脑ping通,然后在电脑上打开客户端,输入目标板IP、用户名、密码,就可以连接上去了。

vsftpd移植

如上,连接后可以看到用户目录 /home/ftpadmin 下的所有文件,此时可以新建、上传、下载文件了。

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (10)

  1. 按这个步骤做的,vsftpd服务可以运行起来。在windows端用软件连接显示“无法显示远程文件夹” 在linux用ftp命令可以连接上,ls命令时200 PORT command successful. Consider using PASV. 500 OOPS: socket 弄了一天了,没解决,博主知道什么原因吗
    一夜黑了发 5年前 (2014-12-24) 回复 编辑
    • 试试: 1、关闭xinetd进程:service xinetd stop,重启vsftpd 2、查看是否有其他进程占用21端口,kill掉。 3、kill掉所有vsftpd进程,在重启 4、把listen=YES关闭,即把“listen=YES”修改为“#listen=YES”
      VeryARM 5年前 (2014-12-25) 回复 编辑
  2. 编译了个linux的可以,同样的配置arm上不行。
    一夜黑了发 5年前 (2014-12-25) 回复 编辑
  3. 博主 用了以上方法还是出现 200 PORT command successful. Consider using PASV. 500 OOPS: socket
    4年前 (2015-08-24) 回复 编辑
  4. 编译出错 arm-xiaomi-linux-uclibcgnueabi-gcc -c seccompsandbox.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -Wformat-security -D_FORTIFY_SOURCE=2 -idirafter dummyinc arm-xiaomi-linux-uclibcgnueabi-gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o seccompsandbox.o -Wl,-s -fPIE -pie -Wl,-z,relro -Wl,-z,now `./vsf_findlibs.sh` /lib/libcap.so.2: file not recognized: File format not recognized collect2: error: ld returned 1 exit status Makefile:29: recipe for target 'vsftpd' failed make: *** [vsftpd] Error 1
    heln 4年前 (2015-09-04) 回复 编辑
  5. 楼主 我按照这个方式移植vsftp到arm上,不报错。但是ps后没有vsftp进程出现。不知道是什么情况。
    羽落 3年前 (2016-06-27) 回复 编辑
  6. 谢谢分享