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

news2024/11/26 11:54:50

一、概述

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何低门槛开发有趣实用的ZigBee产品?

一、什么是 Zigbee 协议&#xff1f; Zigbee 技术是一种连接距离短、功耗低、复杂程度低、数据传输量低的无线通信技术&#xff0c;其命名灵感源自于蜜蜂在群体中的信息传输。它主要通过网关与互联网进行通信&#xff0c;并嵌入各种智能设备&#xff0c;最终实现自动控制和远程…

关于mac下pycharm旧版本没删除的情况下新版本2023安装之后闪退

先说结论&#xff0c;我用的app cleaner 重新删除的pycharm &#xff0c;再重新安装即可。在此记录一下 之前安装的旧版的2020的pycharm&#xff0c;因为装不了新的插件&#xff0c;没办法就升级了。新装2023打开之后闪退&#xff0c;重启系统也不行&#xff0c;怀疑是一起破解…

物奇平台耳机宕机恢复功能实现

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙音频&#xff0c;DSP音频项目核心开发资料, 物奇平台耳机宕机恢复功能实现 一 需求与场景 1 使…

城市内涝积水的原因有哪些?万宾科技内涝积水监测仪工作原理

一旦有暴雨预警出现多地便会立即响应&#xff0c;以防城市内涝问题出现。随着人口迁移&#xff0c;越来越多的人口涌入城市之中&#xff0c;为了完善城市基础设施建设&#xff0c;城市应急管理部门对内涝的监测越来越严格&#xff0c;在信息化时代&#xff0c;城市管理也趋向于…

机器学习——奇异值分解案例(图片压缩-代码简洁版)

本想大迈步进入前馈神经网络 但是…唉…瞅了几眼&#xff0c;头晕 然后想到之前梳理的奇异值分解、主成分分析、CBOW都没有实战 如果没有实际操作&#xff0c;会有一种浮在云端的虚无感 但是如果要实际操作&#xff0c;我又不想直接调用库包 可是…如果不直接调包&#xff0c;感…

【苍穹外卖 | 项目日记】第九天 万字总结

前言&#xff1a; 之前就写完了&#xff0c;用了几天补一下项目总结&#xff0c;本文会从宏观上介绍整体项目构架和所应用的技术以及项目亮点&#xff0c;最后再加上我个人的感悟。本文适合打算开始写苍穹外卖的小伙伴阅读&#xff0c;提高对整体项目的认知。 往期项目日记&am…

XSS 漏洞详解

XSS 漏洞详解 文章目录 XSS 漏洞详解漏洞描述漏洞原理漏洞场景漏洞评级漏洞危害漏洞验证漏洞利用防御方案典型案例 漏洞描述 XSS全名叫Cross Site Scripting(跨站脚本攻击)因为简写和css同名所以改名为XSS&#xff0c;该漏洞主要利用javascript可以控制html&#xff0c;css&am…

Redis6的IO多线程分析

性能测试 机器配置 C Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 14 On-line CPU(s) list: 0-13 Mem: 62G性能 配置推荐 官方表示&#xff0c;当使用redis时有性能瓶…

ARM-Cortex_M3/M4处理器开发简介

一、关于ARM-Cortex_M4处理器 ARM-Cortex_M3和ARM-Cortex_M4处理器使用32位架构&#xff0c;寄存器组中的内部寄存器、数据通路以及总线接口都是32位的&#xff0c;两者均基于ARMv7-M架构。 1、 Cortex_M处理器使用的指令集架构&#xff08;ISA&#xff09;为Thumb ISA&…

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

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

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

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

【Java0基础学Java第八颗】 -- 继承与多态 -- 继承

8.继承与多态 8.1 继承8.1.1 为什么需要继承8.1.2 继承概念8.1.3 继承的语法8.1.4 super关键字8.1.5 父类成员访问子类中访问父类的成员变量子类中访问父类的成员方法 8.1.6 子类构造方法8.1.7 super和this8.1.8 再谈初始化8.1.9 protected 关键字同一包中同一类同一包中不同的…

蓝桥杯每日一题2023.11.10

“蓝桥杯”练习系统 (lanqiao.cn) 题目描述 题目分析 对于此题&#xff1a;我们看到题目要求尽可能大&#xff0c;会联想到二分&#xff0c;注意切出的一定为正方形&#xff0c;其能切出的个数为(h[i] / x) * (w[i] / x)&#xff0c;将所有的个数与要求的个数进行对比&#x…

算术运算符、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符

1.算术运算符 public class OperatorDemo1 {public static void main(String[] args) {int a 10;int b 2;System.out.println(a b);System.out.println(a - b);System.out.println(a * b);System.out.println(a / b);System.out.println(5 / 2);System.out.println(5.0 / 2);…

相机标定:理论与实践

先讨论相机模型&#xff0c;说明投影关系的描述&#xff0c;介绍相机的内外参&#xff0c;最后完成标定。 一、内参含义 把需要标定的相机参数叫做内参&#xff08;intrinsics matrix&#xff09;&#xff0c;它决定了物体的实际位置Q在成像平面上的投影位置q&#xff0c;如下…

MySQL其他集群类型介绍

常用的/常见的Mysql集群方案 1.MySQL Replication2.MySQL Fabric3.MySQL NDB Cluster4.MGR&#xff08;MySQL Group Replication&#xff09;5.心跳检测SAN共享存储&#xff08;heartbeat SAN&#xff09;6.心跳检测DRBD磁盘复制&#xff08;heartbeat DRBD&#xff09;7.MMM…

IDEA 28 个天花板技巧 + 12 款神级插件,生产力起飞...

IDEA 作为Java开发工具的后起之秀&#xff0c;几乎以碾压之势把其他对手甩在了身后&#xff0c;主要原因还是归功于&#xff1a;好用&#xff1b;虽然有点重&#xff0c;但依旧瑕不掩瑜&#xff0c;内置了非常多的功能&#xff0c;大大提高了日常的开发效率&#xff0c;下面汇总…

鸿蒙原生应用开发-DevEco Studio远程模拟器的使用

使用单设备模拟器运行应用/服务 Remote Emulator支持Phone、Wearable、Tablet、TV等设备类型&#xff0c;但不同区域&#xff08;开发者帐号注册地&#xff09;支持的设备类型可能不同&#xff0c;请以实际可申请的设备类型为准。 Remote Emulator中的单设备模拟器&#xff08…

FL Studio21.2宿主软件中文免费版下载

纵观当下宿主软件市场&#xff0c;正值百家争鸣、百花齐放之际像Mac系统的Logic Pro X、传统宿主软件代表Cubase、录音师必备Pro Tools、后起之秀Studio One等&#xff0c;都在各自的领域具有极高的好评度。而在众多宿主软件中&#xff0c;有这么一款历久弥新且长盛不衰的独特宿…