FTP文件服务的安装与部署

FTP(文件传输协议)概念

FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中, _开放20、21 端口_即可。

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

主动模式
客户端向FTP服务器发送端口信息,由服务器主动连接该端口,客户端和FTP服务器的命令端口(21)建立TCP连接,当需要传输数据时,客户端新启动一个用于数据传输的端口,并在命令端口的连接上用 PORT 命令告诉服务器该端口号,服务器与该端口建立TCP连接,连接成功之后,客户端开始传输数据。

被动模式
FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接,客户端和FTP服务器的命令端口(21)建立TCP连接,当需要传输数据时,服务器侦听一个用于数据传输的端口,并在命令端口的连接上用 PASV 命令告诉客户端该端口号,客户端与该端口建立TCP连接,连接成功之后,客户端开始传输数据。

一、环捡需求:

①服务端系统CentOS 7或6 软件vsftpd

②客户端系统window7或10 软件xftp客户端或者网址ftp://IP

二、安装epel.repo源

[root@localhost ~]# yum -y install epel-release.noarch

[root@localhost ~]# cd /etc/yum.repos.d/

三、安装vsftpd及相关依赖

vsftpd:ftp软件

pam:认证模块

db4:支持文件数据库

[root@localhost ~]# yum -y install vsftpd pam* db4

四、关闭防火墙

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

[root@localhost ~]# vim /etc/selinux/config

修改内容为:SELINUX=disabled

五、 vsftpd 配置文件说明
配置文件 作用 /etc/vsftpd/vsftpd.conf

vsftpd核心配置文件
vim /etc/vsftpd/ftpusers

用于指定那些用户不能访问FTP服务器 vim /etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件 /etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本
/var/ftp/

默认情况下匿名用户的根目录

六、配置匿名用户访问上传文件

①编写 配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf | grep -v ^#

anonymous_enable=YES #是否允许匿名用户访问
write_enable=YES #
anon_upload_enable=YES #是否允许匿名用户上传文件
anon_mkdir_write_enable=YES #是否允许匿名用户创建目录
anon_other_write_enable=YES #是否允许匿名用户有其他写入权限(改名,删除,覆盖)
dirmessage_enable=YES #
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

listen_ipv6=YES
local_umask=022
local_enable=YES

②常见的 匿名FTP配置项

anonymous_enable=YES #是否允许匿名用户访问
anon_upload_enable=YES #是否允许匿名用户上传文件
anon_mkdir_write_enable=YES #是否允许匿名用户创建目录
anon_other_write_enable=YES #是否允许匿名用户有其他写入权限(改名,删除,覆盖)

anon_max_rate=0 #是否允许最大传输率(字节/秒)0为无限制

anon_umask=022 #匿名用户所上传文件的权限掩码

anon_root=/var/ftp #设置匿名用户的FTP根目录

③、登录成功【浏览器访问和Xftp工具访问】

FTP文件服务的安装与部署

④、修改权限实现上传[浏览器不进行上传]

