原创 Vsftpd 在DM365平台(monovista6.0)上的移植

2011-5-9 15:54 3094 8 8 分类: MCU/ 嵌入式

 

Vsftpd 在DM365平台(monovista6.0)上的移植


1.下载
ftp://vsftpd.beasts.org/users/cevans/
vsftpd-2.0.6.tar.gz
2.安装

 ①解压后,进入vsftpd-2.0.6目录
    命令: tar zxvf vsftpd-2.0.6.tar.gz
              cd vsftpd-2.0.6
 ②根据你的编译器修改Makefile文件
    如果是在PC上用,就不要改。CC = gcc
    我是把vsftpd移植到开发办上,使用的是arm_v5t_le-gcc编译器
    修改:CC  = /opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gc

 库libcap的问题如果编译器提示无法识别文件:libpam.so.o 、libcap.so.1
     修改vsf_findlibs.sh文件
     修改:locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";
     变为:  locate_library /opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/lib/libpam.so.0 && echo "/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/lib/libpam.so.0";

     修改:locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1";
     变为:locate_library  /opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/usr/lib/libcap.so.1 && echo "/opt/mv_pro_4.0.1/montavista/pro/devkit/arm/v5t_le/target/usr/lib/libcap.so.1"
④.make

⑤ 如果移植到开发板上,可能还要几个动态库的文件。我们可以在用Nfs启动开发板时(TI提供的nfs文件系统有几乎完整的库)用ldd 命令,来确定缺少哪些动态库文件。经过尝试,本人在开发板上运行时需要:

libcap.so.1库(有可能还缺其他的),所以在我的开发板提供的完整文件系统中,找到相关文件拷贝到开发板中即可;

具体操作:
将/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/usr/lib 下 libcap.so.1,libreadline.so.4,libncurses.so.5拷贝到开发办目录中/workdir/filesye/usr/lib/
 ⑥将vsftpd-2.0.6目录下vsftpd执行程序拷贝到/usr/sbin中
      将vsftpd-2.0.6目录下vsftpd.conf配置文件拷贝到/etc/下
   
⑦修改配置文件 vsftpd.conf。这里我们使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)    所以在  vsftpd.conf 中 添加:
             listen=YES

需要运行时需要显示的运行 如 在命令行输入:vsftpd &或者在启动脚本中加入相关的运行命令;

 

关于具体的vsftpd.conf的配置详细请参考相关文档,这里给出一个简单配置:
      修改: #write_enable=YES
  #anon_upload_enable=YES
  #anon_mkdir_write_enable=YES
      去除这三项前面的#
    h.在/var/下创建一个目录ftp,权限:755
      mkfir /var/ftp
      chmod 755 /var/ftp
      在/ftp/下创建一个目录upload,权限:777
      mkfir /var/ftp/upload
      chmod 777 /var/ftp/upload
   i.运行vsftpd &,启动vsftpd后台程序。
   这样就在该平台上创建了ftp服务器,匿名登陆,/ftp目录具有只读属性,/upload目录具有可读,可写属性
   
   j.如果要修改vsftpd的下载目录,修改vsftpd.conf
     如果修改登陆目录有/var/ftp,改为/opt/ftp
       /opt/下创建一个目录ftp,权限:755
      mkfir /opt/ftp
      chmod 755 /opt/ftp
      在/ftp/下创建一个目录upload,权限:777
      mkfir /opt/ftp/upload
      chmod 777 /opt/ftp/upload
      在vsftpd.conf下添加一行:anon_root=/opt/ftp就可以了
   k. vsftpd修改vsftpd.conf后,重启平台。有时好像仅仅vsftpd &不管用
3注意:

I  

如果要在ftp目录下建立一个软连接目录。使用mount --bind 原目录  链接目录例如ftp 目录 /var/ftp  ,还有一个目录/opt/tmp,想将/opt/tmp目录作为/var/ftp的子目录ftptmp mount --bind /opt/tmp /var/ftp/ftptmp 那么对,/var/ftp/ftptmp的访问,就是对/opt/tmp的访问

II

在运行vsftpd的时候,若出现如下提示错误:500 OOPS: could not bind listening IPv4 socket

这是因为你又能在其它地方已经启动了ftp的服务.例如已经用XINET模式启动在配置文件/etc/xinet.d/vsftpd还在并且是自启动的,也就是说是XINET模式;但是/etc/rc.local中又写入了启动脚本,因此便发生了冲突,只需要关闭它们中的一个问题就解决了。
有以下两种方式:

1.使用XINET模式
去掉/etc/rc.local文件中的vsftpd的启动脚本/usr/local/sbin/vsftp &
运行service vsftpd restart命令启动vsftpd
2.使用STANDALONE独立模式
在服务器的负担比较重的情况下最好用这个模式
chkconfig vsftpd --level 3 off
或者直接修改/etc/xinetd.d/vsftpd文件,把disable=no改成disable=yes就行了!

 

III

与vsftod相关的配置文件如下:

/usr/sbin/vsftpd ---- VSFTPD的主程序(必需)
/etc/rc.d/init.d/vsftpd ---- 启动脚本
/etc/vsftpd.conf ---- 主配置文件(必需)
/etc/pam.d/vsftpd ---- PAM认证文件
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
/etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
/etc/userconf ------ 指定用户个人配置文件所在的目录
/var/ftp ---- 匿名用户主目录
/var/ftp/pub---- 匿名用户的上传目录
/var/log/vsftpd.log ------- 日志文件
除vsftpd、vsftpd.conf两个文件外,其他文件的需要具体看主配置文件的配置

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /3 下一条