我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux下搭建FTP服务器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux下搭建FTP服务器

Linux下搭建FTP服务器

FTP协议:文件传输协议(File Transfer Protocol)

  • 协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的一个标准
  • FTP运行在OSI模型的应用层,并利用传输协议TCP在不同的主机之间提供可靠的数据传输
  • FTP 在文件传输中还支持断点续传功能,可以大幅度减少CPU网络带宽的开销

FTP模型

  • 用户接口:提供一个用户接口并使用客户端协议解释器的服务
  • 客户端协议解释器:向远程服务器发送命令 并建立客户数据传输过程
  • 服务端协议解释器:响应客户协议机发出的命令并驱动服务端数据传输过程
  • 客户端数据传输协议:负责完成和服务器数据传输过程及客户端本地文件系统的通信
  • 服务端数据传输协议:负责完成和客户数据过程及服务器端文件系统的通信

控制连接(端口号21)

  • 主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应
  • 只需要很小的网络带宽
  • FTP服务端监听21端口号来等待控制连接建立
  • 建立控制连接后,还需要验证客户身份,决定是否建立数据连接
  • 当需要目录列表,传输文件时,才建立数据连接,并且每次客户端都是用不同的端口号来建立数据连接。数据传输完毕,就中断这条临时的数据连接
  • 在FTP连接期间,控制连接始终保持通常的连接状态。在数据连接存在期间,控制连接必须存在;一旦控制连接断开,数据连接会自动关闭。

数据连接(端口号20)

  • FTP服务端监听20端口来等待数据连接
  • 数据连接依赖于控制连接
  • 建立方式(主动被动都是相对服务器而言)

主动模式

  • 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口
  • 控制连接建立后,客户端进行身份验证,协商数据连接采用主动模式;随后客户端会向FTP服务器发送Port报文,表明自己监听的IP+端口,并等待FTP服务器(20端口)向自己监听的IP+端口发起数据连接请求。
  • 服务端发起数据连接请求,建立数据连接

被动模式

  • 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口;
  • 控制连接建立后,客户端进行身份验证,协商数据连接采用被动模式;随后客户端会向服务器发送PASV报文,表示我们用被动模式
  • 服务端收到PASV报文,于是向客户端发送Port报文,表明自己监听的IP+端口
  • 客户端发起数据连接请求,建立数据连接

VSFTPD服务介绍

  • 服务包:vsftpd
  • 服务类型:由Systemd启动的守护进程
  • 配置单元: /usr/lib/systemd/system/vsftpd.service
  • 守护进程: /usr/sbin/vsftpd
  • 端口: 21(ftp) , 20(ftp‐data)
  • 主配置文件: /etc/vsftpd/vsftpd.conf
  • 用户访问控制配置文件: /etc/vsftpd/ftpusers /etc/vsftpd/user_list
  • 日志文件: /etc/logrotate.d/vsftpd
  • 配置文件参数
参数作用
listen=NO是否以独立运行的方式监听服务
listen_address=ip地址设置要监听的IP地址
listen_port=21设置FTP服务的监听端口
download_enable=YES是否允许下载文件
userlist_enable=YES设置用户列表为"允许"
userlist_deny=YES设置用户列表为"禁止"
max_clients=0最大客户端连接数,0为不限制
max_per_ip=0同一IP地址的最大连接数,0为不限制
anonymous_enable=YES是否允许匿名用户访问
anon_upload_enable=YES是否允许匿名用户上传文件
anon_umask匿名用户上传文件的umask
anon_root=/var/ftp匿名用户的ftp根目录
anon_mkdir_write_enable=YES是否允许匿名用户创建目录
anon_other_write_enable=YES是否开放匿名用户的其他写入权限(重命名、删除等)
anon_max_rate=0匿名用户的最大传输速率,0为不限制
local_enable=yes是否允许本地用户登录
local_umask=022本地用户上传文件的umask值
local_root=/vat/ftp本地用户的ftp根目录
chroot_local_user=YES是否将用户权限禁锢在ftp目录,以确保安全
local_max_rate=0本地用户的最大传输速率,0为不限制

基础配置

安装vsftp

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

准备分发的文件

[root@localhoust ~]#touch /var/ftp/abd.txt

启动服务

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

关闭防火墙

[root@localhost ~]#systemctl stop firewalld[root@localhost ~]#setenforce 0

客户端工具

Linux中

1.使用ftp工具

[root@localhost ~]# yum install ftp -y[root@localhost ~]# ftp Name (192.168.175.10:root):anonymouspassword:直接回车

ftp工具一定要输入用户名和密码,匿名用户登陆用户名写anonymous,密码直接回车,登陆成功或者失败都会给出提示

