1.编译
修改makfile,将CC=gcc改成CC=arm-none-linux-gnueabi-gcc
#make
*发现编译无法通过,出现库无法找到的情况,为了方便起见,将vsf_findlibs.sh中指定库的位置改成你的开发环境库的位置
*如果还是无法通过,暂时屏蔽掉这个库的相关设置,然后再编译,看看是否能否通过。
(linux下.so一边代表动态库)
(linux下.a一边代表静态库)
所谓库就是程序当中调用的一类函数或者头文件的整合,也就是你生成可执行文件依赖的一部分,不一样的是静态库会编译进你的二进制文件当中,但是动态库不会,这样会帮助你省去不少磁盘空间。
动态库的好处是你可以对库的依赖单独编译,静态库一旦改变,你的整个可执行文件都要重新编译。
安装的时候sudo apt-get install lib*-dev就是安装相关的库。
编译成功以后,你就会可以得到vsftp的可执行文件,拷贝到你的开发环境当中。
到此,你移植的过程得到的“材料”部分就已经基本配备齐全:
vsftpd,vfstpd.conf,还有你编译的时候用到的库(编译库的过程也是.c,.i, .s, .o, .b的过程)。
2.配置
ftp是基于tcp的文件传输服务器,配置ftp非常简单,但是如果真正的要理解,还需要自己对用户权限和协议本身有一定了解,会很有助于你解决ftp传输当中的一些问题,此处不做讨论。
a.基本配置项介绍:
anonymous_enable=YES 匿名登录
local_enable=YES 不推荐,本地还登录什么,真是的。
local_umask=022 umask设定的是权限的缺省值,就是补码,所以一般设置为022
anon_upload_enable=YES匿名用户上传
……
b.根据环境配置设置自己的选项;
3.运行
开发板上的环境非常有限,有些命令也许没有,为了简单方便实用来讲,我们不需要设置太多的限制,因而综合考虑。
aa.将vsftpd.conf拷贝到/etc目录下
vsftpd.conf 拷贝到/usr/sbin
bb.运行vsftpd [directory]
如果不加[directory], 会出现下面的错误:
500 OOPS: could not bind listening IPv4 socket的错误
*根据这个提示,查看目前的状态,发现是由于inetd这个服务抢占了21这个端口,因而停掉inetd进程。
注:inetd其实是一款辅助服务进程,如果在自己的系统当中用不到的话就可关掉,否则可以不用vsftp的standalone模式,采用由inetd服务启动的模式。
cc.上述工作已经成功的运行了vsftpd,但是对于用户权限都还没有任何设置,因而下面主要介绍三种成功登陆vsftp的方法。
一、 匿名登陆的设置:
创建必要的帐号,目录:
# useradd nobody //可能你的系统已经存在此帐号,那就不用建立
# mkdir /usr/share/empty //可能你的系统已经存在此目录,那就不用建立
# mkdir /var/ftp //可能你的系统已经存在此目录,那就不用建立
请记住,如果你不想让用户在本地登陆,那么你需要把他的登陆SHELL设置成/sbin/nologin,比如以上的nobody我就设置成/sbin/nologin
需要设置的项有:
*为可选
anonymous_enable=YES
local_umask=022
*write_enable=YES
*anon_upload_enable=YES
*anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES
anon_umask=077 //匿名登陆的权限是RW
secure_chroot_dir=#dir 这个是必须设置的项,ftp用户对该目录没有写权限。偶尔在vsftpd不需要访问文件系统时,该目录被用作一个安全的chroot() jail(监狱)。
chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。
ftp下设置的pub目录必须有充足的权限。
设置好之后配合vsftp本身的默认设置直接登陆就可以了,不存在任何困难(有时间的话可以对每一项进行具体检测)。
vsftp &来重启ftp server。
二、本地用户登陆设置的实现
(后续补入)
三、虚拟用户登录
(后续补入)
阅读(615) | 评论(0) | 转发(0) |