AM335X 开发板安装vsftpd操作流程
1.首先要获取源码
可以在网上下载vsftpd-2.3.4,或者其他的版本,解压之后进入vsftpd-2.3.4目录,主要修改两个文件Makefile和vsf_findlibs.sh两个文件;
第一个文件Makefile
CC = gcc
INSTALL = install
IFLAGS = -idirafter dummyinc
#CFLAGS = -g
CFLAGS = -O2 -Wall -W -Wshadow #-pedantic -Werror -Wconversion
LIBS = `./vsf_findlibs.sh`
LINK = -Wl,-s
这里gcc是对应的编译器修改为arm-arago-linux-gnueabi-gcc即可,这样编译时就会调用交叉编译工具;
第二个文件vsf_findlibs.sh,这个文件主要修改lib库,因为Makefile已经被我们修改,交叉编译需要用到的lib库的路径需要在sh里面进行修改,这里需要修改的lib路径主要有三个,第一个是主要关于cap库的 需要修改
# Look for libcap (capabilities)
if locate_library /lib/libcap.so.1; then
echo "/lib/libcap.so.1";
elif locate_library /lib/libcap.so.2; then
echo "/lib/libcap.so.2";
# add by zlb start 2015-2-10
elif
locate_library /home/ftploop/arm-arago-linux-gnueabi/arm-arago-linux-gnueabi/usr/lib/libcap.so.2;then
echo "/home/ftploop/arm-arago-linux-gnueabi/arm-arago-linux-gnueabi/usr/lib/libcap.so.2";
# add by zlb end
else
locate_library /usr/lib/libcap.so && echo "-lcap";
locate_library /lib/libcap.so && echo "-lcap";
fi
其中add by zlb部分是我自己添加,这里添加的是交叉编译工具的lib路径,该路径修改之后再编译的话就不会出现关于lcap之类的错误了,这时候会出现pam方面的错误,就需要修改接下来一段库的路径地址,
# Look for PAM (done weirdly due to distribution bugs (e.g. Debian) or the
# crypt library.
if find_func pam_start sysdeputil.o; then
locate_library /home/ftploop/arm-arago-linux-gnueabi/arm-arago-linux-gnueabi/usr/lib/libpam.so.0 && echo "/home/ftploop/arm-arago-linux-gnueabi/arm-arago-linux-gnueabi/usr/lib/libpam.so.0";
locate_library /home/ftploop/arm-arago-linux-gnueabi/arm-arago-linux-gnueabi/usr/lib/libpam.so && echo "-lpam";
# HP-UX ends shared libraries with .sl
locate_library /usr/lib/libpam.sl && echo "-lpam";
# AIX ends shared libraries with .a
locate_library /usr/lib/libpam.a && echo "-lpam";
else
locate_library /lib/libcrypt.so && echo "-lcrypt";
locate_library /usr/lib/libcrypt.so && echo "-lcrypt";
fi
上面是我已经修改好的,可以对照着原始文件比较,这里我是添加的自己交叉编一起lib文件所在的路径,主要是libpam.so.0和libpam.so两个库的路径,
以上是两个文件的修改,通过修改就能够将vsftpd进行编译,在vsftpd-2.3.4目录中执行make命令,编译之后就生成了vsftpd文件,编译完成之后执行命令查看vsftpd版本;
命令:file vsftpd
vsftpd:ELF32−bitLSBexecutable,ARM,version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.16,stripped
查看依赖及其相应的配置文件 arm-linux-gnueabihf-readelf -d vsftpd
上面就是执行之后的依赖项,NEEDED是需要的lib库,由于开发板上已经包含这些lib库,因此不需要添加相应的库文件;
把vsftpd拷贝到rootfs的/usr/sbin或者是/usr/local/sbin下面,
2设置vsftpd.conf文件
最终vsftpd.conf为
anonymous_enable=YES //允许匿名登录
write_enable=YES //允许写权限
local_umask=022 //本地用户的文件掩码
anon_upload_enable=YES //允许匿名用户上传文件
anon_mkdir_write_enable=YES//允许匿名用户创建文件夹
dirmessage_enable=YES //自定义欢迎信息
xferlog_enable=YES //系统自动维护上传和下载日志文件
xferlog_file=/var/log/vsftpd.log//日志文件位置
xferlog_std_format=YES //以标准xferlog的格式书写传输日志文件
connect_from_port_20=YES //设定FTP服务器将启用FTP数据端口的连接请求
ftpd_banner=Welcome to blah FTP service.By -zlb-//欢迎信息
listen=YES //vsftpd自己监听和处理IPv4端口的连接请求
以上就是需要设置的配置文件,然后将配置文件放置到/etc/目录下
cp vsftpd.conf /etc
3.开发板添加用户
在开发板上创建必要的帐号、目录
#addusr nobody //vsftpd默认配置需要
#mkdir /usr/share/empty //vsftpd默认配置需要
#adduser -D ftp
#chown root:root /home/ftp //注意不是/var/ftp
#chmod 755 /home/ftp 修改目录权限
创建一个本地账户think,创建好之后可以用think登录
#addusr think
#passwd 123456
然后运行vsftpd就可以进行愉快的上传下载了,通过ftp用户和匿名用户是不能够上传和下载的,尽管配置里面已经允许匿名这些功能,但是还是不能很好的实现,这是因为vsftpd.conf文件中没有放开权限;
vsftpd 为了安全需要,/home/ftp目录不能把所有的权限打开,打开ftp目录的写权限后会显示“500 OOPS: vsftpd: refusing to run with writable anonymous root”,无法登陆ftp,所以我们这时要建一个目录pub,当然也还是需要继续修改配置文件的;
# mkdir /home/ftp/pub
# chmod -R 777 /home/ftp/pub
匿名服务器配置文件:
anonymous_enable=YES //允许匿名访问,
write_enable=YES //全局配置可写,一定要加上这个,没有这个选项pub目录即便开了写权限也无法创建目录,上传文件
anon_umask=077 //匿名用户上传的文件权限是-rw—-
anon_upload_enable=YES //允许匿名用户上传文件
anon_mkdir_write_enable=YES //允许匿名用户建立目录
anon_other_write_enable=YES //允许匿名用户具有建立目录,上传之外的权限,如重命名,删除
dirmessage_enable=YES //当使用者转换目录,则会显示该目录下的.message信息
以上操作之后就已经能够与开发板进行数据传输了。
4.开机启动