使用vsftpd部署ftp服务器:
1.sudo mkdir /usr/share/empty
2.sudo mkdir -p /etc/vsftpd/userconf
3.sudo vi /etc/vsftpd/userconf/xxx
其中xxx为你的用户名
加入你的登录默认目录:
1 /home/xxx/
:wq保存退出
4.将编译好的vsftpd放到/usr/sbin目录下
5.将配置好的vsftpd.conf放到/etc目录下
分享一下作者的vsftpd.conf文件:

1 # Example config file /etc/vsftpd.conf 2 # 3 # The default compiled in settings are fairly paranoid. This sample file 4 # loosens things up a bit, to make the ftp daemon more usable. 5 # Please see vsftpd.conf.5 for all compiled in defaults. 6 # 7 # READ THIS: This example file is NOT an exhaustive list of vsftpd options. 8 # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's 9 # capabilities. 10 # 11 # Allow anonymous FTP? (Beware - allowed by default if you comment this out). 12 anonymous_enable=NO 13 # 14 # Uncomment this to allow local users to log in. 15 local_enable=YES 16 # 17 # Uncomment this to enable any form of FTP write command. 18 write_enable=YES 19 # 20 # Default umask for local users is 077. You may wish to change this to 022, 21 # if your users expect that (022 is used by most other ftpd's) 22 local_umask=022 23 # 24 # Uncomment this to allow the anonymous FTP user to upload files. This only 25 # has an effect if the above global write enable is activated. Also, you will 26 # obviously need to create a directory writable by the FTP user. 27 #anon_upload_enable=YES 28 # 29 # Uncomment this if you want the anonymous FTP user to be able to create 30 # new directories. 31 #anon_mkdir_write_enable=YES 32 # 33 # Activate directory messages - messages given to remote users when they 34 # go into a certain directory. 35 dirmessage_enable=YES 36 # 37 # Activate logging of uploads/downloads. 38 xferlog_enable=YES 39 # 40 # Make sure PORT transfer connections originate from port 20 (ftp-data). 41 connect_from_port_20=YES 42 # 43 # If you want, you can arrange for uploaded anonymous files to be owned by 44 # a different user. Note! Using "root" for uploaded files is not 45 # recommended! 46 #chown_uploads=YES 47 #chown_username=whoever 48 # 49 # You may override where the log file goes if you like. The default is shown 50 # below. 51 #xferlog_file=/var/log/vsftpd.log 52 # 53 # If you want, you can have your log file in standard ftpd xferlog format. 54 # Note that the default log file location is /var/log/xferlog in this case. 55 #xferlog_std_format=YES 56 # 57 # You may change the default value for timing out an idle session. 58 #idle_session_timeout=600 59 # 60 # You may change the default value for timing out a data connection. 61 #data_connection_timeout=120 62 # 63 # It is recommended that you define on your system a unique user which the 64 # ftp server can use as a totally isolated and unprivileged user. 65 #nopriv_user=ftpsecure 66 # 67 # Enable this and the server will recognise asynchronous ABOR requests. Not 68 # recommended for security (the code is non-trivial). Not enabling it, 69 # however, may confuse older FTP clients. 70 #async_abor_enable=YES 71 # 72 # By default the server will pretend to allow ASCII mode but in fact ignore 73 # the request. Turn on the below options to have the server actually do ASCII 74 # mangling on files when in ASCII mode. 75 # Beware that on some FTP servers, ASCII support allows a denial of service 76 # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd 77 # predicted this attack and has always been safe, reporting the size of the 78 # raw file. 79 # ASCII mangling is a horrible feature of the protocol. 80 #ascii_upload_enable=YES 81 #ascii_download_enable=YES 82 # 83 # You may fully customise the login banner string: 84 #ftpd_banner=Welcome to blah FTP service. 85 # 86 # You may specify a file of disallowed anonymous e-mail addresses. Apparently 87 # useful for combatting certain DoS attacks. 88 #deny_email_enable=YES 89 # (default follows) 90 #banned_email_file=/etc/vsftpd.banned_emails 91 # 92 # You may specify an explicit list of local users to chroot() to their home 93 # directory. If chroot_local_user is YES, then this list becomes a list of 94 # users to NOT chroot(). 95 # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that 96 # the user does not have write access to the top level directory within the 97 # chroot) 98 chroot_local_user=YES 99 #chroot_list_enable=YES 100 # (default follows) 101 #chroot_list_file=/etc/vsftpd.chroot_list 102 # 103 # You may activate the "-R" option to the builtin ls. This is disabled by 104 # default to avoid remote users being able to cause excessive I/O on large 105 # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume 106 # the presence of the "-R" option, so there is a strong case for enabling it. 107 #ls_recurse_enable=YES 108 # 109 # When "listen" directive is enabled, vsftpd runs in standalone mode and 110 # listens on IPv4 sockets. This directive cannot be used in conjunction 111 # with the listen_ipv6 directive. 112 listen=YES 113 # 114 # This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6 115 # sockets, you must run two copies of vsftpd with two configuration files. 116 # Make sure, that one of the listen options is commented !! 117 #listen_ipv6=YES 118 user_config_dir=/etc/vsftpd/userconf 119 allow_writeable_chroot=YES
6.sudo vsftpd
作者使用本地登录,故没有设置匿名登录和虚拟用户登录。
说几点编译和配置过程中的问题:
vsftpd-3.0.3的Makefile中LDFLAGS = -fPIE -pie -Wl,-z,relro -Wl,-z,now
的-pie为安卓的一项优化,去掉这个参数时:file vsftpd后打印
vsftpd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID[sha1]=0x9c3191e6733b647f317db673e978973bf715a30d, stripped
加上这个参数时:file vsftpd后打印
vsftpd: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID[sha1]=0x91f7bb66d0bcddacb21a974af9dced98a4802bcf, stripped
比较得出,由executable变为了shared object,这是安卓做的一项优化,既可以作为链接库又可以作为可执行文件。
注:作者使用的是交叉编译,编译的是arm平台的app