2.使用lftp工具

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

lftp工具不需要输入用户名和密码直接登陆,不会直接给出登陆成功或者失败的提示,需要输入ls工具才能知道是否连接成功,优点在于连接更加方便

Windows中

1.在浏览器中访问

可以在浏览器、运行窗口或者资源管理器中输入 ftp://IP地址/ ,这样访问的是ftp的根位置,如果需要访问相关目录可以输入 ftp://IP地址/目录/文件名

2.在控制管理器中访问

在cmd窗口中,输入命令 ftp 即可访问

需要注意的是直接访问ftp服务器的IP地址时访问的根位置目录是 /var/ftp,如果需要访问pub里的test可以访问 ftp://192.168.80.129/pub/test 。

案例

案例1,匿名用户访问(默认开启)

修改配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.confanonymous_enable=YESanon_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES[root@localhost ~]# systemctl restart vsftpd #重启配置

新版本的vsftp针对用户安全性进行了升级,普通用户无法在/var/ftp下新建文件,如果直接添加目录的w权限会触发安全判断问题,因为/var/ftp目录下的文件只能是默认的755权限,普通用户没有w权限,而且/var/ftp目录的属主必须是root,如果修改所属主或者权限则会触发完全问题。欲使普通用户可以在ftp中上传文件,就在/var/ftp下新建一个用于普通用户上传文件的目录,比如/var/ftp/pub,将/var/ftp/pub目录的属主和属组改成ftp,并且添加w权限

chown ftp.ftp /var/ftp/pubchmod 777 /var/ftp/pub

现在就可以在里面写文件了

案例2,本地用户访问

这些用户就是Linux下的用户,使用本地用户登陆,登陆成功时位置在该用户的家目录。如:用户han登陆时,输入han在Linux下的密码,登陆成功后位置在/home,han可以在该目录下创建或者删除文件

修改配置文件

[root@localhost ~]# vi /etc/vsftpd/vsftpd.confanonymous_enable=NO #不允许匿名用户访问local_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES[root@localhost ~]# systemctl restart vsftpd #重启配置[root@localhost ~]# systemctl enable vsftpd

本地用户登陆时,密码使用的是该用户在Linux下登陆时的密码,而不是ftp的密码

注意:出现在/etc/vsftpd/ftpusers /etc/vsftpd/user_list这两个文件中的内容将会被定义为黑名单

案例3,虚拟用户访问

只用于登陆ftp的用户,不是Linux下的用户。

  1. 创建用于进行FTP认证的用户数据库文件,其中奇数行为用户名,偶数行为密码。
[root@localhost ~]# cd /etc/vsftpd/[root@localhost vsftpd]# vim vuser.list #创建文件,稍后虚拟用户信息从这个文件读取eagle #用户名centos #密码cisco #用户名centos #密码huawei #用户名centos #密码
  1. 使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件。
