Linux – TFTP服务器搭建 & FTP服务器搭建

一、ftp和tftp的区别

参考:https://blog.csdn.net/woyaochenggong774/article/details/46324787
注意FTP和TFTP协议是有区别的,二者不一样!
Linux – TFTP服务器搭建 & FTP服务器搭建_第1张图片

二、开发板移植 TFTP服务器

参考:https://blog.csdn.net/a642960662/article/details/66473628

1. 软件安装
确保 busybox 工具已经添加了 inetd 和 tftpd 工具
Linux – TFTP服务器搭建 & FTP服务器搭建_第2张图片
Linux – TFTP服务器搭建 & FTP服务器搭建_第3张图片
2. 修改配置文件 vi /etc/inetd.conf
确保开发板系统已经存在此文件,如果不存在,请自行创建该文件,文件内容见下面介绍。

下图是在 Zynq 上实现 tftp功能的例子:

Linux – TFTP服务器搭建 & FTP服务器搭建_第4张图片

tftpd 应该被用作 inetd 服务,在/etc/inetd.conf中配置 tftfd 服务,添加下面的内容:

Linux – TFTP服务器搭建 & FTP服务器搭建_第5张图片

69 dgram udp nowait root tftpd tftpd -l /home/tftp

其中 /home/tftp 为tftp服务器的指定目录,客户端可从此目录下载所需的文件。需创建和修改此目录的权限。

3. 创建Tftp服务器根目录 /home/tftp ,并修改权限

cd /home
mkdir /home/tftp
	chmod 777 tftp

4. 启动 inetd 服务

/usr/sbin/inetd

可以将此命令添加到板卡的 /etc/profile 文件后,让此inetd 服务开机自启动。

5. 查看tftp 服务是否开启

Linux – TFTP服务器搭建 & FTP服务器搭建_第6张图片
ps 查看 inetd 是否运行。

6. 使用另外一块板卡测试tftp功能

TFTP服务器:主控板卡
TFTP客户端:数采板卡

1)主控板的IP地址,已经搭建了TFTP服务。
Linux – TFTP服务器搭建 & FTP服务器搭建_第7张图片
在 /home/tftp 目录下存了一个 test 文件

在这里插入图片描述
2)在数采板上使用tftp 获取主控板的 test 文件

Linux – TFTP服务器搭建 & FTP服务器搭建_第8张图片
TFTP命令使用,作为客户端从服务器获取文件:
Linux – TFTP服务器搭建 & FTP服务器搭建_第9张图片

三、开发板移植 FTP服务器

    vsftpd即very secure FTP daemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性。使用 vsftpd 可以在 Linux/Unix 系统上搭建一个安全、高性能、稳定性好的轻量级FTP服务器。

3.1 交叉编译步骤

  1. 下载源码
    参考:https://www.cnblogs.com/zhangbing12304/p/11051405.html
    版本:vsftpd-2.3.4.tar.gz

  2. 解压缩

  3. 配置
    修改 Makefile: CC = arm-linux-gnueabihf-gcc

  4. 编译
    make

1)make前先修改vsf_findlibs.sh文件,不然会报错,修改如下:
Linux – TFTP服务器搭建 & FTP服务器搭建_第10张图片
屏蔽掉上边的三行;

2)make时如果报错如下:
Linux – TFTP服务器搭建 & FTP服务器搭建_第11张图片
解决办法:修改Makefile
在这里插入图片描述
在CC 后面添加“ -lcrypt ”
3) make成功后:
make 后,当前目录下会生成两个文件:vsftpd 和 vsftpd.conf,这两个文件是我们要用的。

3.2 开发板配置(本地用户登录)

1)将编译生成的 vsftpd 工具放置在目录 /usr/bin下 ,vsftpd.conf配置文件放置在 /etc目录下;
2)修改配置文件vsftpd.conf:
Linux – TFTP服务器搭建 & FTP服务器搭建_第12张图片
不允许匿名登录,允许本地账户登录;

3)在开发板上创建一个本地用户:
用户名:heat 密码:123456

adduser heat
输入密码
在这里插入图片描述
这里创建的是用户heat

4)打开 vsftpd 服务

/usr/bin/vsftpd &

注意,后面还有一个 &。如果要让 vsftpd 开机启动,可以将该命令添加到 /etc/profile 或者 rc.local 文件最后。

++++++++++++++++++++++++++++++++++++++++++
转到PC机上测试,打开DOS命令行,连接ftp
++++++++++++++++++++++++++++++++++++++++++
PC机DOS下:

1)连接出现问题
Linux – TFTP服务器搭建 & FTP服务器搭建_第13张图片
解决办法:
在/etc/vsftpd.conf 文件内加入ftp_username=nobody 保存,重启vsftp服务

2)继续出现问题:
Linux – TFTP服务器搭建 & FTP服务器搭建_第14张图片
解决办法:
出现上面的错误,则需要建立/usr/share/empty目录。 mkdir /usr/share/empty

3)正常连接
从开发板取文件,文件放在了开发板用户 /home/heat 目录下,ftp服务器的默认路径是用户根目录
Linux – TFTP服务器搭建 & FTP服务器搭建_第15张图片
开发板侧:
Linux – TFTP服务器搭建 & FTP服务器搭建_第16张图片

3.3 开发板配置(匿名用户登录)

参考:https://blog.csdn.net/qq_24835087/article/details/104498398
https://www.cnblogs.com/fly2wind/p/11939221.html

Linux – TFTP服务器搭建 & FTP服务器搭建_第17张图片

==================================================
修改配置文件
vim /etc/vsftpd.conf

匿名模式
anonymous_enable=YES
local_enable=NO
write_enable=YES
anon_upload_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
listen=YES
==================================================
开发板上执行:
adduser nobody
mkdir -p /usr/share/empty/  
mkdir -p /var/ftp/
adduser -h /var/ftp ftp


==========================================

==========================================
FTP默认需要一个nobody用户
FTP默认需要一个empty目录
FTP匿名模式默认需要一个FTP用户
-h 限定ftp用户的工作目录为/var/ftp
注意:一旦限定了ftp用户的工作目录,该目录不能具有写权限,否则会报错,这个后面会说明。比如上面的/var/ftp,ftp目录不能具有写权限。chmod a-w /var/ftp去除用户主目录的写权限

在这里插入图片描述

你可能感兴趣的:(Linux基础)