Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2124472
  • 博文数量: 288
  • 博客积分: 10594
  • 博客等级: 上将
  • 技术积分: 3469
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-27 19:27
文章分类

全部博文(288)

文章存档

2012年(4)

2011年(30)

2010年(40)

2009年(32)

2008年(71)

2007年(79)

2006年(32)

分类: LINUX

2009-11-03 14:46:33

为UP-Star Linux2.6.24内核搞了快一天的FTP,终于弄的差不多了,记录下来,主要参考了网络上的几篇好文章,虽然现在嵌入式设备上有很多如TFTP等服务,不过遇到大一些的文件感觉还是FTP比较快一些。

 

1.       下载源码交叉编译

vsftpd 官方网站:

目前最新的是2.1.0

修改Makefile中编译器的CC宏,

CC = arm-linux-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

最后make即可

2.       修改相关配置文件

用linux-gnu-readelf -d vsftpd 命令查看程序所需库文件,在自己的交叉编译工具的库中找到相关库后将其放入根文件系统源码的lib目录下。

把vsftpd拷贝到根文件系统usr/sbin下。

修改vsftpd.conf配置文件(此文件的配置很重要)。

我是根据vsftpd源码下的vsftpd.conf文件修改的,添加了FTP用户及匿名用户访问读写权限(这里没有考虑安全问题)。

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

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

listen=YES

local_root=/

之后将vsftpd.conf拷贝到根文件系统的etc下。

同时需要将用户管理配置文件也拷贝到etc下,它们分别是passwd、group、shadow。

Passwd内容

[root@vm-dev rootfs]# 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:/var/ftp:/bin/bash

其中添加了ftp用户及其在开发板上的登陆目录

Group内容

[root@vm-dev rootfs]# 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:

shadow文件可以不加进来

创建必须的目录empty,在文件系统的usr/share目录下,否则在访问时会出现: 500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/usr/share/empty

3.       重新制作文件系统下载到开发板上,并在开发板的/var/目录下建立ftp目录,且还需在ftp目录下建立匿名登陆的 pub目录,注意ftp的权限是 755而pub的权限是777。

4.       手动执行./vsftpd &就可以使用FTP服务了,可以匿名登陆或使用ftp用户密码是ftp。

5.       此间还可能遇到很多不同的问题, google 一下所有的问题都可以解决。

6.       也可以开机自启动FTP服务,修改相关文件系统中的配置文件即可。

修改etc/rc.d/rc.sysinit文件添加相关FTP目录

# by sprife

if [ ! -d /root/system/var/ftp ]

then

        mkdir /root/system/var/ftp

fi

if [ ! -d /root/system/var/ftp/pub ]

then

        mkdir /root/system/var/ftp/pub

        chmod 777 /root/system/var/ftp/pub/

fi

# by sprife

echo "Running vsftpd server."

/usr/sbin/vsftpd &

即可上电启动FTP服务。

阅读(6426) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~