FTP搭建

news/2024/7/1 4:45:26

1、FTP简介:

在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。

"下载"文件就是从远程主机拷贝文件至自己的计算机上;

"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。

用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。

20端口用于建立数据连接,并传输文件数据;

21端口用于建立控制连接,并传输FTP控制命令。

根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为主动模式和被动模式:

主动模式:服务器主动发起数据连接。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,客户端以PORT命令告知服务器“我打开了某端口,你过来连接我”,于是服务器从20端口向客户端的该端口发送请求并建立数据连接。

被动模式:服务器被动等待数据连接。如果客户机所在网络的防火墙禁止主动模式连接,通常会使用被动模式。首先由客户端向服务端21端口建立FTP控制连接,当需要传输数据时,服务器以PASV命令告知客户端“我打开了某个端口,你过来连接我”,于是客户端向服务器的该端口(非20)发送请求并建立数据连接。

FTP用户类型

匿名用户:anonymous 或 ftp,提供任意密码都可以通过服务器的验证,一般用于提供公共文件的下载。

本地用户:直接使用本机的系统用户,账号名称、密码等信息保存在 passwd、shadow 文件中。

虚拟用户: 使用独立的账号/密码数据文件,将FTP账户与系统账户的关联性降至最低,可以为系统提供更好的安全性。

anonymous_enable=YES:启用匿名访问

anon_umask=022:匿名用户所上传文件的权限

anon_root=/var/ftp:匿名用户的 FTP 根目录

anon_upload_enable=YES:允许匿名用户上传文件

anon_mkdir_write_enable=YES:允许匿名用户创建目录

anon_other_write_enable=YES:开放匿名用户其他写入权

local_umask=022:本地用户所上传文件的权限掩码

local_root=/var/ftp:设置本地用户的 FTP 根目录
local_enable=YES:本地用户可以登陆
write_enable=YES:本地用户可写
anon_world_readable_only=YES:匿名用户可以下载
anon_other_write_enable=YES:匿名用户可以删除
anon_mkdir_write_enable=YES:匿名用户可以新建目录

2、搭建过程

1、实验环境:

搭建好yum源、关闭selinux

server1服务器端:172.25.1.1

server2客户端:172.25.1.2

注意:lftp和vsftpd不一样,vsftpd是服务端需要安装的服务,lftp是客户端需要安装的服务

可能的报错:

500         文件系统权限过大

530         用户认证失败

550        服务功能未开放

553        本地文件系统权限过小

2、服务器端:

[root@server1 ~]# yum install -y vsftpd

[root@server1 ~]#systemctl start vsftpd
[root@server1 ~]#systemctl enable vsftpd

若此时防火墙处于开机状态,则:

[root@server1 ~]#firewall-cmd --permanent --add-server=ftp             //让防火墙允许ftp服务通过

[root@server1 ~]#firewall-cmd --reload             //重新加载防火墙

[root@server1 ~]#cd /var/ftp/pub/                    //ftp的默认发布目录,可以给目录下随便下载点东西

1.设置匿名用户上传

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf                       //ftp的配置文件

anon_upload_enable=YES                                 //匿名用户可上传

write_enable=YES                    //本地用户可写

[root@server1 ~]# systemctl restart vsftpd

[root@server1 pub]# chmod 775 /var/ftp/pub
[root@server1 pub]# chgrp ftp /var/ftp/pub

3、客户端下载服务lftp

[root@server2 ~]# yum install -y lftp

[root@server2 ~]# lftp 172.25.1.1                            //使用lftp连接时默认进入的是服务器端的/var/ftp/

可以看出已经上传成功,应该注意:上传文件的时候必须在pub目录下进行匿名用户是否可以上传的前提是本地用户可写

[root@server1 pub]# ls                     //此时可以在服务器端看到passwd文件已经上传到服务器
passwd  zabbix

2.匿名用户上传速率的设置

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf     

 anon_max_rate=102400                   将速率设置为100K                     


[root@server1 pub]# systemctl restart vsftpd

对比不设置上传速率与设置之后的区别,可以看出上传速率明显受到限制

3.umask的设置

默认本地文件的权限为022

local_umask=022

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# systemctl restart vsftpd

修改之后是:

修改后的文件权限已经被更改

3.限制本地用户浏览目录,即只有登陆服务器端的用户(本地用户)才可进行访问

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf


[root@server1 pub]# systemctl restart vsftpd

服务器端拥有用户student,密码为redhat ;没有用户linux

客户端拥有用户linux,密码为redhat

此时,我们以linux进行登陆

[root@server2 ~]# lftp 172.25.1.1 -u linux                   //可以看出访问被拒

若用student进行登陆:

[root@server2 ~]# lftp 172.25.1.1 -u student                  //可以看出用服务器端的本地用户进行登陆可以访问

4.用户黑白名单的设定

首先是黑名单的设定(锁定在家目录中)

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# vim /etc/vsftpd/chroot_list

[root@server1 pub]# systemctl restart vsftpd

刚才student用户是可以进行访问的