[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# chown -R ftp.ftp pub/
[root@localhost ftp]# ll -d pub/
总用量 0
drwxr-xr-x. 2 ftp ftp 6 6月 10 2021 pub

[root@localhost ftp]# systemctl restart vsftpd

注意:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效,因为我们是以FTP用户的身份访问的,而pub默认的属组是root

七、启动vsftp服务、查看vsftp进程、查看所用端口以及查看进程路径【根据进程id查看进程占用端口,查看对应端口】

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

[root@localhost vsftpd]# ps -ef | grep vsftp
root 68044 1 0 13:11 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 68191 2779 0 13:18 pts/0 00:00:00 grep –color=auto vsftp
[root@localhost vsftpd]# netstat -nap | grep 68044

[root@localhost ~]# netstat -lnpt | grep vsftpd

tcp6 0 0 ::: 21 ::: LISTEN 68044/vsftpd
tcp6 0 0 :::21 :::
LISTEN 68044/vsftpd

[root@localhost ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

八、vsftp配置本地(系统)用户

①创建系统用户

[root@localhost ftp]# useradd zhangsan
[root@localhost ftp]# useradd lisi
[root@localhost ftp]# passwd zhangsan
[root@localhost ftp]# passwd lisi

②修改配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

local_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES

[root@localhost vsftpd]# systemctl restart vsftpd

注意:查看配置文件中每行中是否存在空格 :set list

③常用的 本地用户FTP配置项

local_enable=YES #是否允许本地系统用户访问
local_umask=022 #本地用户所上传文件的权限掩码
local_root=/var/ftp #设置本地用户的FTP根目录
chroot_list_enable=YES #表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list #表示写在/etc/vsftpd/chroot_list文件里>面的用户是不可以出chroot环境的。默认是可以的。
chroot_local_user=YES #表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroo
t环境的,和上面的相反。
local_max_rate=0 #限制最大传输速率(字节/秒)0为无限制

④添加用户到白名单

[root@localhost vsftpd]# vim /etc/vsftpd/user_list

zhangsan
lisi

[root@localhost vsftpd]# systemctl restart vsftpd

⑤登录成功【浏览器访问和Xftp工具访问】

实现上传

FTP服务器上存放数据

[root@localhost zhangsan]# cd /home/
[root@localhost home]# ls
lisi userllg zhangsan
[root@localhost vsftpd]# cd /home/zhangsan
[root@localhost zhangsan]# touch zhangsan.txt
[root@localhost zhangsan]# systemctl restart vsftpd

九、vsftp配置虚拟用户

解决系统风险问题,作用于,只能访问FTP服务,不能登录系统。

①建立虚拟FTP用户的账号

[root@localhost zhangsan]# useradd -s /sbin/nglogin vu

②创建虚拟用户文件

[root@localhost zhangsan]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vsftpd.conf_up
[root@localhost vsftpd]#vim /etc/vsftpd/user

zhao #用户
123456 #密码
zhang
123456

③创建数据文件

通过db_load工具创建Berkeley DB格式的数据库文件

[root@localhost vsftpd]# db_load -T -t hash -f user user.db

-t hash 读取文件的基本方法

-T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件

-f 指定数据原文件

[root@localhost vsftpd]# ls
ftpusers user.db vsftpd.conf vsftpd.conf_up
user user_list vsftpd_conf_migrate.sh

④建立支持虚拟用户的PAM认证文件

[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user

⑤修改配置文件

local_enable=YES
local_umask=077
allow_writeable_chroot=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
guest_enable=YES
guest_username=vu
chroot_local_user=YES
virtual_use_local_privs=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/user_dir

⑥为用户建立独立的配置目录及文件

[root@localhost vsftpd]# mkdir /etc/vsftpd/user_dir

[root@localhost vsftpd]# ls
ftpusers user.db user_list vsftpd_conf_migrate.sh
user user_dir vsftpd.conf vsftpd.conf_up
[root@localhost vsftpd]# cd /etc/vsftpd/user_dir/
[root@localhost user_dir]# vim zhao

local_root=/etc/vsftpd/data #虚拟用户数据的存储位置
[root@localhost user_dir]# cd ..

⑦创建虚拟用户数据存放目录

[root@localhost vsftpd]#mkdir /etc/vsftpd/data
[root@localhost vsftpd]#chmod
_ 777 data/_

[root@localhost vsftpd]# cd data/
[root@localhost data]#touch zhao.txt
[root@localhost data]# ls
zhao.txt
[root@localhost data]#systemctl restart vsftpd

十、FTP客户端lftp

Ⅰ、服务器

[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir test
[root@localhost ftp]# cd test/
[root@localhost test]# ls
[root@localhost test]# touch llg
[root@localhost test]# ls
llg

[root@localhost test]# chmod 777 /var/ftp/test/llg

Ⅱ、客户机

[root@localhost ~]# lftp 192.168.112.146
lftp 192.168.112.146:~> ls
drwxr-xr-x 2 14 50 6 Jun 09 2021 pub
drwxrwxrwx 2 0 0 21 May 17 07:14 test

①get下载文件

[root@localhost ~]# lftp 192.168.112.146

lftp 192.168.112.146:~> ls
drwxr-xr-x 2 14 50 6 Jun 09 2021 pub
drwxrwxrwx 2 0 0 21 May 17 07:14 test
lftp 192.168.112.146:/> cd test/

lftp 192.168.112.146:/test> ls
-rw-r–r– 1 0 0 0 May 17 07:14 llg.txt

lftp 192.168.112.146:/test> get llg.txt #下载到/root目录下

lftp 192.168.112.146:/test> get llg.txt -o /tmp/llg #下载到指定目录下
lftp 192.168.112.146:/test> exit

②下载目录

lftp 192.168.112.146:/test> mirror /var/ftp/test #下载test目录

Original: https://www.cnblogs.com/blue-wlZ/p/16266680.html
Author: 孤立一点
Title: FTP文件服务的安装与部署

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582894/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • .Net Core下DllImport使用方法及扩展

    引言​ 在有时候的开发过程中,我们会遇到需要调用系统的API,不巧的是.Net Core可能没办法为我们提供相关的调用方式。那需要如何才能解决这个问题呢?​ 这时候我们就可能会考虑…

    Linux 2023年6月13日
    074
  • 防止shell script多次运行

    防止shell script多次运行 一个思路是在script初期检测系统中是否存在同名进程。 if [ ps -ef | grep "test.sh" | g…

    Linux 2023年5月28日
    071
  • typora使用

    一:typora、配置picgo+github安装以及配置 picgo 、Node.js和typora安装包见百度网盘链接: 参考的教程如下: 二:typora使用语法 Ctrl+…

    Linux 2023年6月13日
    079
  • 我叫Mongo,干了「查询终结篇」,值得您拥有

    这是mongo第三篇”查终结篇”,后续会连续更新5篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟…

    Linux 2023年6月14日
    0120
  • MAC Book: Operation not permitted

    背景: 最近清理系统上的一些无用的文件后,为了release出可用空间,所以还要把.Trash目录下的文件清理才真正清理完,但是ls 查看该目录时发现一直报”opera…

    Linux 2023年6月7日
    081
  • Prometheus+Grafana监控-基于docker-compose搭建

    前言 Prometheus Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库,基于 Go 语言开发。通过基于 HTTP 的 pull 方式采集时序数…

    Linux 2023年6月7日
    079
  • 6.22(js–>案例应用)

    (练习1)简易计算器: <html lang="en"> <head> <meta charset="UTF-8&quo…

    Linux 2023年6月7日
    0105
  • Python函数的必选参数、默认参数、可变参数、关键字参数和命名关键字参数

    必选参数 def function(args_name): print (args_name) function("参数调用") ~$ 参数调用 跟在函数名口号…

    Linux 2023年6月7日
    070
  • .NET Core 3.0, 发布将于今晚开始!

    期待已久的.NET Core 3.0即将发布! .NET Core 3.0在.NET Conf上发布。大约还有9个多小时后,.NET Conf开始启动。 第1天-9月23日 9:0…

    Linux 2023年6月7日
    074
  • 结构型之【装饰器模式】

    定义: 装饰器模式(Decorator Pattern) 也称为包装模式(Wrapper Pattern) 是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性…

    Linux 2023年6月14日
    096
  • SSH的 Write failed: Broken pipe 问题

    问题现象: 表示连接管道已经断开 解决方法: 方法一:客户端配置在客户端的 ~/.ssh/ config文件(如不存在请自行创建)中添加下面内容:ServerAliveInterv…

    Linux 2023年6月8日
    079
  • django学习__1

    Django python网络编程回顾 之前我们介绍过web应用程序和http协议,简单了解过web开发的概念。Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息 处…

    Linux 2023年6月7日
    094
  • 在linux中使用tcpdump抓包的方法:

    在linux中使用tcpdump抓包的方法: 1,运行下面命令来从所有网卡中捕获数据包: tcpdump -i any 2,从指定网卡中捕获数据包 tcpdump -i eth0 …

    Linux 2023年6月14日
    0114
  • 【Example】C++ 模板概念讲解及编译避坑

    C++ 不同于 Java,它没有标准的 Object 类型。也就意味着 C++ 并不存在完整的泛型编程概念。 为什么不存在完整的泛型编程概念,放到最后一个例子讲,先讲 &#8220…

    Linux 2023年6月13日
    078
  • MySql集群之读写分离配置

    一、主从复制原理 二、环境准备 192.168.140.131 主库 192.168.140.132 从库 三、主库配置 1、修改配置文件 /etc/my.cnf #mysql服务…

    Linux 2023年6月14日
    080
  • 关系型、非关系型数据库存储选型盘点大全

    工作中总是遇到数据存储相关的 Bug 工单,新需求开发设计中也多多少少会有数据模型设计和存储相关的问题。经过几次存储方案设计选型和讨论后发现需要有更全面的思考框架。 日常开发中常用…

    Linux 2023年6月8日
    095
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球