Linux友人帐之网络编程基础FTP服务器

一、概述

1.1FTP基本概念

FTP(File Transfer Protocol)是一种用于文件传输的标准协议。FTP服务是一种能够让用户通过FTP协议在本地计算机和远程服务器之间进行文件传输的服务。FTP服务可以允许用户上传或下载文件,也可以进行目录浏览、文件删除、文件重命名等操作。FTP服务是网络操作中常用的一种服务,特别是在需要大量文件传输的场合,如网站建设、文件备份等。

FTP服务通常包括以下功能:

  1. 用户认证:在FTP服务中,用户需要提供用户名和密码才能连接到FTP服务器。

  2. 文件传输:FTP服务提供从客户端上传、下载文件到服务器的功能。

  3. 目录操作:FTP服务允许用户创建、删除目录,以及在目录间切换。

  4. 文件权限管理:FTP服务可以管理用户对文件和目录的访问权限。

1.2FTP工作模式

FTP服务有两种工作式工作模式,一种为主动方式,也叫PORT方式,另一种为被动方式,也叫PASV方式。 

 FTP主动模式

在FTP中,使用两个TCP连接,一个连接为控制连接,用来传输控制命令,另一个连接为数据连接,用来传输上传下载的数据文件。在主动方式中,FTP服务器在端口21上监听TCP连接建立请求,客户端在本地选择一个动态端口x,向FTP服务器的21号端口发起TCP连接建立请求,经过TCP三次握手,在客户端动态端口x与服务器端口21之间建立了控制连接,用来传输命令。如果要进行数据传输,客户端会先选择一个动态端口x+1,用作数据连接,在端口x+1上监听TCP连接请求,然后在控制连接上使用PORT指令告诉服务器,客户端用于数据连接的端口,服务器收到PORT指令后,以端口20向客户端端口x+1发起TCP连接建立请求,经过TCP三次握手,在服务器20号端口与客户端x+1号端口之间建立的数据连接,用作传输据。由此可以看出,数据连接是由服务器主动发起的,因此称为主动方式。

FTP主动模式需要客户端和服务器之间进行多次通信,因此它通常较慢。在大多数情况下,FTP被动模式是更好的选择,因为它不需要客户端和服务器之间的多次通信,因此更快。

FTP被动模式

在FTP被动方式中,控制连接的建立方法与主动方式相同,而数据连接的建立则不同。当需要传输数据时,客户端通过控制连接向服务器发送PASV命令,服务器收到PASV命令后选择一个动态端口y,并通过PORT命令将选择的动态端口y告诉客户端,向客户端使用本地动态端口x+1,向服务器的动态端口y发起TCP连接建立请求,经过TCP三次握手,在客户端端口x+1与服务器端口y之间建立起数据连接,用作传输数据。由此可以看出,数据连接是由客户端主动发起的,而服务器是被动接收连接,因此称为被动方式。 

 FTP被动模式的优点是可以避免传输数据时被防火墙或网络的NAT路由器所阻挡,从而提供更加可靠的数据传输服务。然而,使用FTP被动模式也有一些注意事项。例如,FTP服务器必须正确地配置被动模式以允许客户端访问,否则客户端会无法建立连接。此外,由于FTP服务器在一个固定的端口上等待客户端的连接,因此可能会存在安全问题。因此,在使用FTP被动模式时,建议谨慎考虑安全问题并采取适当的安全措施。

1.3FTP安装与配置文件

 1.4用户访问FTP服务器

匿名用户访问FTP服务器

可以使用匿名登录来访问FTP服务器。这可以通过在FTP客户端中提供用户名“anonymous”和电子邮件地址作为密码来实现。大多数FTP服务器支持匿名访问,但是在某些情况下可能需要首先获得授权才能进行访问。建议在使用FTP服务器之前仔细阅读相关的使用协议和政策。

普通用户访问FTP服务器

1.5使用命令访问FTP

1.6 锁定普通用户主目录


