ToToSun的博客
下载vsftp源码
$wget http://fossies.org/linux/misc/vsftpd-3.0.5.tar.gz
$tar -xvzf vsftpd-3.0.5.tar.gz
$cd vsftpd-3.0.5
CC = gcc 改为 CC = arm-linux-gnueabihf-gcc #如果未设置环境变量,需要编译器的绝对路径
修改交叉编译工具
$vim Makefile
$make
将目录下生成的的vsftpd移植到开发板的/usr/sbin目录下
对vsftpd进行修改,然后移植到开发板的/etc目录下
#以下为一个简单的配置。vsftpd.conf文件。 anonymous_enable=YES #是否允许匿名访问 local_enable=YES #允许本地用户访问(/etc/passwd中的用户) write_enable=YES #允许写入权限,包括修改,删除 local_umask=777 #本地用户文件上传后的权限 local_root=/vat/ftp #设定所有本地用户登陆后的目录。 #如不设此项,则本地用户登陆后位于各自家目录下(如/home/yaho)。 anon_umask=777 #匿名用户上传后权限 anon_upload_enable=YES #允许匿名用户上传 anon_mkdir_write_enable=YES #允许匿名用户建立目录 anon_other_write_enable=YES #允许匿名用户具有建立目录,上传之外的权限,如重命名,删除 anon_world_readable_only=YES #允许匿名用户浏览,下载文件 no_anon_password=YES #匿名用户登录是不需要密码,YES不需要密码;NO需要密码 anon_root=/var/ftp #设定匿名用户登陆后所在的目录 dirmessage_enable=YES #当使用者转换目录,则会显示该目录下的.message信息 connect_from_port_20=YES #确保ftp-datad 数据传送使用port 20 pam_service_name=vsftpd #PAM所使用的名称.同userlist_*一样限制用户登陆, #不同的是userlist_*在进行密码验证之前拒绝用户登陆, #pam是在密码验证之后拒绝登陆.(提示密码错误) #用户列表默认存放在/etc/ftpusers中,一行一个. #(可通过/etc/pam.d/vsftpd重定向用户列表存放文件) ftp_username=ftp #定义匿名登入的使用者名称。默认值为ftp。 tcp_wrappers=NO #支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny), #NO是可以访问 listen_port=21 #ftp监听端口,注意是21 allow_writeable_chroot=YES
#mkdir /var/ftp
#mkdir /var/ftp/pub //改文件夹可以拉取,上传和删除操作
#chmod 777 /var/ftp //会导致问题1,chmod 555 /var/ftp
#chmod 777 /var/ftp/pub
#adduser nobody //vsftpd匿名用户登陆,必需
#mkdir /usr/share/empty //必需
#adduser -d /home/ftp ftp //若该指令无效,请尝试adduser -h /home/ftp ftp
#chown root:root /home/ftp //注意不是/var/ftp
#chmod 755 /home/ftp
#vsftpd /etc/vsftpd.conf &
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解决操作#chmod a-w /var/ftp
网上推荐的方法二 配置文件添加allow_writeable_chroot=YES,本人测试无效