Linux下搭建FTP服务器教程

Linux下搭建FTP服务器教程一、基本安装1.运行以下命令安装vsftpd。yuminstall-yvsftpd2.运行以下命令打开及查看etc/vsftpdcd/etc/vsftpdls说明:/etc/vsftpd/vsftpd.conf是核心配置文件。/etc/vsftpd/ftpusers是黑名单文件,此文件里的用户不允许访问FTP服务器。/etc/vsftpd/user_list 是白名单文件,是…

大家好,又见面了,我是你们的朋友全栈君。

一、基本安装

1.运行以下命令安装 vsftpd。

yum install -y vsftpd

2.运行以下命令打开及查看etc/vsftpd
cd /etc/vsftpd
ls

说明:
/etc/vsftpd/vsftpd.conf 是核心配置文件。
/etc/vsftpd/ftpusers 是黑名单文件,此文件里的用户不允许访问 FTP 服务器。
/etc/vsftpd/user_list  是白名单文件,是允许访问 FTP 服务器的用户列表。
/etc/vsftpd/vsftpd_conf_migrate.sh  是vsftpd操作的一些变量和设置

备注:使用命令 rpm -ql vsftpd  可列出vsftpd中包含的文件

Linux下搭建FTP服务器教程


3.运行以下命令设置开机自启动。

systemctl enable vsftpd

4.运行以下命令启动 FTP 服务。

systemctl start vsftpd

5.运行以下命令查看 FTP 服务端口。

netstat -antup | grep ftp

Linux下搭建FTP服务器教程


6.配置本地用户登录
本地用户登录就是指用户使用 Linux 操作系统中的用户账号和密码登录 FTP 服务器。

vsftpd 安装后默只支持匿名 FTP 登录,用户如果试图使用 Linux 操作系统中的账号登录服务器,将会被 vsftpd 拒绝,但可以在 vsftpd 里配置用户账号和密码登录。具体步骤如下:

a.运行以下命令创建 ftptest 用户。
useradd ftptest   
(删除用户命令:sudo userdel -r newuser)
b.运行以下命令修改 ftptest 用户密码。

passwd ftptest

Linux下搭建FTP服务器教程

7.修改/etc/vsftpd/vsftpd.conf
a.运行vim /etc/vsftpd/vsftpd.conf。
b.按键 “i” 进入编辑模式。
c.将是否允许匿名登录 FTP 的参数修改为anonymous enable=NO。
d.将是否允许本地用户登录 FTP 的参数修改为local_enable=YES。
e.按键 “Esc” 退出编辑模式,然后按键“:wq” 保存并退出文件。
f.运行命令 cat /etc/vsftpd/vsftpd.conf 查看配置文件内容。

Linux下搭建FTP服务器教程


二、基本配置

完成vsftpd安装后发现无法远程连接,仍需要完成以下配置。

原因分析:

FTP连接方式分为:主动模式和被动模式。默认为被动模式。

如果为被动模式,服务器端必须监听至少一个额外的被动模式端口。所以,若只开通20和21端口是不够的,需要另外配置入站端口。

以下以阿里云服务器为例:

Linux下搭建FTP服务器教程

在阿里云安全组中,开启8800/8899,20/21 端口 ,也可自定义(后面配置需要用到),仅做参考。

备注参考信息:

FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接。FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别。
先假设客户端为C,服务端为S.
Port模式:
当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S收到这个Port命令后 就会向客户端打开的那个端口N进行连接,这种数据连接就生成了。
Pasv模式:

当客户端C向服务端S连接后,服务端S会发信息给客户端C,这个信息是(服务端S在本地打开了一个端口M,你现在去连接我吧),当客户端C收到这个信息后,就可以向服务端S的M端口进行连接,连接成功后,数据连接也建立了。

参考链接:https://blog.csdn.net/binsoft/article/details/44595677 (貌似也是转载的,找不到原文…)

添加配置信息 修改配置文件 vim /etc/vsftpd/vsftpd.conf

在文件末尾添加:
pasv_enable=YES       
pasv_min_port=8800
pasv_max_port=8899

解释:
8800/8899 为上面安全组添加的端口号
pasv_enable=YES|NO
YES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。
pasv_min_port=port number 
pasv_max_port=port number

设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。

完成以上配置,基本可以实现远程连接FTP。对了,配置完成记得重启服务器systemctl restart vsftpd

三、配置 vsftpd 限制 FTP 账户访问其它目录

使用 vsftpd 搭建 FTP 服务,可以配置用户登录后,限制访问其它的目录,只能进它的主目录。 配置方法如下:

1、打开 vsftp 的配置文件 vim /etc/vsftpd/vsftpd.conf  找到 chroot Chroot_local_user

     设置所有的本地用户都执行 chroot chroot_local_user=yes (本地所有帐户都只能在自家目录) 