1.7控制用户登录ftp服务器


 1.8控制主机登录ftp

 

1.9虚拟目录设置


 

二、实战实验

2.1安装FTP服务软件

任务描述

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。

本关任务:介绍Linux系统上常用的FTP服务器软件vsftpd,我们学会如何在Linux系统上搭建一个FTP服务器。

相关知识

FTP服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTPFile Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

Linux系统安装软件和Windows系统上安装软件不太一样,在Windows上我们只需要下载需要安装的软件二进制文件(常见的格式是.exe),然后双击即可进行安装。而Linux系统上安装软件的常见方式有如下几种:

  1. 源码编译安装
  2. 软件包安装
  3. 在线安装

源码安装步骤是下载源码到本机,然后对源码进行编译,生成可执行文件,然后将生成的可执行文件拷贝到对应的安装目录即可,常见的软件源码包格式为.tar.gz.tar.bz2等;

软件包安装步骤是下载好已经编译好的可执行文件包,然后使用对应的包管理工具进行安装,不同的Linux系统使用不同的包管理工具,常见包管理工具如下所示:

  1. Ubuntu/Debian 系统使用 dpkg 进行管理软件包(软件包的后缀为.deb);
  2. Redhat/CentOS 系统使用 rpm 进行管理软件包(软件包的后缀为.rpm);

在线安装是指不需要用户亲自下对应软件的包,但是需要对应系统能够访问互联网,不同的Linux系统使用不同的工具进行在线安装软件,常见的在线安装软件的工具如下所示:

  1. Ubuntu/Debian 系统使用 apt-get 进行在线安装软件;
  2. Redhat/CentOS 系统使用 yum 进行在线安装软件;

建议使用在线安装软件,离线安装软件常见的问题是软件间的依赖问题,如果离线安装软件,则必须要手动安装依赖的库,而在线安装则只需要一条命令完成所有的操作,在线安装会自动去安装依赖库;

源码安装VSFTP

首先下载源码包,此处使用的是vsftpd-3.0.2.tar.gz。

具体安装步骤如下所示:

  1. 解压源码包:tar zxvf vsftpd-3.0.2.tar.gz
  2. 进入源码文件夹:cd vsftpd-3.0.2/
  3. 编译源码:make
  4. 安装源码:sudo make install
  5. 复制配置文件: sudo cp vsftpd.conf /etc

注意如果是Ubuntu系统则需要修改Makefile文件内容,否则在安装源码步骤会出现错误。

[原始内容]

[修改后内容]

如果安装成功则会出现如下界面:

至此源码安装vsftpd软件结束,如果正确安装,则可以执行vsftpd命令启动服务:

在线安装VSFTP

本实验环境使用的系统是Ubuntu,所以使用apt-get工具来在线安装软件,具体步骤如下所示:

  1. 更新软件源:sudo apt-get update
  2. 安装vsftpd:sudo apt-get install vsftpd

如果安装成功则会出现如下界面:

注意:如果当前用户是root,则执行以上安装命令时不需要加sudo

2.2FTP服务器启动/关闭

任务描述

通过上一关的学习,我们学会如何在Linux系统上安装vsftpd软件,当我们安装好后,我们接下学会如何开启/关闭vsftpd服务。

本关任务:介绍在Linux系统上如何开启、关闭和重启vsftpd服务。

相关知识

当我们安装成功vsftpd软件后,默认vsftpd服务是关闭的,此时,如果我们需要传送文件时,我们必须开启vsftpd服务。

本实验环境使用的系统是Ubuntu,当我们使用apt-get在线安装软件后,通常会在/etc/init.d/目录下生成一个启动该服务软件的脚本,例如,我们使用apt-get安装vsftpd软件后,我们可以看到在/etc/init.d/目录下生成一个名为vsftpd的脚本文件,该脚本可以用来控制vsftpd服务的启动与关闭等信息。

[vsftpd服务脚本文件]

Linux service 命令

Linux系统中使用service命令来控制系统服务,它可以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

