上周做了嵌入式FTP服务器的移植工作,现在整理成一篇文档
开始移植pureftpd服务器没有成功,配置交叉编译不行,参考了篇移植文档,还是不行,放弃
移植vsftp服务器
1、从网上取得目前最新2.0.5版本:vsftpd-2.0.5.tar.gz

2、解压vsftpd-2.0.5.tar.gz,然后进入该目录:cd vsftpd-2.0.5

3、make CC=arm-uclibc-linux-gcc,会出现/lib/libcap.so.1: could not read symbols编译错误,找不到libcap.so.1这个库文件

4、修改vsftpd-2.0.5目录下vsf_findlibs.sh文件,屏蔽掉“locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1";”
   在下面加上“locate_library /opt/hisilicon/toolchains/arm-uclibc-linux-soft/arm-uclibc-linux/lib/libcap.so.1 && echo "/lib/libcap.so.1";”

5、编译成功后,然后make install,默认是安装在/usr/local/sbin/目录下,如果需要更改到自己的目录下,修改Makefile文件,
   把install:下面/usr/local/sbin改成你自己认为的安装目录

6、安装成功后,在/usr/local/sbin/目录下会生成vsftpd可执行文件,为了减小vsftpd的大小,运行一下arm-uclibc-linux-strip vsftpd

7、把vsftpd下载到板子上/usr/local/sbin或者/usr/sbin目录下

8、在vsftpd-2.0.5目录下有一个vsftpd.conf的默认配置文件,修改此默认配置文件,把此配置文件下载到板子/etc目录下
   vsftpd提供匿名用户、本地用户、虚拟用户,具体设置可参考提供的vsftpd.conf的配置文件,在每个选项上面都已做了说明

9、在板子上创建必要的帐号、目录:
  #adduser nobody          //VSFTPD默认配置中需要“nobody”用户。可能系统已经存在此帐号,那就不用建立
  #mkdir /usr/share/empty  //VSFTPD默认配置中需要“/usr/share/empty”目录。可能系统已经存在此目录,那就不用建立
  
  #mkdir /var/ftp          //VSFTPD提供匿名FTP服务时,需要“ftp”用户和一个有效的匿名目录。可能系统已经存在此目录,那就不用建立
  #adduser -D /var/ftp ftp  //可能你的系统已经存在此帐号,那就不用建立
  
  #chown root:root /var/ftp
  #chmod og-w /var/ftp
10、创建一个本地用户,创建好之后就可以用zz登录
    #adduser zz
    #passwd 123456
11、添加一个只能从ftp登录服务器,而不能从本地登录的用户
    #adduser –g ftp –s /sbin/nologin ftpuser
    #passwd 123456
12、VSFTPD的文件结构,主要包括:
    /usr/sbin/vsftpd ---- VSFTPD的主程序(必需)
    /etc/rc.d/init.d/vsftpd ---- 启动脚本
    /etc/vsftpd/vsftpd.conf ---- 主配置文件(必需)
    /etc/pam.d/vsftpd ---- PAM认证文件
    /etc/vsftpd/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
    /etc/vsftpd/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
    /etc/vsftpd/userconf ------ 指定用户个人配置文件所在的目录
    /var/ftp ---- 匿名用户主目录
    /var/ftp/pub---- 匿名用户的下载目录
    /var/log/vsftpd.log ------- 日志文件
    除vsftpd、vsftpd.conf两个文件外,其他文件的需要具体看主配置文件的配置
13、运行vsftpd程序,然后在PC机启用FTP客户端软件,就可以从板子上下载文件

具体的配置文件没有贴上