Linux搭建 FTP服务器

vsftpd 是 very secure ftp daemon 的缩写,它是 Linux 上使用最受欢迎、使用最广泛的 FTP 服务器之一,它具有安全,速度快,稳定的特点,很多重要的 FTP 站点比如 ftp.gnu.org、ftp.freebsd.org 都是使用 vsftpd 作为服务器的。

说明

工作模式

服务器使用两个端口和客户端通信,一个是命令端口,也叫控制端口,默认是 21, 用于命令的传输 ,一个是数据端口,默认是 20 ,用于数据的传输。

  • 主动模式

    客户端向FTP服务器发送端口信息,由服务器主动连接该端口

    流程:客户端和FTP服务器的命令端口(21)建立TCP连接,当需要传输数据时,客户端新启动一个用于数据传输的端口,并在命令端口的连接上用 PORT 命令告诉服务器该端口号,服务器与该端口建立TCP连接,连接成功之后,客户端开始传输数据

  • 被动模式

    FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接

    流程:客户端和FTP服务器的命令端口(21)建立TCP连接,当需要传输数据时,服务器侦听一个用于数据传输的端口,并在命令端口的连接上用 PASV 命令告诉客户端该端口号,客户端与该端口建立TCP连接,连接成功之后,客户端开始传输数据

建议:

1、大多数FTP客户端都在局域网中,没有独立的公网IP地址,且有防火墙阻拦,主动模式下FTP服务器成功连接到客户端比较困难。因此,如无特殊需求,都是将FTP服务器配置为被动模式,本文后面的FTP服务器配置也是以被动模式为例的。

2、被动模式下,命令端口和数据端口都是在FTP服务器端开启,也都可以通过启动配置来修改,由于默认的端口是公开的,安全性低,所以实际安装的时候都会修改默认端口。

用户认证模式

  • 匿名用户模式

    任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用

  • 本地用户模式

    通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。

  • 虚拟用户模式

    FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。

匿名用户模式一般用于不重要的于公开文件,并且只提供下载服务,也就是说,用户只能下载,不能有其他操作,本地用户模式通过配置锁定目录、修改命令端口和数据端口 可以进一步增强安全性,本文后面的配置是以该模式为例的。

安装

#安装前可以使用下面的命令检查是否已安装
$ vsftpd -v
-bash: vsftpd: 未找到命令
#安装 vsftpd
$ yum install vsftpd
#安装完成后,执行 vsftpd -v 命令,如果输出版本号,表示安装成功
$ vsftpd -v
vsftpd: version 3.0.2
#配置服务器  默认的配置位于 /etc/vsftpd/vsftpd.conf

vsftpd.conf

  • 访问权限
#是否允许匿名登录,默认允许,如果允许,用户名 ftp 和 anonymous 都会被当做匿名登录
#为了安全,一般不允许匿名登录
anonymous_enable=NO#是否允许匿名上传,默认不允许,如果允许 write_enable 选项需要设置为 YES
#为了安全,一般不允许
anon_upload_enable=NO#是否允许本地用户登录,默认不允许,如果允许,在 ```/etc/passwd```中的用户都可以登录 FTP 服务器
#如果不予许匿名登录的话,这个选项需要设置为允许
local_enable=YES#是否允许在FTP服务器上写入, 默认不允许,如果有上传文件、删除文件等需求,一般都是开启的
write_enable=YES#设置写入服务器文件的权限掩码值,如果值是八进制需要以 0 开头,否则会当作十进制
#值为 022,能满足大部分FTP的需求
local_umask=022
  • 锁定访问目录
#默认为 NO, 如果设置为 YES,表示用户通过FTP客户端登录之后
#只能在FTP服务器指定的目录中,不允许切出目录,
chroot_local_user=YES#定义用户 FTP 主目录,用户登录成功之后,vsftpd 服务器会切换到此目录,
#此时 FTP 客户端会位于此目录中,后续的上传以及下载都是针对这个目录的
local_root=/data

登录的用户锁定在指定的目录中,避免用户访问不应该访问的目录,这里我们设置成data目录,例如:新添加一个用户 testuser 专门用于上传下载, testuser 通过 FTP 客户端成功登录后,会自动切换到 /data 目录,并且不允许切出该目录

注意:用户上传和下载都是在限定的目录中,所以一般都是把锁定目录设置到剩余空间比较大的磁盘中

  • 限定用户登录