service命令的使用格式:

service 服务名 控制命令

  • 服务名:自动要控制的服务名,即/etc/init.d目录下的脚本文件名;
  • 控制命令:系统服务脚本支持的控制命令。

常见的控制命令:

  1. start:启动该服务;
  2. stop:关闭该服务;
  3. restart:重新启动该服务;
  4. status:查看该服务状态;

注意并不是所有的服务都支持以上4种控制命令,不同的服务提供不同的控制命令,大多数服务都支持以上4种常用的控制命令。

vsftpd服务管理

当我们成功安装vsftpd后,接下来,我们使用service命令来管理vsftpd服务。

我们将在以下案例演示中分别介绍如何启动、关闭、重新启动vsftpd服务,以及查看vsftpd服务状态。

案例演示1

查看vsftpd服务状态,可以使用如下命令:

sudo service vsftpd status

[请在右侧“命令行”里直接体验]

可以看到当前vsftpd服务处于waiting状态,也就是关闭状态。

案例演示2

启动vsftpd服务并且查看是否启动成功,可以使用如下命令:

  1. sudo service vsftpd start
  2. sudo service vsftpd status

[请在右侧“命令行”里直接体验]

可以看到vsftpd服务处于running状态。

案例演示3

重新启动vsftpd服务并且查看是否重新启动成功,可以使用如下命令:

  1. sudo service vsftpd restart
  2. sudo service vsftpd status

[请在右侧“命令行”里直接体验]

可以看到当前vsftpd服务先被stop后,紧接着被start

案例演示4

关闭vsftpd服务并且查看是否关闭成功,可以使用如下命令:

  1. sudo service vsftpd stop
  2. sudo service vsftpd status

[请在右侧“命令行”里直接体验]

可以看到vsftpd服务处于waiting状态,也就是关闭状态。

注意:如果当前用户是root,则执行以上命令时不需要加sudo

编程要求

本关任务是学会如何启动/关闭vsftpd服务器。

具体编程要求如下:

  • 开启vsftpd服务(实验环境使用的是Ubuntu系统)。

2.3FTP客户端 

任务描述

通过以上关卡的学习,我们学会了如何安装和启动ftp服务器软件,接下来我们来学习如何利用ftp进行文件的传送操作。

本关任务:学会如何使用ftp进行本地机和远程机之间传送文件。

相关知识

Linux系统上ftp客户端软件常用的有ftplftpfirefox浏览器。

ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些,使用Linux进行ftp操作将会非常容易。

ftp命令常见用法

ftp命令格式:

ftp [host] [port]

  1. [host]为要连接的服务器地址,例如:127.0.0.1 (或 localhost )表示连接本地服务器;
  2. [port]为服务器的端口,默认为 21 ,当我们修改了 vsftpd 的默认端口后,我们连接的时候需要指定新端口;

常见ftp命令如下所示:

  1. FTP>open host [port] 重新建立一个新的连接;
  2. FTP>bye: 终止主机 FTP 进程,并退出 FTP 管理方式;
  3. FTP>close: 终止远程的 FTP 进程,返回到 FTP 命令状态, 所有的宏定义都被删除;
  4. FTP>quit: 同 BYE;
  5. FTP>help [command] 输出命令的解释;
  6. FTP>cd: 更改远程计算机上的目录,同 Linux 的 cd 命令;
  7. FTP>cdup: 更改远程计算机上的目录,返回上一级目录;
  8. FTP>lcd: 改变当前本地主机的工作目录,如果缺省,就转到当前用户的 HOME 目录;
  9. FTP>pwd: 列出当前远程主机目录;
  10. FTP>dir [remote-directory] [local-file] 列出当前远程主机目录中的文件;
  11. FTP>ls [remote-directory] [local-file] 同 dir;
  12. FTP>delete: 删除远程主机中的文件;
  13. FTP>rename [from] [to] 改变远程主机中的文件名;
  14. FTP>rmdir directory-name 删除远程主机中的目录;
  15. FTP>mkdir directory-name 在远程主机中建立目录;
  16. FTP>mget [remote-files] 从远程主机接收一批文件至本地主机;
  17. FTP>get [remote-file] [local-file] 从远程主机中传送至本地主机中;
  18. FTP>mput local-files 将本地主机中一批文件传送至远程主机;
  19. FTP>put local-file [remote-file] 将本地一个文件传送至远程主机中;
  20. FTP>recv remote-file [local-file] 同 get;
  21. FTP>send local-file [remote-file] 同 put;
  22. FTP>status: 显示当前 FTP 的状态;
  23. FTP>! command: 执行本地 shell 命令,如: !dir(显示本机当亲目录内容),如果不加!如:dir(显示服务器当前目录内容)。