2、设置指定用户执行 chroot

      找到并修改 chroot_list_enable=yes 

3、chroot_list_file=/ 任意指定的路径 /chroot_list (文件中的名单可以调用)
注意:vsftpd.chroot_list 是没有创建的需要自己创建。若不想限制个别用户,将用户名添加到vsftpd.chroot_list文件中,每个用户名一行。

Linux下搭建FTP服务器教程

4在文件末尾添加 

allow_writeable_chroot=YES #对vsftpd有用,否则,因home目录权限为root权限而无法登录

5、为 /home/ftptest 添加权限

Linux下搭建FTP服务器教程

6.重启服务器

systemctl restart vsftpd

四、vsftpd修改默认端口

1、编辑/etc/vsftpd/vsftpd.conf 文件,在该配置文件末尾添加此行:listen_port=6709

Linux下搭建FTP服务器教程

2、编辑/etc/services 文件,将其中的
ftp 21/tcp  改为 ftp 6709/tcp ,

ftp 21/udp  改为 ftp 6709/udp

Linux下搭建FTP服务器教程

3、重新启动vsftpd 服务。
4、运行命令

netstat -tnulp | grep vsftpd

可以查看到现在系统现监听的vsftpd 的端口为6709

Linux下搭建FTP服务器教程

5、最后不要忘记到阿里云安全组添加6709端口号

五、本文参考

1.https://help.aliyun.com/document_detail/51998.html?spm=5176.11065259.1996646101.searchclickresult.232f56b2leo5fC#h2-linux-ftp-2

2.https://help.aliyun.com/knowledge_detail/41291.html?spm=a2c4g.11186623.4.5.jTvPdu

3.https://blog.csdn.net/zhuixunhebe1/article/details/77651588

4.http://blog.51cto.com/mingxiaoming/1974715

5.https://blog.csdn.net/binsoft/article/details/44595677

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157916.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 软件封装工具(牛人自制升降工具)

    平时Java项目的开发通常需要统一管理日志(Log)的输出,例如控制日志信息输送的目的地(控制台、文件等),控制每一条日志的输出格式,把日志分为不同的级别等。常用的比较成熟的Java日志管理工具有Apache的Log4j等。但有时我们平时一时兴趣想写个小Dmeo或小工具,想较好的控制日志的输出,引入专业的日志管理库又显得比较繁琐,下面我就自己封装一个简单的日志工具类(LogUtils.java)。

  • mac电脑卸载软件_docker卸载镜像

    mac电脑卸载软件_docker卸载镜像  在Mac上卸载docker,首先要关闭docker软件,然后进入/usr/local/bin/目录,依次使用如下命令:##1)进入docker的安装目录cd/usr/local/bin/##2)删除与docker相关的文件夹sudorm-rfdocker*sudorm-rfcom.docker.*sudorm-rfhub-tool*sudorm-rfkube*sudorm-rfvpnkit*  如图(1)所示:图(1)完成删除

  • python中内置hash模块hashlib

    python中内置hash模块hashlib一、什么是hashhash,是一种对数据进行变换的算法,这种算法有以下特点:1.不定长输入,定长输出。2.不能被还原。由于算法过程中丢弃了一些数据,但是丢弃的是什么,丢弃了多少,谁也不知道,所以无法被还原,有点类似于有损压缩,丢弃的不可能被找回。3.相同输入,相同输出。4.抗碰撞性。即碰撞(不同输入产生相同输出)的几率特别小。5.抗篡改性。输入稍有改动,输出差别非常大。因为hash算…

  • 使用POI替换word中的特定字符/文字改进版

    推荐:http://www.cnblogs.com/roucheng/p/3504465.html

    2021年12月26日
  • 什么是J2EE?[通俗易懂]

    什么是J2EE?[通俗易懂]什么是J2EE?J2EE是一种用来开发分布式企业软件应用系统的平台。JAVA语言从创生之日起,就获得了广泛接纳,经历了巨大的发展。越来越多的技术都成了JAVA平台的一部分,为了适应不同的需要业开发吃了很多全新的API和标准。最终,Sun公司联合了多家业界巨头,在开放的JAVA社区组织名义下,把所有与企业开发相关的标准,API整合起来,构成了J2EE平台。对于企业,J2EE平台由很多优势:

    2022年10月11日
  • 《译 SFML Essentials 英文版》—— 《第一章》 SFML 入门

    《译 SFML Essentials 英文版》—— 《第一章》 SFML 入门目录创建窗口VideoModeStyleContextSettingsDisablingthemousecursor(禁用鼠标光标)Thegameloop Eventhandling(处理事件)WindowrelatedeventsKeyboardrelatedeventsMouserelatedeventsjoystick…

    2022年10月25日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号