#如果设置为 YES ,vsftpd 将会从 userlist_file 选项指定的文件读取用户列表
userlist_enable=YES#设置用户列表配置文件, 如果 /etc/vsftpd/user_list 不存在需要手工创建
userlist_file=/etc/vsftpd/user_list#此选项检查 userlist_enable 选项,当 userlist_enable 为 YES 时
#如果 userlist_deny 设置为 NO , 表示只允许 userlist_file 中的用户登录
#如果 userlist_deny 设置为 YES, 表示禁止 userlist_file 中的用户登录,允许其他用户登录
userlist_deny=NO
  • 修改端口
#如果启用,vsftpd 将在独立模式下运行,vsftpd 本身将负责侦听和处理传入的连接
listen=YES# 跟 listen 选型类似,但是此选项是侦听在 IPV6 上的 socket
# 而 listen 是 IPV4, 此选项和 listen 是互斥的,不能同时设置为 YES
listen_ipv6=NO#服务器侦听端口,也是命令端口, 默认是21,修改之后, 防火墙需要做相应的调整
#同时 FTP 客户端登录的时候需要指定端口号
#为了增强安全性,配置的时候一般都会修改
listen_port=21#开启被动模式
pasv_enable=YES#被动模式下,服务器的地址,默认是内网地址
#如果在云服务器上部署,需要修改成公网IP
pasv_address=170.18.9.141#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性
pasv_min_port=50000#设置被动模式下,建立数据传输可使用的端口范围的最大值
pasv_max_port=50010
  • 日志配置
#是否记录上传下载日志,默认是不记录,如果设置为记录
#默认日志文件位于 /var/log/vsftpd.log, 如果配置了 vsftpd_log_file 选项,会覆盖默认日志文件
xferlog_enable=YES#记录上传下载的日志
xferlog_file=/var/log/xferlog#是否按照标准格式记录日志
xferlog_std_format=YES

设置防火墙

$ firewall-cmd --zone=public --add-port=21/tcp --permanent
$ firewall-cmd --zone=public --add-port=50000-50010/tcp --permanent
$ firewall-cmd --reload

启动服务

配置完 /etc/vsftpd/vsftpd.conf ,设置好防火墙之后,执行下面的命令启动服务器
$ systemctl start vsftpd$ systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemonLoaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)Active: active (running) since Wed 2022-12-07 13:20:02 CST; 20min agoProcess: 7976 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)Main PID: 7978 (vsftpd)Tasks: 1Memory: 640.0KCGroup: /system.slice/vsftpd.service└─7978 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.confDec 07 13:20:02 registry systemd[1]: Starting Vsftpd ftp daemon...
Dec 07 13:20:02 registry systemd[1]: Started Vsftpd ftp daemon#设置开机自启
$ systemctl enable vsftpd
# 可以确认服务器的命令端口是否开启
$ netstat -antup | grep vsftpd
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      7978/vsftpd

新建FTP用户

$ useradd test
$ passwd test

新建 FTP 目录,并修改目录权限

$ mkdir -p /data/ftp
$ chown test.tset /data
$ chmod -R 500 /data
$ chmod -R 777 /data/ftp

注意:/data 是锁定目录,test 登录之后,只能呆在此目录以及此目录的子目录中,不允许切换到其他目录锁定目录必须要去掉可写权限,不然用户会无法登录

“/data/ftp” 目录是实际的上传下载的目录,所以需要有可读写和可执行权限

最后,还需要把用户名加入到FTP服务器允许登录的用户列表中,也即 /etc/vsftpd/vsftpd.conf 中 userlist_file 选项对应的文件 /etc/vsftpd/user_list 中,如果 user_list 不存在,需要手工创建并把 test添加进去。

测试

服务器全部搭建好之后,需要进行测试,这里我准备的 FTP服务器的IP是170.18.9.141, FTP客户端机器的IP是170.18.9.140

进入FTP客户端机器的 /opt目录,新建一个 test.txt 测试文件

$ cd /opt/ && vim test.txt

测试上传下载需在FTP客户端机器上安装 FTP 客户端, 执行以下命令进行安装,如已安装,可忽略

$ yum install ftp

ftp删除目录

注意:目录下有文件,直接删除目录会失败,提示550 Remove directory operation failed.
必须先将目录下的文件都删除,才能删除目录
$ rmdir 目录名

ftp删除文件

$ delete 文件名

文章转载地址:https://www.cnblogs.com/wanng/p/how-to-install-ftp-server.html