注意:使用ftp命令去连接远程主机时,必须保证远程主机的vsftpd服务是开启状态。

案例演示环境初始化:执行如下操作:向文件/etc/vsftpd.conf(部分Linux系统是/etc/vsftpd/vsftpd.conf文件)结尾追加三行anon_root=/anon_other_write_enable=YESanon_umask=022。同时将anon_upload_enable=YESwrite_enable=YESanon_mkdir_write_enable=YES前的#符号删除,并将anonymous_enable设置为YES,然后重新启动vsftpd服务,下一关讲解为什么要这样做。

[修改后的配置文件]

连接远程主机

案例演示1:

使用ftp客户端连接本地vsftpd服务器,可以使用如下命令: ftp localhostftp 127.0.0.1

[请在右侧“命令行”里直接体验]

如果本地vsftpd服务器开启的话,我们就可以直接连接程序,此时需要输入登录的用户名和密码。当正确的输入用户名和密码后,我们就可以使用ftp来上传和下载文件了。vsftpd服务器默认使用匿名登录,即用户名为anonymous,密码为空(直接回车即可)。

执行本地shell命令

案例演示2:

显示本地主机的当前目录,将本地主机的当前目录修改为/home目录,然后显示当前目录下的文件信息,可以使用如下命令:

  1. !pwd
  2. lcd /home
  3. !ls

[请在右侧“命令行”里直接体验]

执行远程shell命令

案例演示3

显示远程主机的当前目录,将远程主机的当前目录修改为/tmp目录,然后显示当前目录下的文件信息,可以使用如下命令:

  1. pwd
  2. cd /tmp
  3. ls

[请在右侧“命令行”里直接体验]

上传文件

案例演示4

在远程主机上新建一个目录newDir,然后将本地的文件/home/fzm/test.c上传到远程主机newDir目录下并重命名为newTest.c,可以使用如下命令:

  1. mkdir newDir
  2. send /home/fzm/test.c ./newDir/newTest.c

[请在右侧“命令行”里直接体验]

下载文件

案例演示5:

将远程主机上的文件/tmp/newDir/newTest.c下载到本地/home/fzm目录下并重新命名为oldTest.c,然后将远程主机上的newDir目录删除,可以使用如下命令:

  1. cd /tmp
  2. recv newDir/newTest.c /home/fzm/oldTest.c
  3. delete newDir/newTest.c
  4. rmdir newDir

[请在右侧“命令行”里直接体验]

退出远程连接

案例演示6:

终止远程主机的连接,然后退出ftp管理程序,可以使用如下命令:

  1. close
  2. bye

[请在右侧“命令行”里直接体验]

编程要求

本关任务是学会如何使用ftp命令上传下载远程主机文件。

注意:在执行本关任务前,首先执行如下命令来初始化任务环境。

  1. apt-get update
  2. apt-get install ftp
  3. touch testFile
  4. 向文件 `/etc/vsftpd.conf` 结尾追加三行 anon_root=/、anon_other_write_enable=YES 和 anon_umask=022 。同时将 anon_upload_enable=YES、write_enable=YES和anon_mkdir_write_enable=YES 前的 # 符号删除,并将 anonymous_enable 设置为 YES。

