FTP服务

一.ftp服务介绍

ftp 应用层协议的名字

文件传输协议

作用:实现文件共享

二.Linux操作系统上实现ftp服务

1.实现ftp服务需要使用到软件vsftp

配置文件:/etc/vsftpd/vsftpd.conf

服务:vsftpd

端口:tcp/21

2.FTP服务的访问类型:

1.匿名访问

也就是说,如果ftp服务器支持匿名访问的话,那么其他客户端访问这个ftp服务器的时候,是不需要用户名密码的认证,

不需要用户名密码认证,自动使用ftp用户进行访问,

2.本地用户认证访问,

这个客户端访问服务器的时候,这个客户端需要先写用户名和密码,被服务器认证通过之后,这个客户端才可以查看服务器上的文件,

也就是说,这个ftp服务器事先存在相应的用户,

3.FTP服务的数据目录(存放共享数据的目录,这个数据目录可以自定义。)

对于ftp服务器来说,匿名用户和本地用户访问的ftp数据目录可以不同,数据目录在规划好之后,不会轻易改变,

针对匿名访问来说,默认的数据目录是对应ftp用户的家目录,

如上图所示,针对匿名用户来说:默认的数据目录就是/var/ftp

如上图所示,针对本地用户认证访问来说,ftp服务器默认的数据目录就是admin用户的家目录,

三.匿名用户的相关配置

ftp服务默认支持匿名访问。

如上图所示,安装vsftp软件

如上图所示,使用rpm -q 命令来查看vsftp软件是否安装成功,以及安装软件的版本,

如上图所示,此时vsftp软件已经安装好,vsftp软件会自动在我机器上生成一个名叫ftp的用户,这个名叫ftp的用户就是其他机器匿名访问我ftp服务器时所使用的用户,

如上图所示,这个ftp用户对应的家目录就是/var/ftp

如上图所示,启动vsftp软件,并设置成开机自启动。

如上图所示,这是查看ftp服务的端口号,ftp服务默认的端口号是21

如上图所示,可以查看ftp服务相关的进程PID。

此时客户端就可以访问。

如上图所示,是使用windows客户端使用此电脑输出ftp服务器的IP地址之后的结果,而这个pub文件对应到ftp服务器上就是/var/ftp/pub文件。

如果想借助ftp服务的匿名用户访问功能将事先准备好的文件共享出去,就需要将文件创建在/var/ftp上。

如上图所示,这就是/var/ftp中的文件,

1.是否允许匿名用户访问。

如上图所示,这就是匿名用户的配置文件,

如上图所示,在/etc/vsftpd/vsftpd.conf文件中,这行配置就是是否允许匿名用户访问的配置,YES表示允许匿名用户访问,NO表示拒绝匿名用户访问,

如上图所示,是重启ftp服务的指令。

2.是否允许匿名用户上传文件

注意:1.在ftp的配置文件中需要打开是否允许匿名用户上传文件的配置。

2.还需要确保在服务器本地匿名用户对数据目录是否拥有写(w)的权限

3.匿名用户只能从ftp数据目录的子目录中上传文件

4.如果直接给ftp服务的数据目录,加上ftp匿名用户写权限以后,这时匿名用户访问ftp服务器的功能会被直接禁止,

如上图所示,这行配置是针对ftp服务全局写入权限的控制,如果远程连接ftp服务器的用户想要上传文件到ftp上,这个配置需要是YES的状态,这个就想当于是一个总开关一样,这个开关不开不管怎么配置,远程连接ftp服务的用户都是上传不了文件的。

如上图所示,默认情况下匿名用户只能下载文件不能上传文件。

如上图所示,这行配置是决定是否允许匿名用户上传文件的配置。

如上图所示,即使在ftp服务的配置文件/etc/vsftpd/vsftpd.conf中,打开了允许匿名用户上传文件的配置,还要注意匿名用户对数据目录是否拥有w权限。

如上图所示,在/var/ftp中存在pub目录,而这个目录就是用来给ftp的数据目录上传文件的,

ftp服务是不允许匿名用户在数据目录中上传文件的,如果要允许匿名用户上传文件,就需要在数据目录下创建一个子目录,将来匿名用户使用这个子目录来上传文件,

如上图所示,我现在打开ftp配置文件中允许匿名用户上传文件的配置,然后在ftp数据目录的子目录中上传文件,会如上图所示,这是因为在ftp服务器中ftp用户对ftp服务的数据目录的子目录没有写权限,

命令chmod o+w的意思是向“其他人”用户组添加写入权限。这意味着除了文件的所有者和所在组成员之外,其他所有用户都将获得对该文件或目录的写入权限。

命令chown ftp的意思是将指定文件或目录的所有者更改为名为ftp的用户。如果ftp用户存在,并且您有足够的权限(通常需要root权限),则命令会成功执行。

命令chown -R ftp 目录,这条命令的作用是目录及其所有子目录和文件的所有者更改为用户ftp。

如上图所示,这是在这个目录,针对这个ftp用户加上一个rwx读写执行权限。

