Linux搭建FTP服务

FTP服务器:

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的协议。如果用户需要将文件从本机发送到另一台计算机,可以使用FTP上传操作;反之,用户可以使用FTP从其他计算机将文件下载到本机。

FTP不挑操作系统,可支持Windows与Linux,且两大操作系统的FTP服务端口号均为21,客户端端口随机,但PORT >1024。

FTP采用C/S架构,用户通过FTP客户端程序连接到FTP服务器,实现文件传输

 

1,控制连接(存在传输端口)

FTP客户端希望与FTP服务器建立上传,下载的数据时,它首先向FTP服务器的TCP21号端口发起连接的请求,FTP服务器接受来自FTP客户端的请求,完成控制连接的建立。

2,数据连接(存在数据端口)

控制连接建立后,可以开始传输文件,传输文件数据的连接称为数据连接,数据连接使用TCP20号端口。

注意:数据连接存在的时间段内,控制连接也同时存在,一旦控制连接断开,数据连接也会自动关闭。

 

FTP的数据传输模式:

1,主动模式(POST)

在主动模式下,客户端随机打开一个端口号大于1024的N号端口,向服务端的21号端口发起连接,并向服务器发出“PORT N+1”命令,同时开放N+1号端口进行监听。服务器接受到该命令后,默认使用服务器的20号端口主动与客户端指定的N+1号端口建立数据连接,进行数据传输。

 

2,被动模式(PASV)

在被动模式下,客户端随机打开两个端口,分别是端口号大于1024的N号端口和N+1号端口,然后使用N号端口向服务器的21号端口发起连接,并向服务器发出“PASV”命令,通知服务器使用被动模式。服务器收到命令后,开放一个端口号大于1024的P端口进行监听,然后用“PORT P”命令通知客户端自己的数据端口是P。客户端收到指令后,再通过N+1号端口与服务器的P端口建立数据连接,然后进行数据传输

 

两种模式的不同点及优缺点:

1,主动模式的FTP的控制方向与数据连接方向相反,客户端向服务器建立控制连接,而服务器主动向客户端建立数据连接;被动模式下FTP的控制方向与数据连接方向相同,被动模式中控制连接与数据连接都由客户端发起,服务器只是被动地接受连接。

2,主动模式对于客户端的防火墙来说,数据连接是从外部到内部的连接,可能会被防火墙阻塞;被动模式解决了从服务器主动连接客户端的数据端口被防火墙阻塞的问题,在互联网上,客户端通常没有独立的公网IP地址,服务器主动连接客户端的难度太大,因此,FTP服务器大多采用被动模式。

 

主动传输:下载文件

被动传输:上传文件

 

FTP服务器用户:

1,匿名用户

如果FTP服务器提供匿名访问功能,则该类用户可以匿名访问服务器上的某些公开资源。使用匿名用户访问FTP服务器时,使用anonymous或ftp账户及任意口令登录(NULL也行)。匿名用户登录后,默认目录为匿名FTP服务器的根目录(不是系统根目录)。一般情况下,匿名FTP服务器只会提供下载功能,不提供上传功能或上传功能受到一定的限制。

2,本地用户(服务器上创建好的用户)

本地用户在FTP服务器上拥有shell登录用户。该类用户访问FTP服务器时,可以通过

自己的账户和口令授权登录。本地用户登录后,默认目录就是该用户自己的家目录,而且可以变更到其他目录(可以访问宿主目录和其他目录)。本地用户在FTP服务器中既可以下载内容,又可以上传内容。

3,虚拟用户

虚拟用户在FTP服务器上只能访问其主目录中的文件。不能访问其主目录以外的文件(只能访问宿主目录)。由于虚拟用户并非系统中真实存在的用户,仅供FTP服务器认证使用(仅用来进行口令认证),因此,FTP服务器通过这种方式来保障服务器上其他用户的安全。通常,虚拟用户在FTP服务器中即可以下载内容,又可以上传内容。

 

配置FTP服务:

FTP在Linux中即为vsftpd

1,实现服务器与客户端网路互通,进行Linux的网路配置环节,改网卡配置文件(切换root用户登录,root用户才有改的权限),实现Linux与Windowns互ping,二者ping通即可。

2,配置yum仓库

(1)挂载镜像:进入虚拟机设置连接镜像,终端输入以下命令:mount  /dev/cdrom /media(cdrom后面一定要加空格再加/media或/mnt均可)

(2)创建yum仓库:终端输入以下命令:vim /etc/yum.repo.d/local.repo

写local.repo文件参数:

[local(不唯一,与name后面跟的参数相同即可)]

name=local(上面中括号内对应参数名)

baseurl=file:///media(光盘挂载目录)

gpgcheck=0 (用于校验软件包来源的安全性,0为不校验,1为校验)

enabled=1 (用于设置是否启用该仓库源,0为不启用,1为启用)

(3)清空缓存:终端输入以下命令:yum clean all

(4)检索:终端输入以下命令:yum repolist

3,创建共享文件夹

终端输入以下命令:mkdir /opt/fipdir

4,安装vsftpd(FTP)服务的安装包

终端输入以下命令:yum -y install vsftpd

5,配置vsftpd.conf文件

终端输入以下命令:vim /etc/vsftpd/vsftpd.conf

(1)在第一个参数前加:anon_root=/opt/ftpdir  (等号两侧不允许有空格)

6,重启服务

(1)终端输入以下命令:systemctl restart vsftpd

(2)确认vsftpd服务正常运行,查看21号端口是否被监听

终端输入以下命令:netstat -ntlp | grep vsftpd

7,设置自启动

终端输入以下命令:systemctl enable vsftpd

8,关防火墙

终端输入以下命令:systemctl stop firewalld (注意:Windowns也要关防火墙)

9,关闭SELinux安全子系统

终端输入以下命令:setenforce 0 (或者vi /etc/selinux/config 出现SELINUX,改它的 参数为disabled)

10,测试

在客户端为Windowns上,在“我的电脑”中“此电脑”一栏输入:ftp://(Linux配置的 IP地址)

 

访问不成功的原因与注意事项:

1,对于文件夹权限不足,自vsftpd2.3.5版本开始,如果用户被限定在FTP根目录下,则不允许对自己的根目录具有写权限,但对子目录并不限制写入,所以一般只修改根目录下的子目录问修改权限,权限问题还在于子目录的所有者是否为ftp,如需更改所有者,则:chown ftp:ftp <子目录文件名>

2,防火墙,通常解决防火墙阻拦的方法是直接关闭,一劳永逸,但是如果在开启的状态下设置放行ftp规则也是可以的:firewall-cmd --permanent --add-service=ftp

3,配置文件/etc/vsftpd/vsftpd.conf里面没有开启对于用户的写权限,以匿名用户为例:

A)anon_upload_enabled=YES     允许匿名用户上传文件

B)anon_mkdir_write_enable=YES   允许匿名用户创建文件

C)anon_other_write_enable=YES    允许匿名用户有其他写权限,如删除和重命名文件

值得注意的一点是:A,B项只有当write_enable=YES时,才会生效

4,安全子系统,selinux非常不建议改它的上下文和bool值,一般是直接setenforce 0关掉,若不关,就只有执行setsebool -P ftp_full_access=on的命令,去改bool值

posted @ 2022-10-06 20:56  SkyRainmom  阅读(996)  评论(0编辑  收藏  举报