注意:平台上使用的vsftpd的配置文件对应需要修改的配置项位置如下所示(需要手动添加的配置项只需在文件默认添加即可):

具体编程要求如下:

  • 启动vsftpd服务;
  • 使用ftp命令连接本机(将本机作为远程服务器);
  • 切换远程服务器的当前工作目录为tmp
  • 在远程服务器上新建一个目录Dir
  • 将本地的一个文件(/root/testFile)上传到远程主机的Dir目录下并重命名为upLoadFile

ftp连接远程服务器时报错
USER ***
331Please specify password
PASS ***
530 Login incorrect
---------------->
经过大量排查发现了错误,是因为用户鉴权问题没解决好,(因为用户是nologin的,所以存在)
解决方法:
第一种:

vi /etc/pam.d/vsftpd
注释掉/etc/pam.d/vsftpd文件里这一行:
#auth required pam_shells.so

#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth
如图:


第二种:

vi /etc/shells
在最后一行下边加上

/sbin/nologin
值得注意的是 添加完之后的代码下一行必须是~

两种方式任选一种就可以啦~

这样最后重启服务器就可以解决啦!

# 启动vsftpd服务
sudo service vsftpd start

# 使用t命令连接本机(将本机作为远程服务器)
ftp -n <本机IP地址>

# 切换远程服务器的当前工作目录为tmp
cd /tmp

# 在远程服务器上新建一个目录Dir
mkdir Dir

# 将本地的文件(/root/testFile)上传到远程主机的Dir目录下并重命名为upLoadFile
put /root/testFile Dir/upLoadFile

# 退出FTP连接
bye

 2.4FTP服务器配置

任务描述

通过以上关卡的学习,我们学会了使用ftp命令来登录远程主机,并进行文件的上传和下载操作。接下来我们来学习如何配置vsftpd服务器。

本关任务:学会vsftpd服务器的常见配置。

相关知识

上一关卡中,我们在案例演示前进行了一系列环境的初始化,现在我们详细的介绍为什么我们要做那些环境的配置。

vsftpd服务器提供了很多的配置项,每个配置项都有不同的功能,接下来,我们介绍vsftpd常见的配置项功能,vsftpd服务器的配置文件存放路径为:/etc/vsftpd.conf,部分Linux系统是存放在/etc/vsftpd/vsftpd.conf目录下。

vsftpd服务器的连接方式有两种,一种是可以使用匿名(anonymous)登录,另一种是可以使用本地用户进行远程登录,默认情况下是使用匿名登录。

ftp匿名登录

常见关于匿名登录的配置项如下所示:

  1. anonymous_enable: 是否允许匿名登录 FTP 服务器,默认设置为 YES 允许,如不允许匿名访问则设置为 NO;
  2. anon_upload_enable:是否允许匿名用户上传文件,须将全局的 write_enable=YES。默认为 YES;
  3. anon_mkdir_write_enable:是否允许匿名用户创建新文件夹;
  4. anon_other_write_enable:是否允许匿名用户对文件或目录进行删除、重命名等操作;
  5. anon_root: 匿名用户的默认工作目录;
  6. anon_umask: 匿名用户的文件掩码为缺省 022。

案例演示1:

禁止使用匿名用户登录ftp服务器,具体使用如下步骤:

  1. 设置 anonymous_enable=NO(sudo vim /etc/vsftpd.conf)
  2. sudo service vsftpd restart
  3. ftp localhost

[修改配置文件]

[请在右侧“命令行”里直接体验]

可以看到当我们把`anonymous_enable=NO`后,同时`vsftpd`又默认禁止本地用户登录,所以在远程连接主机时就会出现错误。
ftp本地用户登录