如上图所示,这个aa.txt文件是ftp用户上传的,

而匿名用户访问ftp服务器的时候,在服务器上所体现的用户就是ftp用户。

如上图所示,这是在ftp服务器的数据目录上针对ftp匿名用户加上了w写权限,之后的结果,此时ftp服务器的匿名访问功能关闭。

ftp服务器的数据目录本身只能保持默认755的权限,rwxr-xr-x

vsftpd本身的限制不允许直接给ftp服务器的数据目录加新权限,

3.是否允许匿名用户上传目录

如上图所示,这行ftp服务的配置信息就是在说是否允许匿名用户上传目录。

随后使用systemctl restart vsftpd ,此时匿名用户可以上传目录到ftp服务器上。

4.允许匿名用户可执行其他写操作(重命名,删除)

如上图所示,在ftp配置文件中输入这行配置,就可以使得匿名用户执行重命名,删除的操作,

5.ftp服务默认匿名用户上传的文件权限是600,因为没有读权限,所以另外的匿名用户无权下载文件,

如上图所示,想要其他匿名用户对匿名用户上传的文件拥有644的权限,也就是可以下载匿名用户上传的文件,就需要在ftp的配置文件中加上anon_umask=022,这样一个配置,以后匿名用户上传的文件就会是权限是644了,其他的匿名用户也可以下载匿名用户上传的文件了。

如上图所示,此时确保其他匿名用户拥有了读权限,此时其他匿名用户就可以下载匿名用户上传的文件了。

6.修改匿名用户的数据目录

如上图所示,此时就是修改了匿名用户的数据目录为/data

不要把/root/用户的任何家目录当作数据目录来使用,这是降低安全性的行为.

四.本地用户认证访问

1.是否启用本地用户认证访问

默认本地用户登录ftp服务器,访问的都是自己家目录下的文件。

本地用户对自己家目录的所有文件拥有所有权限。

如上图所示,在ftp配置文件中加上这个配置,就可以使得ftp服务器本地用户访问ftp服务器了。

如上图所示,若是一个用户可以进行访问ftp服务器的操作,就需要这个本地用户有用户名和密码。

如上图所示,此时右键点击登录,

如上图所示,输入ftp服务器本地的用户名和密码。

如上图所示,默认ftp服务器本地用户访问的是该用户的家目录。

2.修改本地用户的数据目录

如上图所示,这是修改本地用户访问ftp服务器的数据目录为/test

如上图所示,当修改本地用户访问ftp服务器的数据目录的时候,就需要查看本地用户对这个目录有那些权限了,如果没有写权限就无法上传文件到ftp服务器新的数据目录当中。

五.ftp客户端的使用

在windows客户端上

可以在此电脑的地址栏上敲ftp://服务器IP地址

或者使用专业的软件,FileZilla

在Linux客户端上

如上图所示,可以在Linux上使用lftp软件,加上ftp服务器的IP地址来进行访问ftp服务器的操作。

如上图所示,此时是在Linux上匿名访问ftp服务器,

如上图所示,此时是从ftp服务器上下载文件的操作。

如上图所示,此时是在ftp服务器上一次性下载多个文件的操作。

如上图所示,是在Linux客户端上从ftp服务器下载目录的操作。

如上图所示,可以在Linux客户端上使用lftp -u用户名来使用本地用户访问ftp服务器。

六.ftp协议的工作原理(ftp服务的工作流程)

客户端和服务器之间建立命令连接,主要传输的就是客户端传输的用户名和密码,再有就是传输这个命令本身(get,mget)等。

客户端还会和服务器之间创建一个数据链接,这个数据链接是用来传输数据的,

客户端与服务器之间的操作是通过命令链接实现的,但是具体的数据传输工作却是数据链接实现的。

ftp服务正常启动之后会启动一个21号端口,21号端口就是用于客户端和服务器之间建立命令链接的。

客户端与服务器的21/tcp端口建立命令连接,用于传输认证的用户名,密码,相关操作指令,

客户端与服务器建立数据连接,通过数据连接传输实体数据。

ftp协议的两种不同的工作模式:

主动模式

被动模式

几乎现在所有用来实现ftp服务的软件,都是被动模式工作的.

主动和被动从ftp服务器的角度来说。

主动模式:首先客户端要和服务器建立tcp/21号端口的命令连接,此时ftp服务器上会产生一个tcp协议的20号端口,

此时ftp服务器利用这个20号端口,主动向客户端建立数据连接,去传输数据,

被动模式:首先客户端要和服务器建立tcp/21号端口的命令连接,一旦这个命令连接建立成功之后,ftp服务器会随机产生一个大于1024的数据端口,用来传输数据。

此时ftp服务器会通过刚刚建立好的命令连接将自己随机产生大于1024的随机端口告诉客户端,此时客户端再主动和数据端口建立数据连接,即主动向ftp服务器建立数据连接,

但凡有数据传输就会换一个端口

如上图所示,这就是tcp协议三次握手的数据,

我们可以使用Wireshark抓包工具来查看每一次ftp服务器数据传输端口的变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值