Linux下如何部署FTP服务器

Linux下如何部署FTP服务器
FTP 是 File Transfer Protocol 的缩写,即⽂件传输协议,它通过⽹络在服务器和客户端之间传输⽂件,现在已经成为⼀种⼴泛使⽤的标准⼯具
vsftpd 是 very secure ftp daemon 的缩写,它是 Linux 上使⽤最受欢迎、使⽤最⼴泛的 FTP 服务器之⼀,它具有安全,速度快,稳定的特点,很多重要的 FTP 站点⽐如、都是使⽤ vsftpd 作为服务器的
当前,FTP服务在⽇常⼯作中使⽤得也挺多,每次服务器版本更新都需要先打包,然后上传到线上的FTP服务器上,再从FTP服务器上下载服务器包到线上机器,进⾏MD5校验,然后就可以更新线上服务器了
说明
在安装 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
如果未安装会有如下提⽰
[root@localhost ~]$ vsftpd -v
-bash: vsftpd: 未到命令
安装 vsftpd
yum install vsftpd
安装完成后,执⾏vsftpd -v命令,如果输出版本号,表⽰安装成功
[root@localhost ~]# vsftpd -v
vsftpd: version 3.0.2
配置服务器
安装完成之后,默认的配置位于/etc/f,如果不到默认配置在哪⾥,可以使⽤下⾯的命令查下,其中/etc/vsftpd⽬录就是存放配置的地⽅
[root@localhost ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/
配置的格式相对简单,每⼀⾏都是注释或者选项,注释以#号开头,选项的格式是option=value的形式,每个选项占⼀⾏,option、=以及value 之间不允许出现空格
vsftpd 对每个配置的选项都设置了⼀个默认值,服务器启动之后,在f中配置的选项会覆盖服务器中的默认值
vsftpd 可配置的选项很多,下⾯按照类别把常⽤的配置项分成了访问权限、锁定访问⽬录、限定⽤户登录、修改端⼝、⽇志配置、其他配置⼏组,每个配置项前都增加了详细的说明
配置项分组主要是为了总结说明每⼀组配置项的作⽤,实际配置的过程中,把所有组的配置项添加到f中即可
访问权限
#是否允许匿名登录,默认允许,如果允许,⽤户名 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 主⽬录中
user_sub_token=$USER
#定义⽤户 FTP 主⽬录,⽤户登录成功之后,vsftpd 服务器会切换到此⽬录,
#此时 FTP 客户端会位于此⽬录中,后续的上传以及下载都是针对这个⽬录的
local_root=/home/$USER/ftp
把登录的⽤户锁定在指定的⽬录中,避免⽤户访问不应该访问的⽬录,这⾥我们设置成只允许访问⾃⼰的 home ⽬录中的 ftp ⽬录,例如:新添加⼀个⽤户testuser专门⽤于上传下载,testuser通过 FTP 客户端成功登录后,会⾃动切换到/home/testuser/ftp⽬录,并且不允许切出该⽬录
注意:⽤户上传和下载都是在限定的⽬录中,所以⼀般都是把锁定⽬录设置到剩余空间⽐较⼤的磁盘中
限定⽤户登录
#如果设置为 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=NO
# 跟 listen 选型类似,但是此选项是侦听在 IPV6 上的 socket
# ⽽ listen 是 IPV4,此选项和 listen 是互斥的,不能同时设置为 YES
listen_ipv6=YES
#服务器侦听端⼝,也是命令端⼝, 默认是21,修改之后, 防⽕墙需要做相应的调整
#同时 FTP 客户端登录的时候需要指定端⼝号
#为了增强安全性,配置的时候⼀般都会修改
listen_port=48888
#开启被动模式
pasv_enable=YES
#被动模式下,服务器的地址,默认是内⽹地址
#如果在云服务器上部署,需要修改成公⽹IP
pasv_address=192.168.70.20
#设置被动模式下,建⽴数据传输可使⽤的端⼝范围的最⼩值。
#建议把端⼝范围设置在⼀段⽐较⾼的范围内,例如50000~50010,有助于提⾼访问FTP服务器的安全性
pasv_min_port=50000
#设置被动模式下,建⽴数据传输可使⽤的端⼝范围的最⼤值dome sheet
pasv_max_port=50010
⽇志配置
#是否记录上传下载⽇志,默认是不记录,如果设置为记录
#默认⽇志⽂件位于 /var/log/vsftpd.log,如果配置了 vsftpd_log_file 选项,会覆盖默认⽇志⽂件
xferlog_enable=YES
#记录上传下载的⽇志
xferlog_file=/var/log/xferlog
#是否按照标准格式记录⽇志
xferlog_std_format=YES
其他配置
# vsftpd 使⽤的 PAM 服务名字
pam_service_name=vsftpd
#
tcp_wrappers=YES
这两个配置使⽤默认⽣成的选项即可,不⽤做任何修改
设置防⽕墙
如果你部署的FTP服务器的机器上防⽕墙是关闭状态的话,可以跳过此步骤,或者你不想设置防⽕墙的话,可以通过systemctl stop firewalld命令关闭防⽕墙,这样也可以忽略此步骤
上⾯配置中服务器侦听端⼝(也叫命令端⼝) listen_port选项设置的是48888,数据端⼝的范围是50000-50010,所以防⽕墙需要开放这些端⼝,执⾏以下命令即可设置
[root@localhost ~]# firewall-cmd --zone=public --add-port=48888/tcp --permanent
success
[root@localhost ~]# firewall-cmd --zone=public --add-port=50000-50010/tcp --permanent
success
防⽕墙设置好以后,执⾏下⾯的命令重启防⽕墙服务
[root@localhost ~]# systemctl restart firewalld
最后,查看下端⼝是否成功开放
[root@localhost ~]# firewall-cmd --list-port
50000-50010/tcp 48888/tcp
从结果可以看出,防⽕墙已经开放了48888、50000-50099 端⼝
启动服务器
负离子加湿器
配置完/etc/f,设置好防⽕墙之后,执⾏下⾯的命令启动服务器
systemctl start vsftpd
启动之后,查询服务器状态,确认服务器是否启动成功
[root@localhost ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-09-1 20:21:00 CST; 3 days ago
Main PID: 94916 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─94916 /usr/sbin/vsftpd /etc/f
Sep 1 20:21:00 localhost systemd[1]: Starting Vsftpd
Sep 1 20:21:00 localhost systemd[1]: Started Vsftpd ftp daemon.
将服务器设置成开机启动
systemctl enable vsftpd
下⾯的命令可以确认服务器的命令端⼝是否开启( 配置的是 : 48888 )
[root@localhost ~]# netstat -antup | grep vsftpd
tcp6      0      0 :::48888                :::*                    LISTEN      20501/vsftpd
[root@localhost ~]#
新建FTP⽤户
新建⽤户mytest,并设置密码
[root@localhost ~]# useradd mytest
[root@localhost ~]# passwd mytest
新建 FTP ⽬录,并修改⽬录权限
[root@cghost21 home]# mkdir -p /home/mytest/ftp/files
[root@cghost21 home]# chmod -R 500 /home/mytest/
[root@cghost21 home]# chmod -R 700 /home/mytest/ftp/files
注意:/home/mytest/ftp是 mytest ⽤户的锁定⽬录,mytest 登录之后,只能呆在此⽬录以及此⽬录的⼦⽬录中,不允许切换到其他⽬录
锁定⽬录必须要去掉可写权限,不然⽤户会⽆法登录,这⼀点在FTP服务器端做了强制的校验,所以"chmod 500 /home/mytest/"命令是设置/home/mytest以及/home/mytest/ftp两个⽬录可读可执⾏权限,⽆可写权限
"/home/mytest/ftp/files"⽬录是实际的上传下载的⽬录,所以需要有可读写和可执⾏权限
最后,还需要把⽤户名加⼊到FTP服务器允许登录的⽤户列表中,也即/etc/f中userlist_file选项对应的⽂件/etc/vsftpd/user_list 中,如果user_list不存在,需要⼿⼯创建并把mytest添加进去
测试
热风锅炉服务器全部搭建好之后,需要进⾏测试,这⾥我准备的 FTP服务器的IP是192.168.70.20, FTP客户端机器的IP是192.168.70.11
进⼊FTP服务器的/home/mytest/ftp/files⽬录, 新建⼀个a.txt测试⽂件
[root@localhost files]# pwd
/home/mytest/ftp/files
[root@localhost files]# echo "" >> a.txt
[root@localhost files]#路灯节电器
进⼊FTP客户端机器的/home/wl/temp ⽬录,新建⼀个测试⽂件
[root@localhost temp]# echo "" >>
[root@localhost temp]#
测试上传下载需在FTP客户端机器上安装 FTP 客户端, 执⾏以下命令进⾏安装,如已安装,可忽略
yum install ftp
执⾏下⾯⼀系列的命令,进⾏测试
1、登录FTP服务器命令,格式:ftp 服务器ID 命令端⼝
2、输⼊登录⽤户名
3、输⼊登录密码
4、登录成功之后,此时位于FTP服务器的 /home/mytest/ftp ⽬录中,执⾏ ls 命令之后,
结果显⽰当前⽬录还有⼀个 files 的⼦⽬录
5、执⾏ pwd 命令查看当前所在⽬录,FTP服务器上的 /home/mytest/ftp ⽬录就是 FTP 的根⽬录
6、执⾏ cd files 命令进⼊ files ⽬录,也即FTP服务器上的 /home/mytest/ftp/files  ⽬录,
然后执⾏ ls 命令查看当前⽬录的⽂件,可以看到 FTP服务器上的测试⽂件 a.txt
7、执⾏   命令,把FTP客户端机器上当前⽬录( /home/wl/temp ) 中的 ⽂件
上传到服务器的 /home/mytest/ftp/files ⽬录中
8、执⾏    命令,把FTP服务器上的 /home/mytest/ftp/ ⽂件下载到 FTP客户端机器的当前⽬录( /home/wl/temp ) 中
9、上传下载测试完成之后,执⾏ exit 命令,退出 FTP 命令⾏
10、最后执⾏ 命令查看从 FTP服务器上下载的测试⽂件的内容,从结果可以看出,和服务器上的测试⽂件内容是⼀样的
⼩结
本⽂介绍了 Linux 下FTP服务器 vsftpd 的安装、配置、测试等整个步骤以及注意事项,⽂中只是对 vsftpd 的常⽤配置项做了说明,更多的配置项请参考官⽹⽂档

本文发布于:2024-09-24 18:28:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/273406.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   配置   允许   命令
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议