常见关于本地用户登录服务器的配置项如下所示:

  1. local_enable: 是否允许本地用户(即 linux 系统中的用户帐号)登录 FTP 服务器,默认设置为 NO 允许,本地用户登录后会进入用户主目录;
  2. write_enable:是否允许本地用户对 FTP 服务器文件具有写权限,默认设置为 YES 允许;
  3. chroot_local_user:是否将所有用户限制在主目录, YES 为启用 NO 禁用;
  4. chroot_list_enable:是否启动限制用户的名单 YES 为启用 NO 禁用;
  5. chroot_list_file:是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于 chroot_local_user 的值;
  6. local_root: 本地用户登录后的默认工作目录;
  7. local_umask: 设置本地用户的文件掩码为缺省 022;
  8. userlist_enable:此选项激活后,vsftpd 将读取 userlist_file 参数所指定的文件中的用户列表,默认为 NO;
  9. userlist_file:userlist_enable 选项生效后,被读取的包含用户列表的文件。默认值是 /etc/vsftpd.user_list;
  10. userlist_deny:决定禁止还是只允许由 userlist_file 指定文件中的用户登录 FTP 服务器。userlist_enable 选项启动后才能生效。默认值为 YES,禁止userlist_file 指定文件中的用户登录,同时不向这些用户发出输入口令的指令。NO,只允许 userlist_file 指定文件中的用户登录FTP服务器;

chroot_local_userchroot_list_enablechroot_list_file三个配置项间的关联关系如下表所示:

chroot_local_user=YESchroot_local_user=NO
chroot_list_enable=YES1. 所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制
chroot_list_enable=NO1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户

userlist_enableuserlist_denyuserlist_file三个配置项间的关联关系如下表所示:

userlist_enable=YESuserlist_enable=NO
userlist_deny=YES禁止userlist_file指定文件中的用户登录,同时不向这些用户发出输入口令的指令不影响用户登录
userlist_deny=NO只允许userlist_file指定文件中的用户登录不影响用户登录

案例演示环境初始化:如果用户想在本平台的右侧命令行进行验证如下案例,则需要将vsftpd的配置文件(/etc/vsftpd.conf)中pam_service_name=vsftpd修改为pam_service_name=ftp,笔者建议用户在本地的Ubuntu 12.04系统上进行验证。

案例演示1:

新建一个本地用户(ftpUser,密码为123456),然后配置vsftpd服务允许本地用户登录,使用ftpUser远程连接主机,具体使用如下步骤:

  1. sudo useradd ftpUser
  2. sudo passwd ftpUser
  3. 设置 local_enable=YES(sudo vim /etc/vsftpd.conf)
  4. sudo service vsftpd restart
  5. ftp localhost

[请在右侧“命令行”里直接体验]

[修改配置文件]

[请在右侧“命令行”里直接体验]

案例演示2:

所有用户限制在主目录不能进行其它目录的切换(除主目录外),使用ftpUser进行远程连接验证,具体使用如下步骤:

  1. 设置 chroot_local_user=YES(sudo vim /etc/vsftpd.conf)
  2. sudo chmod a-w /home/ftpUser
  3. sudo service vsftpd restart
  4. ftp localhost

[修改配置文件]

[请在右侧“命令行”里直接体验]

注意:如果启用chroot,必须保证登录ftp服务器的用户根目录不可写,因此要执行sudo chmod a-w /home/ftpUser(因为是使用ftpUser用户登录,如果其它用户登录则修改对应的根目录)。

可以发现登录后,我们切换当前目录为/,然后列出当前目录下的所有文件,发现只存在一个文件,因为此时的/目录不是我们整个系统的根目录,这里的根目录其实只是/home/ftpUser目录而已。

案例演示3:

禁止/etc/vsftpd/userlist文件中的用户登录ftp服务器,使用ftpUser用户进行验证,具体使用如下步骤:

  1. 设置 userlist_deny=YES、userlist_enable=YES和userlist_file=/etc/vsftpd/user_list(sudo vim /etc/vsftpd.conf)
  2. sudo mkdir /etc/vsftpd/
  3. sudo touch etc/vsftpd/user_list
  4. 向 /etc/vsftpd/user_list 文件中添加一行内容 ftpUser(sudo vim /etc/vsftpd/user_ist)
  5. sudo service vsftpd restart
  6. ftp localhost

