Vsftpd 在DM365平台(monovista6.0)上的移植
1.下载
ftp://vsftpd.beasts.org/users/cevans/
vsftpd-2.0.6.tar.gz
2.安装
①解压后,进入vsftpd-2.0.6目录
命令: tar zxvf vsftpd-2.0.6.tar.gz
cd vsftpd-2.0.6
②根据你的编译器修改Makefile文件
如果是在PC上用,就不要改。CC = gcc
我是把vsftpd移植到开发办上,使用的是arm_v5t_le-gcc编译器
修改:CC = /opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gc
③(库libcap的问题)如果编译器提示无法识别文件:libpam.so.o 、libcap.so.1
修改vsf_findlibs.sh文件
修改:locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";
变为: locate_library /opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/lib/libpam.so.0 && echo "/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/lib/libpam.so.0";
修改:locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1";
变为:locate_library /opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/usr/lib/libcap.so.1 && echo "/opt/mv_pro_4.0.1/montavista/pro/devkit/arm/v5t_le/target/usr/lib/libcap.so.1"
④.make
⑤ 如果移植到开发板上,可能还要几个动态库的文件。我们可以在用Nfs启动开发板时(TI提供的nfs文件系统有几乎完整的库)用ldd 命令,来确定缺少哪些动态库文件。经过尝试,本人在开发板上运行时需要:
libcap.so.1库(有可能还缺其他的),所以在我的开发板提供的完整文件系统中,找到相关文件拷贝到开发板中即可;
具体操作:
将/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/usr/lib 下 libcap.so.1,libreadline.so.4,libncurses.so.5拷贝到开发办目录中/workdir/filesye/usr/lib/
⑥将vsftpd-2.0.6目录下vsftpd执行程序拷贝到/usr/sbin中
将vsftpd-2.0.6目录下vsftpd.conf配置文件拷贝到/etc/下
⑦修改配置文件 vsftpd.conf。这里我们使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式) 所以在 vsftpd.conf 中 添加:
listen=YES
需要运行时需要显示的运行 如 在命令行输入:vsftpd &或者在启动脚本中加入相关的运行命令;
关于具体的vsftpd.conf的配置详细请参考相关文档,这里给出一个简单配置:
修改: #write_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
去除这三项前面的#
h.在/var/下创建一个目录ftp,权限:755
mkfir /var/ftp
chmod 755 /var/ftp
在/ftp/下创建一个目录upload,权限:777
mkfir /var/ftp/upload
chmod 777 /var/ftp/upload
i.运行vsftpd &,启动vsftpd后台程序。
这样就在该平台上创建了ftp服务器,匿名登陆,/ftp目录具有只读属性,/upload目录具有可读,可写属性
j.如果要修改vsftpd的下载目录,修改vsftpd.conf
如果修改登陆目录有/var/ftp,改为/opt/ftp
/opt/下创建一个目录ftp,权限:755
mkfir /opt/ftp
chmod 755 /opt/ftp
在/ftp/下创建一个目录upload,权限:777
mkfir /opt/ftp/upload
chmod 777 /opt/ftp/upload
在vsftpd.conf下添加一行:anon_root=/opt/ftp就可以了
k. vsftpd修改vsftpd.conf后,重启平台。有时好像仅仅vsftpd &不管用
3注意:
I
如果要在ftp目录下建立一个软连接目录。使用mount --bind 原目录 链接目录例如ftp 目录 /var/ftp ,还有一个目录/opt/tmp,想将/opt/tmp目录作为/var/ftp的子目录ftptmp mount --bind /opt/tmp /var/ftp/ftptmp 那么对,/var/ftp/ftptmp的访问,就是对/opt/tmp的访问
II
在运行vsftpd的时候,若出现如下提示错误:500 OOPS: could not bind listening IPv4 socket
这是因为你又能在其它地方已经启动了ftp的服务.例如已经用XINET模式启动在配置文件/etc/xinet.d/vsftpd还在并且是自启动的,也就是说是XINET模式;但是/etc/rc.local中又写入了启动脚本,因此便发生了冲突,只需要关闭它们中的一个问题就解决了。
有以下两种方式:
1.使用XINET模式
去掉/etc/rc.local文件中的vsftpd的启动脚本/usr/local/sbin/vsftp &
运行service vsftpd restart命令启动vsftpd
2.使用STANDALONE独立模式
在服务器的负担比较重的情况下最好用这个模式
chkconfig vsftpd --level 3 off
或者直接修改/etc/xinetd.d/vsftpd文件,把disable=no改成disable=yes就行了!
III
与vsftod相关的配置文件如下:
/usr/sbin/vsftpd ---- VSFTPD的主程序(必需)
/etc/rc.d/init.d/vsftpd ---- 启动脚本
/etc/vsftpd.conf ---- 主配置文件(必需)
/etc/pam.d/vsftpd ---- PAM认证文件
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
/etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
/etc/userconf ------ 指定用户个人配置文件所在的目录
/var/ftp ---- 匿名用户主目录
/var/ftp/pub---- 匿名用户的上传目录
/var/log/vsftpd.log ------- 日志文件
除vsftpd、vsftpd.conf两个文件外,其他文件的需要具体看主配置文件的配置
文章评论(0条评论)
登录后参与讨论