分类: 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
#
#else
#
#
#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.
4.
5.
6.
修改etc/rc.d/rc.sysinit文件添加相关FTP目录
# by sprife
if [ ! -d /root/system/var/ftp ]
then
fi
if [ ! -d /root/system/var/ftp/pub ]
then
fi
# by sprife
echo "Running vsftpd server."
/usr/sbin/vsftpd &
即可上电启动FTP服务。