[修改配置文件]

[请在右侧“命令行”里直接体验]

[向/etc/vsftpd/user_list文件中添加ftpUser]

[请在右侧“命令行”里直接体验]

vsftpd其它配置

常见其它配置项如下所示:

  1. data_connection_timeout:设置数据连接超时时间;
  2. idle_session_timeout:设置数据传输中断间隔时间;
  3. ascii_upload_enable:是否以 ASCII 方式上传数据;
  4. ascii_download_enable:是否以 ASCII 方式下载数据;
编程要求

本关任务是学会如何配置ftp服务器。

注意:在执行本关任务前,首先执行如下命令来初始化任务环境。

  1. useradd -m newUser
  2. passwd newUser(设置密码为:123456)
  3. touch testFile
  4. 将 vsftpd 的配置项 pam_service_name 的值修改为 ftp

具体编程要求如下:

  • 使用newUser进行连接本地ftp服务器;
  • /root/testFile文件上传到远程服务器的当前工作目录下并重命名为upLoadFile
# 连接到远程服务器
ftp <远程服务器IP地址>

# 登录到FTP服务器
<用户名>
<密码>

# 创建名为upLoadFile的文件
touch upLoadFile

# 上传/root/testFile文件到远程服务器的当前工作目录下,并将其重命名为upLoadFile
put /root/testFile upLoadFile

# 退出FTP连接
bye

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/128568.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows安装Docker(无网)

Windows安装Docker&#xff08;无网&#xff09; window无网安装Docker 1. 开启虚拟化功能 1. 开启window的虚拟化功能 方式一&#xff1a;直接在window的搜索框搜索 “启用或关闭windows功能”&#xff0c;就可以快捷进入【启用或关闭windows功能】页面 方式二&#xff1…

【MySQL】想不想知道数据库到底是啥?想了就进来看看

数据库是什么 前言正式开始连接mysql理解mysql第一层理解第二层理解第三层理解 小问题见见猪跑show databases;create database xxx;create table xxx; 主流数据库mysql架构SQL语句的种类存储引擎 前言 你手上有没有MySQL&#xff1f;有了最好&#xff0c;没有的话建议下一个&…

2022美亚杯团队赛

2022美亚杯团体赛 - XDforensics-Wiki 2022 美亚杯 团体赛AGC部分资格赛服务器部分 所有服务器部分解题思路_2022美亚杯团体赛复盘-CSDN博客 目录 AGC 1 2 Media Sever挂载 3 ssh登入的看法 PTS 4 5 ssh日志 6 7 查看docker列表 8 查看docker运行 9 建立网站…

solidworks对电脑要求高吗?2023solidworks配置要求

solidworks对电脑要求高吗&#xff1f;SolidWorks是一款功能强大的三维CAD软件&#xff0c;对电脑配置有一定的要求。一般来说&#xff0c;运行SolidWorks需要的电脑配置包括较高的处理器性能、足够的内存和存储空间&#xff0c;以及一块性能良好的显卡。此外&#xff0c;对于大…

Leetcode_3:无重复字符的最长子串

题目描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 示例 2: 输入: s "bbbbb"…

记一次上位机软件线程泄露的分析及解决

上位机软件在客户现场隔一段时间说操作了没反应&#xff0c;但是上位机又没死&#xff0c;出现了一些奇怪现象&#xff1a; 左上角的时间不走了&#xff08;本来是1s运行一次&#xff09;使用任务管理器查看&#xff0c;内存占用1.5G,线程有3000多个&#xff0c;正常情况下&am…

将 ONLYOFFICE 文档编辑器与 С# 群件平台集成

在本文中&#xff0c;我们会向您展示 ONLYOFFICE 文档编辑器与其自有的协作平台集成。 ONLYOFFICE 是一款开源办公套件&#xff0c;包括文本文档、电子表格和演示文稿编辑器。这款套件支持用户通过文档编辑组件扩展第三方 web 应用的功能&#xff0c;可直接在应用的界面中使用。…

