嵌入式ftp服务器移植

2019-07-12 20:11发布

嵌入式FTP服务器(vsftpd)移植说明       FTP软件版本     vsftpd-2.1.2     操作系统     ubuntu-10.04     交叉编译工具     arm-none-linux-gnueabi-gcc (4.4.3)      一. 交叉编译vsftpd     1. tar –xvzfvsftpd-2.12.tar.gz cd vsftpd-2.12 2. 修改makefile #CC =   gcc CC   =   arm-none-linux-gnueabi-gcc 3. 修改vsf_findlibs.sh #iflocate_library /lib/libcap.so.1; then #  echo "/lib/libcap.so.1"; #eliflocate_library /lib/libcap.so.2; then #  echo "/lib/libcap.so.2"; #else #  locate_library /usr/lib/libcap.so &&echo "-lcap"; #  locate_library /lib/libcap.so && echo"-lcap"; #fi 4. make        最后生成了vsftpd ,放在根文件系统目录/usr/sbin目录下,或者制定的程序运行目录下均可   二. 配置vsftpd服务器        1.主要是修改vsftpd.conf文件     最后文件中的配置设置为如下: anonymous_enable=YES                 //使能匿名登录 anon_umask=022 no_anon_password=YES                //匿名登录是不需要口令 ftp_username=ftp                    //必须设置,匿名登录时会寻找这个账户,找 不到会失败,因此系统必须有有此ftp的账户,匿名登录和使用ftp登录的效果是一     样的   local_enable=YES write_enable=YES local_umask=022   local_root=/home/root/dm816x-evm/ftp/FtpRoot/   //设置本地用户登陆根目录 anon_root=/home/root/dm816x-evm/ftp/FtpRoot/    //设置匿名登录根目录 chroot_local_user=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 ascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome to blah FTP service. ls_recurse_enable=YES listen=YES listen_port=21   重要的设置如上图所示    2. 建立必要的文件夹 mkdir –p/usr/share/empty 不创建的话,ftp客户端访问会出现问题   mkdir-p /etc/vsftpd 将配置文件vsftpd.conf放到此目录下,vsftpd程序执行时,会读取此配置文件   创建ftp传输根目录 mkdir –p/home/root/dm816x-evm/ftp/FtpRoot/ chownroot:root /home/root/dm816x-evm/ftp/FtpRoot/ chmod755 /home/root/dm816x-evm/ftp/FtpRoot/ mkdir –p/home/root/dm816x-evm/ftp/FtpRoot/pub chmod777 /home/root/dm816x-evm/ftp/FtpRoot/pub   在这里本地用户登陆和匿名登录都使用/home/root/dm816x-evm/ftp/FtpRoot/作为根目录,本地用户和匿名用户登陆会有一些区别 利用root用户登陆服务器的话,/home/root/dm816x-evm/ftp/FtpRoot/文件目录是可读和可写的; 匿名登陆/home/root/dm816x-evm/ftp/FtpRoot/是不可写的,vsftpd处于安全性的考虑,匿名登陆登陆根目录必须是不可写的,所以/home/root/dm816x-evm/ftp/FtpRoot/设置权限为755;因此为了匿名登录也是可读可写,可以在根目录下建立可读可写的目录,如/home/root/dm816x-evm/ftp/FtpRoot/pub     3. 添加必要的账户用来登陆,匿名登录时需要转向此账户    adduser ftp //供匿名登录使用,ftp登录和匿名登录的效果是一样的   5. 添加其他的账户 adduserzslf 此账户的登陆效果和root一样,但是不可写,因此也需要在本地用户根目录下新建一个可读和可写的目录来供其他的账户使用;     三.命令执行 ./vsftpd/etc/vsftpd/vsftpd.conf  &     四.静止匿名登录   500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp    取消匿名模式。       vsftpd.conf中将anonymous_enable设置为NO,       anonymous_enable=NO         以上步骤经过实验,是完全可行的;