linux下ftp服务器ARM移植
操作系统:ubuntu 14.04 + VMware 10
交叉编译器:arm-linux-gcc 4.8.3
ftp服务器文件包: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|NO
message_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=0
pasv_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|NO
chroot_list_enable=YES|NO
chroot_list_file=/etc/vsftpd/chroot_list
用来设置哪些用户被限制在自己的目录内无法离开。
userlist_enable=YES|NO
userlist_deny=YES|NO
userlist_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|NO
anon_upload_enable=YES|NO
anon_other_write_enable=YES|NO
用于设置相关可写权限。
no_anon_password=YES|NO
anonymous登录时是否可以省略密码。
anon_max_rate=0
设置anonymous的最大传输速度。
anon_umask=077
anonymous用户上传文件的权限掩码。
4. 与安全相关的参数:
ascii_download_enable=YES|NO
ascii_upload_enable=YES|NO
是否允许ascii方式传输。
xferlog_enable=YES|NO
xferlog_file=/var/log/vsftpd.log
是否记录用户下载上传的文件。
linux下ftp服务器ARM移植
操作系统:ubuntu 14.04 + VMware 10
交叉编译器:arm-linux-gcc 4.8.3
ftp服务器文件包: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|NO
message_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=0
pasv_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|NO
chroot_list_enable=YES|NO
chroot_list_file=/etc/vsftpd/chroot_list
用来设置哪些用户被限制在自己的目录内无法离开。
userlist_enable=YES|NO
userlist_deny=YES|NO
userlist_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|NO
anon_upload_enable=YES|NO
anon_other_write_enable=YES|NO
用于设置相关可写权限。
no_anon_password=YES|NO
anonymous登录时是否可以省略密码。
anon_max_rate=0
设置anonymous的最大传输速度。
anon_umask=077
anonymous用户上传文件的权限掩码。
4. 与安全相关的参数:
ascii_download_enable=YES|NO
ascii_upload_enable=YES|NO
是否允许ascii方式传输。
xferlog_enable=YES|NO
xferlog_file=/var/log/vsftpd.log
是否记录用户下载上传的文件。