vsftp 的移植

1、   下载源码
下载vsftpd-2.3.4.tar.gz,下载地址:
http://pkgs.fedoraproject.org/repo/pkgs/vsftpd/vsftpd-2.3.4.tar.gz/2ea5d19978710527bb7444d93b67767a/  

2 、移植libcap库
如果没有移植并使用libcap,也可心使用ftp,但会出现以下警告:
warning:
`vsftpd' uses 32-bit capabilities (legacy support in use)

(1)   下载libcap源代码
下载地址:
http://build.meego.com/package/files?package=libcap&project=Base%3ABuild%3Aarm
或者
http://mirror.nexcess.net/kernel.org/linux/libs/security/linux-privs/libcap2/
(2) 编译
进入源代码的libcap目录
#cd libcap

修改Makefile
在include
../Make.Rules这一行后面指定添加一行,指定交叉编译器:CC=arm-none-linux-gnueabi-gcc


屏蔽以下这两行
FILES += cap_file
LDFLAGS += -lattr
修改后的内容如下:
ifeq
($(LIBATTR),yes)

# FILES += cap_file
# LDFLAGS += -lattr
Endif

修改完后保存退出,make编译,生成了libcap动态库,把它安装到/usr/local/lib目录下

2 、交叉编译
修改Makefile中编译器的CC宏,
CC  =  
arm-none-linux-gnueabi-gcc

之后注释掉脚本vsf_findlibs.sh中关于libcap语句,
# Look for libcap
(capabilities)

#if locate_library
/lib/libcap.so.1; then

#  echo "/lib/libcap.so.1";
#else
#  locate_library /usr/lib/libcap.so &&
echo "-lcap";

#  locate_library /lib/libcap.so && echo
"-lcap";

#fi
更改为
if locate_library
/lib/libcap.so.1; then

  echo "/lib/libcap.so.1";
else
  locate_library /usr/local/lib/libcap.so
&&\

      echo
"/usr/local/lib/libcap.so";

fi

并增加又下内容
locate_library /opt/arm-2007q1/arm-none-linux-gnueabi
\

        /libc/lib/libcrypt-2.5.so &&
echo "-lcrypt-2.5";

最后make编译通过

3 、查看程序所需库文件
#arm-none-linux-gnueabi-readelf
-d vsftpd
如果开发板的lib目录下没有动态编译所需要的库文件,就在自己的交叉编译工具的库中找到相关库后将其放入文件系统的lib目录下,并用chmod 777修改链接库的权限

4 、修改vsftpd.conf配置文件
添加了FTP用户及匿名用户访问读写权限(这里没有考虑安全问题)。
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
async_abor_enable=YES
nopriv_user=ftp
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome
to blah FTP service.

ls_recurse_enable=YES
listen_port=21
anon_other_write_enable=YES
之后将vsftpd.conf拷贝到开发板的etc/vsftpd目录下,并把vsftpd拷贝到根文件系统usr/sbin下。

5 、为ftp建立用户
修改开发板etc目录下的用户管理配置文件,它们分别是passwd、group。
Passwd 内容
# vi etc/passwd
root::0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
ftp:x:14:50:FTP
User:/home/ftp:/bin/bash

其中添加了ftp用户及其在开发板上的登陆目录
Group 内容
# vi etc/group
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
ftp:x:50:
创建必须的目录empty,在文件系统的usr/share目录下,否则在访问时会出现: 500 OOPS: vsftpd: not found: directory given in
'secure_chroot_dir':/usr/share/empty


6 、重新制作文件系统下载到开发板上,并在开发板的/home/目录下建立ftp目录,且还需在ftp目录下建立匿名登陆的 pub目录,更改 pub的权限是777

7 、测试
在开发板上运行
 #vsftpd /etc/vsftpd/vsftpd.con &

开发板的IP地址是192.168.1.110
可以在XP系统的cmd命令模式中执行
C:\> ftp
ftp>open
192.168.1.110

来测试,便于发现问题
然后在浏览器地址栏中输入ftp://192.168.1.110,匿名访问

你可能感兴趣的:(vsftp 的移植)