[root@server2 ~]# lftp 172.25.1.1 -u student                      //可以看出此时已经无法访问根目录了

其次是白名单的设定

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf


[root@server1 pub]# systemctl restart vsftpd

[root@server2 ~]# lftp 172.25.1.1 -u student

[root@server2 ~]# lftp 172.25.1.1 -u linux                    //可以看出此时是可以访问的

除白名单student外其他用户均不可进行访问

5.用户黑白名单的永久设定

  • 设置永久黑名单

[root@server1 pub]# vim /etc/vsftpd/ftpusers  

[root@server2 ~]# lftp 172.25.1.1 -u student                    //登陆失败

  • 设置黑名单让其无法登陆

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# systemctl restart vsftpd

设置user_list_deny为YES时,表示userlist为黑名单

[root@server1 pub]# vim /etc/vsftpd/user_list                 //在配置文件中添加westos用户,并用命令useradd westos创建用户westos

westos

[root@server2 ~]# lftp 172.25.1.1 -u westos                    //因为westos在黑名单中,故登陆不成功

  • 设置白名单

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# systemctl restart vsftpd

 

3、ftp虚拟用户的建立及设定

  • 创建虚拟帐号身份

[root@server1 pub]# yum install pam

[root@server1 ftp]# cd /etc/vsftpd/

[root@server1 vsftpd]# vim userdb                //编辑信息,文件名自定义

[root@server1 vsftpd]# db_load -T -t hash -f userdb userdb.db          //给用户信息文件进行加密

//其中hash为加密方式,userdb为被加密文件,userdb.db为加密后生成的文件

[root@server1 vsftpd]# ls                   //可以看见已经经过加密生成了密文文件 userdb.db

[root@server1 vsftpd]# vim ftpuser        //文件名自定,用来设定用户登陆认证方式

account     required    pam_userdb.so   db=/etc/vsftpd/userdb
auth           required    pam_userdb.so   db=/etc/vsftpd/userdb

[root@server1 vsftpd]# vim /etc/vsftpd/vsftpd.conf

[root@server1 vsftpd]# systemctl restart vsftpd

[root@server2 ~]# lftp 172.25.1.1 -u user1                   //登陆成功


http://lihuaxi.xjx100.cn/news/238080.html

相关文章

SpringMVC学习二

使用POJO作为参数 web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app version"3.0" xmlns"http://java.sun.com/xml/ns/javaee" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio…

考csp所需算法_CSP vs RxJS:您所不知道的。

考csp所需算法by Kevin Ghadyani通过凯文加迪亚尼(Kevin Ghadyani) CSP vs RxJS&#xff1a;您所不知道的。 (CSP vs RxJS: what you don’t know.) CSP发生了什么&#xff1f; (What happened to CSP?) You probably clicked this article thinking “what is CSP?” It’s…

哈希函数是什么,在区块链中有什么用?

想知道更多关于区块链技术知识&#xff0c;请百度【链客区块链技术问答社区】 链客&#xff0c;有问必答&#xff01;哈希函数是什么&#xff1f; 哈希函数&#xff0c;又叫散列函数、散列算法&#xff0c;是一种从任何一种数据中创建小的数字“指纹”&#xff08;也叫做摘要&a…

深入学习Lock锁(2)——LockSupport工具类

2019独角兽企业重金招聘Python工程师标准>>> 在同步组件中&#xff0c;当需要阻塞或唤醒一个线程的时候&#xff0c;都会使用LockSupport工具类来完成相应 工作。LockSupport定义了一组的公共静态方法&#xff0c;这些方法提供了最基本的线程阻塞和唤醒功能&#xf…

自动化运维工具Saltstack(一)

1、saltstack简介&#xff1a; 什么是saltstack&#xff1f; saltstack是基于python开发的一套C/S架构配置管理工具 使用SSL证书签方的方式进行认证管理 号称世界上最快的消息队列ZeroMQ使得SaltStack能快速在成千上万台机器上进行各种操作 采用RSA Key方式确认身份 传输采用AE…

JavaScript词法作用域的简单介绍

by Michael McMillan迈克尔麦克米兰(Michael McMillan) JavaScript词法作用域的简单介绍 (An easy intro to Lexical Scoping in JavaScript) Lexical scoping is a topic that frightens many programmers. One of the best explanations of lexical scoping can be found in…

非对称加密及RSA算法

想知道更多关于区块链技术知识&#xff0c;请百度【链客区块链技术问答社区】 链客&#xff0c;有问必答&#xff01;最近在学习区块链相关的知识&#xff0c;发现其保证去中心化的一个重要的手段就是基于密码学中的非对称加密。 何为非对称加密&#xff1f; 在回答这个问题之前…

处理器拦截器(HandlerInterceptor)详解

处理器拦截器&#xff08;HandlerInterceptor&#xff09;详解 编程界的小学生 关注 2017.04.06 15:19* 字数 881 阅读 657评论 0喜欢 4简介SpringWebMVC的处理器拦截器&#xff0c;类似于Servlet开发中的过滤器Filter&#xff0c;用于处理器进行预处理和后处理。 应用场景1、日…