嵌入式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
以上步骤经过实验,是完全可行的;