linux下ftp服务器ARM移植

2019-07-13 03:36发布

   linux下ftp服务器ARM移植 操作系统:ubuntu 14.04 + VMware 10交叉编译器:arm-linux-gcc 4.8.3ftp服务器文件包:vsftpd-2.0.4.tar.gz 一、准备源文件  解压缩ftp服务器压缩包:  tar xf vsftpd-2.0.4.tar.gz   进入解压出来的目录:  cd vsftpd-2.0.4二、交叉编译  1、修改Makefile中的交叉编译器路径  CC = /home/zhanglm/tools/arm-linux-gcc4.8.3/bin/arm-linux-gcc  2、修改服务器源文件目录中的脚本文件vsf_findlibs.sh  将这两行注释掉:  #locate_library /lib/libcap.so.1 && echo “/lib/libcap.so.1”  #locate_library /usr/lib/libcap.so && echo ”-lcap”  3、执行 make三、处理动态库依赖  在源文件的根目录中 查看make生成的可执行文件vsftpd的属性信息:  file vsftpd  vsftpd: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.4.3,stripped   使用交叉编译器来查看这个文件运行时需要的动态库:  /home/zhanglm/tools/arm-linux-readelf -d vsftpd  会看到类似下面的信息:(前六项便是要准备的动态库)  Dynamic section at offset 0x130e4 contains 25 entries:   Tag Type Name/Value  0x00000001 (NEEDED) Shared library: [libcrypt.so.1]  0x00000001 (NEEDED) Shared library: [libdl.so.2]  0x00000001 (NEEDED) Shared library: [libnsl.so.1]  0x00000001 (NEEDED) Shared library: [libresolv.so.2]  0x00000001 (NEEDED) Shared library: [libutil.so.1]  0x00000001 (NEEDED) Shared library: [libc.so.6]  0x0000000c (INIT) 0x97b4  0x0000000d (FINI) 0x17efc  0x00000004 (HASH) 0x8128  0x00000005 (STRTAB) 0x8d78  0x00000006 (SYMTAB) 0x8548  0x0000000a (STRSZ) 1245 (bytes)  0x0000000b (SYMENT) 16 (bytes)  0x00000015 (DEBUG) 0x0  0x00000003 (PLTGOT) 0x231d4  0x00000002 (PLTRELSZ) 952 (bytes)  0x00000014 (PLTREL) REL  0x00000017 (JMPREL) 0x93fc  0x00000011 (REL) 0x93cc  0x00000012 (RELSZ) 48 (bytes)  0x00000013 (RELENT) 8 (bytes)  0x6ffffffe (VERNEED) 0x935c  0x6fffffff (VERNEEDNUM) 2  0x6ffffff0 (VERSYM) 0x9256  0x00000000 (NULL) 0x0   把需要的动态库文件(在交叉编译器中)拷贝到rootfs下的lib中。 四、更改配置文件vsftpd.conf  更改之前可以将vsftpd拷贝到rootfs/usr/sbin中,并改属性。  cp ./vsftpd /roofs/usr/sbin/  chmod 777 /rootfs/usr/sbin/vsftpd  chown root:root /rootfs/usr/sbin/vsftpd  更改vsftpd.conf文件:(更改完拷贝到rootfs/etc/)  根据此网址,根据需求自行选自配置  http://www.aiezu.com/system/linux/linux_vsftpd_install_configure.html  (附录在最后)  五、创建vsftpd用户  adduser -g user ftp  (执行完这句命令后会出现提示输入密码,输入两次即可)  接下来将目录ftp更改属性:     chmod 755 ftp  chown root:root ftp  然后创建一个目录:(别人说需要,自己没有实测)  mkdir /usr/share/empty六、启动ftp  根据需求可以编写在脚本里执行 vsftpd &     linux vsftpd的配置参数很多,我们可以通过man5 vsftpd.conf命令获取到vsftpd.conf配置文件的详细帮助信息。下面介绍一些vsftpd常用的参数。   附录:vsftpd 相关文件和目录介绍  1. 与服务器相关的设置参数connect_from_port_20=YES|NO是否使用20号端口做为ftp-data的端口号listen_port=21设置ftp命令通道的端口号dirmessange_enable=YES|NOmessage_file=.message上面两个参数用来配置用户进入到目录时显示某个文件中的内容。listen=YES|NO设置vsftpd是否stand alone方式启动。pasv_enable=YES|NO是否开启被动模式。write_enable=YES|NO用来设置是否允许用户上传文件。idle_session_timeout=300如果用户300秒内没有命令操作,则强制离线。max_Clients=0当vsftpd以stand alone运行时,用来设置最大同时在线数。max_per_ip=0 用于设置同一IP允许的同时最大连接数。pasv_max_port=0pasv_min_port=0用来设置被动模式(passive mode)使用的端口范围,为0时不受限制。ftpd_banner="欢迎语句"banner_file=/path/file设置当用户连接到vsftpd服务器时显示的欢迎信息。 2. 与用户相关的参数guest_username=ftp指定来宾用户身份的用户名guest_enable=YES|NO是否将非匿名用户映射成来宾用户。local_enable=YES|NO是否允许/etc/passwd中的用户以实体用户的身份登录到ftp服务器。local_max_rate=0 设置实体用户的传输速度,单位为bytes/s。chroot_local_user=YES|NOchroot_list_enable=YES|NOchroot_list_file=/etc/vsftpd/chroot_list用来设置哪些用户被限制在自己的目录内无法离开。userlist_enable=YES|NOuserlist_deny=YES|NOuserlist_file=/etc/vsftpd/user_list用来阻止相关用户登录到vsftpd服务器。   3. 匿名用户相关的参数 anonymous_enable=YES|NO是否允许anonymouns用户登录到vsftpd服务器,下面的设置仅在此参数为YES时才有效。anon_world_readable_only=YES|NO仅仅允许下载可读的文件。anon_mkdir_write_enable=YES|NOanon_upload_enable=YES|NOanon_other_write_enable=YES|NO用于设置相关可写权限。no_anon_password=YES|NOanonymous登录时是否可以省略密码。anon_max_rate=0设置anonymous的最大传输速度。anon_umask=077anonymous用户上传文件的权限掩码。 4. 与安全相关的参数: ascii_download_enable=YES|NOascii_upload_enable=YES|NO是否允许ascii方式传输。xferlog_enable=YES|NOxferlog_file=/var/log/vsftpd.log是否记录用户下载上传的文件。