Centos搭建FTP服务

前言:

Centos 搭建FTP服务学习记录

FTP简介

FTP简称“文件传输协议”,用于Internet上的控制文件的双向传输。
在FTP中常遇到两个概念:
下载和上传

“下载”文件就是从远程主机拷贝文件至自己的计算机上
“上传”文件就是将文件从自己的计算机拷贝到远程主机上。

FTP连接及传输模式

控制连接 TCP 21 ,用于发送FTP命令信息
数据连接 TCP 20,用于上传、下载数据

数据连接的建立类型:

主动模式:服务端从20端口主动向客户端发起连接 被动模式:服务端在指定范围内某个端口被动等待客户端连接

被动模式相较于主动模式好,因为主动连接的话会涉及到开放服务器端防护墙的20、21端口,而且主动模式服务器无法控制客户端所开启的端口,也容易被客户端的防火墙拦截。

FTP用户的类型:
匿名账户:

anonymous
ftp

本地用户

在这里插入图片描述

搭建过程

服务器端:

这里实验使用的是vsftpd,所以要先下载

$ yum install vsftpd

但是下载的过程遇到了点问题,如下:
在这里插入图片描述
这个问题是yum命令被锁

 Existing lock /var/run/yum.pid

解决方法:等待一会或者强制结束

rm -f /var/run/yum.pid

下载好之后,先来了解一下vsftpd服务的一些默认目录,以免后面操作时不知道有关目录在哪里

/usr/sbin/vsftpd ---- VSFTPD的主程序
/etc/rc.d/init.d/vsftpd ---- 启动脚本
/etc/vsftpd/vsftpd.conf ---- 主配置文件
/etc/pam.d/vsftpd ---- PAM认证文件
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
/etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
/var/ftp ---- 匿名用户主目录
/var/ftp/pub ---- 匿名用户的下载目录

查看配置文件

vi /etc/vsftpd/vsftpd.conf
#PS:以root权限去看,因为下载的时候便是用的root用户

在这里插入图片描述
这里就解释其中重要的一些配置:

参数作用
download_enable是否允许下载文件
anonymous_enable是否允许匿名用户访问
anon_upload_enable是否允许匿名用户上传文件
anon_mkdir_write_enable是否允许匿名用户创建目录
anon_other_write_enable是否开放匿名用户的其他写入权限
local_enable是否允许本地用户登录 FTP

在这里插入图片描述
其他的如果用到查询即可

安装完成后,启动 FTP 服务:
systemctl restart vsftpd.service
启动后,可以看到系统已经监听了 21 端口:
netstat -nltp | grep 21
客户端:

客户机需要安装一下ftp包,这样才能使用连接命令ftp ip,下载命令:

yum install ftp

匿名用户测试

对于vsftpd默认配置是开启了本地用户和匿名用户,可以直接登录的,所以这里没有对配置文件进行修改

服务器端先开启一下服务
在这里插入图片描述
客户端使用匿名用户连接,注意需要在同一个网段(两个网络都选为仅主机模式即可或自己手动配置),如果不在一个网段则会出现下面的问题
在这里插入图片描述
但是还有一种情况,就是客户端和服务器端都在一个网段,还是出现这个情况,那就应该是服务器端的防火墙将请求给拦截了,所以就需要关闭服务器端的防火墙

解决方法:

1.查看防火墙:iptables -L
2.清空防火墙:iptables -F
#注:这个设置只是暂时的,一旦关机再开机还需要重新进行输入,如果想永久更改就需要下载iptables-services,然后进行更改,这里不详细叙述

客户端再次连接,连接成功(匿名用户ftp没有密码,空格即可)
在这里插入图片描述
配置文件中匿名用户登录 vsftpd 服务后的根目录是 /var/ftp/,进入/var/ftp/pub上传一个自己创建的文件看一下,发现无法创建
在这里插入图片描述
查看一下配置文件,匿名用户上传功能开了,但为什么还是不行
在这里插入图片描述
看了老师的讲解,才知道目录也需要进行设置权限,但如果直接使用chmod命令是不行的,会有一小bug,最好的方法是更改目录的属主

$ chown ftp /var/ftp/pub

在这里插入图片描述
重启一下,客户端再次连接,但发现还是不行,之前忘记在配置文件加上一段代码,这段代码写哪里都可以,只要是在配置文件中

write_enable=YES
#enable any form of FTP write command

但。。。。还是不行,我要吐了,什么情况,查了半天发现:是selinux限制了,把selinux关掉就可以了

先查看下selinux里有哪些关于ftp的

getsebool -a | grep ftp

在这里插入图片描述
如果是写权限和全部权限是off的话就使用命令打开

setsebool -P allow_ftpd_anon_write on 
setsebool -P allow_ftpd_full_access on

再在客户端进行上传测试,成功。
在这里插入图片描述
下载测试,成功
在这里插入图片描述

最后这里提一点常用的Linux ftp 命令

ftp中用lcd切换本地路径,用cd切换远程服务器的路径。如:cd目录名(进入服务器目录)    lcd目录名(进入本机目录)
!命令是执行本地shell命令

具体的看大师傅的博客
Linux ftp 命令

本地用户测试

上面使用了匿名用户进行登陆,并上传下载,这次通过本地用户来实现一下

我的本地用户是shy,第一步就设置配置文件(其实不用改就可以)

local_enable=YES
write_enable=YES
local_umask=022
userlist_deny=YES
userlist_enable=YES

为了安全默认禁止以root身份登入,如果你实在想改的话就可以编辑一下文件

vi /vsftpd/user_list

在这里插入图片描述
不过不建议,自己可以设置一个新的用户进行测试,这里我就使用本地用户shy
在这里插入图片描述
登陆成功,进行上传下载测试,注意创建的文件位于shy账户家目录
在这里插入图片描述
上传成功
在这里插入图片描述
除本地用户以为,还有一个虚拟用户,虚拟用户不是系统中存在的,因此比本地用户安全。这里就先不学习,待到有需要时再进行学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值