Linux搭建 FTP服务器相关推荐

  1. 《工具箱-服务器相关》Linux搭建FTP服务器

    Linux搭建FTP服务器 一.FTP介绍 FTP服务:实现ftp的一个服务,安装vsftpd软件即可搭建ftp服务器 FTP协议:文件传输协议(file transfer protocol),在不同 ...

  2. linux搭建ftp服务并创建目录,linux搭建ftp服务器

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 一.前述 企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个 ...

  3. linux ftp服务器搭建及用户的分配,Linux搭建FTP服务器

    1..FTP服务器有什么用 .FTP服务器是能够提供文件存储.访问的计算机,实现了文件共享. 2.FTP是什么 FTP是File Transfer Protocol(文件传输协议),是一种基于TCP的 ...

  4. Linux搭建 FTP 服务器、SFTP服务器

    使用场景 ftp是大多数网站的文件传输选择工具,但ftp并不是非常安全,并且在centos上搭建的vsftpd也非常的不稳定,偶尔会出现权限问题,例如500.或是账号密码不正确等等. 而SFTP是基于 ...

  5. linux搭建ftp服务器可上传下载,通过linux系统搭建ftp服务然后使用filezilla客户端进行上传下载...

    1.         准备环境 一台linux主机作为ftp服务器(这里以centos7.2系统为例),一台Windows系统的主机作为客户端 2.         服务端配置: (1)   下载vs ...

  6. linux 搭建ftp 服务器

    安装 sudo apt-get purge vsftpd 卸载应用 sudo apt-get installl vsftpd 重新安装 sudo mkdir /home/uftp 创建用户目录 sud ...

  7. vsftpd 权限 600 不能下载 vsftpd 不能删除 vsftpd 配置文件 linux 搭建 ftp 服务器

    速通指南:这里不用看 windows10 下的蜜汁 QoS 政策对 ftp 极不友好.所以为了方便之后抄作业,这里贴一个 linux 局域网内用的 ftp 服务器的配置文件和说明,直接 Ctrl+C ...

  8. Linux篇---ftp服务器的搭建

    一.前述 企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结. 二.具体 1.显示如下图则表示已安装 vsftp软件.如果未显示则需要安 ...

  9. 如何查看linux上的ftp服务器配置,ftp服务器配置:如何在Linux上搭建FTP服务器?

    Linux搭建FTP服务器的话,直接使用系统自带的vsftpd服务器即可,轻便灵活,容易操作,下面我简单介绍一下安装和使用过程,感兴趣的朋友可以尝试一下ftp服务器配置: 01安装vsftpd首先ft ...

最新文章

  1. [leetcode]509. 斐波那契数
  2. 本地计算机绑定域名访问
  3. 深度学习目标检测之 YOLO v1
  4. A - 还是畅通工程(最小生成树)
  5. linux 卸载pppoe,列“State”不属于表 。
  6. 数据结构10——强连通
  7. nodejs如何运行JavaScript代码
  8. Springboot接入阿里云物联网SDK实现控制网络继电器通断
  9. abb机器人编程指令goto指令_abb机器人编程指令——轨迹偏移使用的指令以及moveL指令...
  10. 吴恩达机器学习系列内容汇总
  11. word文字上下间距怎么调_word上下文字间距 word字体上下间距怎么调整
  12. 【C#】基础篇(3) C#实现串口助手,解决中文乱码
  13. 世界品牌新500强揭晓 中国移动央视海尔入前百名
  14. h3cmsr830series说明书_H3C MSR830路由器设置
  15. (wa待对拍)HDU - 2057 十六进制加法 难度:C++入门 复杂度:有点复杂 翻译难度:简单...
  16. python打开setting_Python3 - setting的默认配置和用户配置读取
  17. python提示takes no arguments_Python创建实例时提示错误takes no arguments,找不到什么原因?...
  18. html5网页设计 薛之谦个人网页适用个人博客网页模板
  19. ChatGPT 火爆“出圈”,谷歌员工慌了!CEO 回应:我们也有,担心声誉才没上
  20. SQL注入分类、防御

热门文章

  1. dz论坛viewthread.php,解决修改模板后discuz论坛系统首页空白的问题
  2. 第四届中国高速铁路健康管理技术论坛
  3. 安川伺服驱动器usb驱动_我洗了USB驱动器; 有哪些长期风险?
  4. 二、物流系统|2.2物流系统的构成、评价
  5. 3. ackerman函数的递归实现算法用java语言_ackerman函数递归算法
  6. [转]mitmproxy套件使用攻略及定制化开发
  7. 没有学好 飞鸽传书2007
  8. dma-pl330 12680000.pdma: Reset Channel-1 CS-20000f FTC-20000解决方案
  9. 京东读书下载 --- 京东电子书阅读神器
  10. 100行Python代码,做一个打地鼠小游戏