VMware ifconfig ip报错解决记录

1.报错 ifconfig后出现以下报错 lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 9216 b…

Element-Ui入门教学——<el-upload>限制上传文件类型

要限制<el-upload>上传文件的类型&#xff0c;需要给组件绑定:before-upload属性。 before-upload可选参数, 上传文件之前的钩子&#xff0c;参数为上传的文件&#xff0c;若返回 false 或者 Promise 则停止上传。HTML代码 <template><el-uploadclass"uplo…

竞赛 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

Simulia仿真之CST的使用指南(1) | 百世慧®

前言 CST是Computer Simulation Technology的缩写,是全球范围内众多工程师都喜欢使用的高端电磁仿真分析软件。 本文又名《智慧的CST生活》这里一共列出了120个章节&#xff0c;其中包括CST使用过程中的有用小技巧&#xff0c;还有给用户提供技术支持的过程中常见的问题。本专…

Linux服务器上搭建JupyterNotebook教程

搭建需知 1.确保是Linux服务器&#xff1b; 2.已经在linux服务器上安装好anaconda3&#xff1b; 搭建教程 请按照顺序依次执行下面的命令&#xff1a; 1、安装Jupyter Notebook 执行以下命令&#xff0c;安装jupyter notebook conda install jupyter【注】 如果anaconda3…

maven-compiler-plugin和spring-boot-maven-plugin的区别

两者都能打包&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 格式不同&#xff01;&#xff01;&#xff01;用处不同&#xff01;&#xff01;&#xff01; 以实验为准&#xff0c;下面开始实验&#xff1a; maven-compiler-plugin &…

双11狂欢最后一天

大家好&#xff0c;本年度双11即将到来&#xff0c;为了答谢大家多年来的支持及更广泛的推广VBA的应用&#xff0c;“VBA语言専功”在此期间推出巨大优惠&#xff1a;此期间打包购买VBA技术资料实行半价优惠。 1&#xff1a;面向对象&#xff1a;学员及非学员 2&#xff1a;打…

Android发热监控实践

一、背景 相信移动端高度普及的现在&#xff0c;大家或多或少都会存在电量焦虑&#xff0c;拥有过手机发热发烫的糟糕体验。而发热问题是一个长时间、多场景的指标存在&#xff0c;且涉及到端侧应用层、手机 ROM 厂商系统、外界环境等多方面的影响。如何有效衡量发热场景、定位…

NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…

C#动态拦截并覆盖第三方进程的函数,实现函数篡改(外挂)

今天在看之前收藏的一个pdf文档(介绍C#外挂的相关知识的)&#xff0c;结合网上的东西及个人的理解才有了这篇文章。 参考文章&#xff1a; 【精选】一文带解读C# 动态拦截覆盖第三方进程中的函数&#xff08;外挂必备&#xff09;_zls365365的博客-CSDN博客 DotNetDetour - …

UE5数字孪生制作-数据篇(二) - 数据处理

1.卫星图与DEM高度图坐标一致处理 https://www.bilibili.com/video/BV1op4y1V71r?p4&vd_source707ec8983cc32e6e065d5496a7f79ee6 坐标系的调整 先把工程默认坐标调整下&#xff0c;建议调整到3857&#xff0c;在菜单的设置&#xff08;s&#xff09;里找到&#xff0c;修…

java excel、word、PPT转换成pdf预览

先引入包&#xff1a;[lib下载地址](https://mp.csdn.net/mp_download/manage/download/UpDetailed)Controllerpublic AjaxResult fileToPdf(RequestBody VerifyCode url, HttpServletResponse response, HttpServletRequest request) throws IOException {String fileUrl req…

Jupyter Notebook 内核似乎挂掉了,它很快将自动重启

报错原因&#xff1a; OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade perfo…