[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db

由于文件vuser.list中含有密码等敏感信息,所以使用加密算法加密。转换完后新的文件vuser.db就是用户数据库,里面是加密后的信息。

查看vuser.db的文件类型:

[root@localhost vsftpd]# file vuser.dbvuser.db: Berkeley DB (Hash, version 9, native byte-order)
  1. 降低数据库文件的权限(避免其他人看到数据库文件的内容)。加强数据库vuser.db的安全性,防止破解
[root@localhost vsftpd]# chmod 600 vuser.db
  1. 把原始的明文信息文件删除。
[root@localhost vsftpd]# rm -f vuser.list
  1. 创建一个本地用户,用来做虚拟用户在本地的代理,为了安全起见,禁止这个本地用户登录。
[root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual#-d 指定用户的家目录为/var/ftproot -s 指定为不能登陆的用户[root@localhost vsftpd]# ls -ld /var/ftproot/drwx------. 2 virtual virtual 59 810 23:04 /var/ftproot/[root@localhost vsftpd]# chmod -Rf 755 /var/ftproot/

新建一个用于虚拟用户认证的PAM文件vsftpd.vu,利用pam模块(linux内核的一个认证模块)做一个认证

[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.vuauth required pam_userdb.so db=/etc/vsftpd/vuseraccount required pam_userdb.so db=/etc/vsftpd/vuser
  1. 配置文件
[root@localhost vsftpd]# cat /etc/vsftpd/vsftpd.confanonymous_enable=NOlocal_enable=YESguest_enable=YESguest_username=virtual #名为virtual的用户做代理allow_writeable_chroot=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpd.vu #记得修改这里为我们自己的认证文件userlist_enable=YEStcp_wrappers=YES[root@localhost vsftpd]# systemctl restart vsftpd

这时用户创建完毕,可以登陆,但是不能写文件,需要给权限

  1. 如果想要针对不同的用户设置不同的权限
[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_dir/ #创建一个目录用于存放各个虚拟用户的配置文件[root@localhost vsftpd]# cd /etc/vsftpd/vusers_dir/[root@localhost vusers_dir]# touch huawei #创建huawei的配置文件,如果不给任何权限,则默认为主配置文件[root@localhost vusers_dir]# vim cisco #创建cisco的配置文件,并修改配置文件anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES#与配置匿名用户权限一样[root@localhost vusers_dir]# vi /etc/vsftpd/vsftpd.confanonymous_enable=NOlocal_enable=YESguest_enable=YESguest_username=virtualallow_writeable_chroot=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpd.vuuserlist_enable=YEStcp_wrappers=YESuser_config_dir=/etc/vsftpd/vusers_dir #在主配置文件中加上这一行,告诉主配置文件我们这里还有配置[root@localhost vusers_dir]# systemctl restart vsftpd配置完后,huawei没权限,cisco有权限

来源地址:https://blog.csdn.net/weixin_67177297/article/details/130793463

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux下搭建FTP服务器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux下如何搭建FTP服务

本篇内容介绍了“Linux下如何搭建FTP服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对于用户来说,如何搭建自己的FTP服务是一个基本
2023-06-16

linux下怎么搭建ftp服务器及配置

这篇文章主要介绍“linux下怎么搭建ftp服务器及配置”,在日常操作中,相信很多人在linux下怎么搭建ftp服务器及配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux下怎么搭建ftp服务器及配置
2023-06-13

Linux FTP服务器如何搭建

这篇文章主要介绍Linux FTP服务器如何搭建,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先我们看一下主要配置文件如下:/etc/VSFTPd/VSFTPd.conf 主配置文件/etc/VSFTPd.FTPu
2023-06-17

win2003下FTP服务器搭建教程

这篇文章主要为大家详细介绍了win2003下FTP服务器搭建教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

Linux中如何搭建FTP服务器

本篇内容主要讲解“Linux中如何搭建FTP服务器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中如何搭建FTP服务器”吧!Linux是以后操作系统的趋势所在,目前的大部分国产操作系统
2023-06-09

Windows 7下FTP服务器搭建教程

这篇文章主要为大家详细介绍了Windows 7下FTP服务器搭建教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

Linux中搭建FTP服务器的方法

Linux是以后操作系统的趋势所在,目前的大部分国产操作系统,甚至于安卓系统都是与Linux离不开关系。其中,FTP作为其中共享手段存在已久,我们今天就来看看怎么搭建简单的FTP服务器吧。 FTP 是文件传输协议(File Transfer
2022-06-04

Rocky Linux中怎么搭建FTP服务器

在Rocky Linux中搭建FTP服务器可以通过vsftpd软件来实现。以下是搭建FTP服务器的步骤:安装vsftpd软件:sudo dnf install vsftpd启动vsftpd服务并设置开机自启:sudo systemctl s
Rocky Linux中怎么搭建FTP服务器
2024-04-09

Python搭建FTP服务器

Python版本 3.6.2使用的ftp包:pyftpdlib    pip install pyftpdlib就可以下载安装了FTP协议下载上传文件在文件过大的情况下会比HTTP更具有优势,更为方便的实现断点上传和进度监控,下面是官方文档
2023-01-31

Ubuntu环境下如何搭建FTP服务器

今天小编给大家分享一下Ubuntu环境下如何搭建FTP服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装ftp安装ft
2023-07-04

Linux系统是怎么搭建FTP服务器

这篇文章将为大家详细讲解有关Linux系统是怎么搭建FTP服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。FTP和linternet服务一样也是一个客户机/服务器系统,主要适用于网络上进
2023-06-28

云服务器搭建ftp服务器

搭建云服务器的硬件需求首先需要考虑的是云服务器所需的硬件设备。通常情况下,云服务器需要具备以下硬件设备:1)服务器主板:负责服务器的硬件设备,如CPU、内存、硬盘等;2)网络设备:用于连接云服务器与其他网络服务提供商,如Wi-Fi、蓝牙、5G等;3)存储设备:用于存储用户上传的数据和下载的文件,如SSD磁盘、固态硬盘等
2023-10-27

CentOS系统下的FTP服务器如何搭建

在CentOS系统上搭建FTP服务器可以使用vsftpd软件。以下是搭建FTP服务器的步骤:安装vsftpd软件:sudo yum install vsftpd启动vsftpd服务并设置开机自启动:sudo systemctl start
CentOS系统下的FTP服务器如何搭建
2024-05-09

编程热搜

目录