Linux搭建FTP服务器配置

news/2024/11/14 22:21:57/文章来源:https://www.cnblogs.com/txycsig/p/18542334

一、概念

1.1介绍

FTP:File transfer protocol 文件传输协议

端口

TCP21:命令

TCP20:数据

1.2原理

默认采用被动模式

被动模式FTP

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

FTP服务器命令(21)端口接受客户端任意端口(客户端初始连接)

FTP服务器命令(21)端口到客户端端口(>1023)(服务器响应客户端命令)

FTP服务器数据端口(>1023)接受客户端端口(>1023)(客户端初始化数据连接到服务器指定的任意端口)

FTP服务器数据端口(>1023)到客户端端口(>1023)(服务器发送ACK响应和数据到客户端的数据端口)

NFS,基于主机认证,只是局域网之间文件传输

FTP,可以实现用户之间的认证

Real:本地用户 ,服务端用户

匿名用户

虚拟(游客)用户

(只需要一台服务机)

1.3 配置文件

主配置文件:

vim /etc/vsftpd/vsftpd.conf

从配置文件

vim /var/ftp/pub

主配置文件详解

anonymous_enable=YES 是否启用匿名用户

local_enable=YES

write_enable=YES 允许写入(无论是匿名用户还是本地用户要实现上传就需要快开启它)

local_umask=022 默认本地用户上传文件权限755

dirmessage_enable=YES 显示每个目录下的文件信息

xferlog_enable=YES 日志启用

connect_from_port_20=YES 主动请求的数据端口

chown_uploads=YES 所有匿名用户上传的文件所属用户将会被改成chown_username

chown_username=whoever 匿名上传的所属用户名是whoever

xferlog_file=/var/log/xferlog 启用的日志文件

xferlog_std_format=YES

idle_session_timeout=600 空闲连接超时

data_connection_timeout=120 数据连接超时

nopriv_user=ftpsecure 当服务器运行于最底层时使用的用户名

chroot_list_enable=YES chroot_local_user=YES 所有文件列出用户, 可以切换到其他目录

chroot_list_file=/etc/vsftpd/chroot_list

listen=NO 服务将自己监听处理listen_ipv6=YES

pam_service_name=vsftpd 设置PAM认证模块使用名称预设为vsftpd

userlist_enable=YES

tcp_wrappers=YES 服务端和客户端访问控制策略(服务器级别的一种防火墙)

二、实验

2.1匿名用户

默认访问/ftp/pub

2.1.1 准备工作

1)安装vsftpd

root@localhost ~# mount /dev/sr0 /mnt

mount: /dev/sr0 is write-protected, mounting read-only

root@localhost ~# yum install vsftpd –y

2)关闭起vsftpd服务,关闭防火墙和SE linux

root@localhost ~# systemctl stop firewalld

root@localhost ~# setenforce 0

root@localhost ~# systemctl restart vsftpd

2.1.2下载

虚拟机Ip为192.168.233.131

root@localhost ~# mkdir /var/ftp/pub/{1.3}

  1. 访问window资源管理器 输入ftp://192.168.233.131

         2.或者访问浏览器ftp://192.168.233.131/pub/,进行下载

2.1.3 上传

1)修改配置文件/etc/vsftpd/vsftpd.conf相关选项

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

内容

anon_umask=022(增加)

anon_upload_enable=YES(取消注释)

anon_mkdir_write_enable=YES(取消注释)

2)重启vsftpd服务

root@localhost ~# systemctl restart vsftpd

3)修改目录/var/ftp/pub权限,给目录写权限

root@localhost ~# chmod 777 /var/ftp/pub

4)访问window资源管理器 输入ftp://192.168.233.131,进入pub目录底下上传文件或者访问浏览器ftp://192.168.233.131/pub/,进行上传

2.1.4删除

1)修改配置文件/etc/vsftpd/vsftpd.conf相关选项

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

增加内容

anon_other_write_enable=YES

2)重启vsftpd服务测试

root@localhost ~# systemctl restart vsftpd

2.2 本地用户

2.2.1下载

1)修改主配置文件/etc/vsftpd/vsftpd.conf开启本地用户权限(关闭匿名用户)

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

anonymous_enable=NO

修改布尔值打开/home目录的权限

root@localhost haha# getsebool -a | grep ftp_home_dir

ftp_home_dir --> off

root@localhost haha# setsebool -P ftp_home_dir on

2.2.2上传和删除(一样)

1)修改主配置文件/etc/vsftpd/vsftpd.conf开启本地用户权限(默认开启,不用改)

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

write_enable=YES

2)重启服务vsftpd

root@localhost ~# systemctl restart vsftpd

3)在浏览器访问地址ftp://192.168.233.138查看。用户密码登陆,默认上来是用户的根目录,在资源管理器访问地址ftp://192.168.233.138,进行上传删除

删除

2.2.3遍历

当前用户来回切换文件系统,如果开启,就不能来回切换目录

  1. 本地用户不能翻目录 chroot_local_user=YES开启代表本地用户不能访问 首先开启chroot选项,allow_writeable_chroot=YES, 再指定本地用户不能访问 root@localhost ~# vim /etc/vsftpd/vsftpd.conf 增加内容为:开启chroot选项 allow_writeable_chroot=YES 取消注释 指定本地用户不能翻目录 chroot_local_user=YES

重启服务查看

2)指定用户列表文件中用户访问

chroot_list_enable=YES 开启代表用户列表文件/etc/vsftpd/chroot_list中的用户可以访问(在/etc/vsftpd目录下创建文件chroot_list,在文件中写入用户名),未在文件中列出的用户不能访问

首先开启chroot选项,allow_writeable_chroot=YES,

再指定本地用户不能访问 ,chroot_local_user=YES

最后指定用户列表文件的用户可以访问 chroot_list_enable=YES

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

增加内容为:开启chroot选项

allow_writeable_chroot=YES

取消注释 指定本地用户不能翻目录

chroot_local_user=YES

指定用户列表文件的用户可以访问,未在文件中列出的用户不能访问

chroot_list_enable=YES

重启服务,在/etc/vsftpd目录下创建文件chroot_list,在文件中写入用户名xixi,xigua

root@localhost ~# systemctl restart vsftpd

root@localhost vsftpd# cd

root@localhost ~# cd /etc/vsftpd/

root@localhost vsftpd# vim chroot_list

xixi

xigua

创建用户xixi,xigua(用户在列表文件中),密码为redhat,访问浏览器ftp://192.168.233.138查看,可以访问

root@localhost vsftpd# echo redhat | passwd --stdin xigua

更改用户 xigua 的密码 。

passwd:所有的身份验证令牌已经成功更新。

root@localhost vsftpd# echo redhat | passwd --stdin xixi

更改用户 xixi 的密码 。

passwd:所有的身份验证令牌已经成功更新。

创建用户hh(用户不在列表文件中)密码为redhat,访问浏览器ftp://192.168.233.138查看,不能访问

root@localhost ~# useradd hh

root@localhost ~# echo redhat | passwd --stdin hh

更改用户 hh 的密码 。

passwd:所有的身份验证令牌已经成功更新。

2.3游客用户(虚拟用户)

2.3.1原理

linux,使用vsftp建立用户后,默认使用ftp访问的时候,是访问对应的用户家目录。想要多个用户同时访问一个目录,同时对同一目录有着不同的权限,这些设定只能通过vsftp中的虚拟用户来进行设定,普通用户无法达到这样的效果。

首先通过建立一个普通系统用户,建立家目录,然后将所有的虚拟用户映射到对应的普通系统用户家目录,然后对各虚拟用户进行权限控制,虚拟用户没有查看目录的权限。

1)创建系统用户ftp,修改用户ftp家目录权限

root@localhost ~# useradd -s /sbin/nologin ftp

root@localhost ~# chmod 704 /home/ftp

2)修改主配置文件

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

#增加内容

guest_enable=YES

guest_username=ftp

#本地虚拟用户特权开启

virtual_use_local_privs=YES

重启服务

root@localhost ~# systemctl restart vsftpd

3)创建虚拟用户文件,

root@localhost ~# cd /etc/vsftpd/

root@localhost vsftpd# vim ftp

ftp1

redhat

ftp2

redhat

ftp3

redhat

root@localhost ~# cd /etc/vsftpd/

root@localhost vsftpd# vim ftp

root@localhost vsftpd# db_load -T -t hash -f ftp ftp.db

root@localhost vsftpd# chmod 600 ftp.db

root@localhost vsftpd# ll -Z ftp.db

-rw-------. root root unconfined_u:object_r:etc_t:s0 ftp.db

root@localhost vsftpd# vim /etc/pam.d/vsftpd

auth required pam_userdb.so db=/etc/vsftpd/ftp

account required pam_userdb.so db=/etc/vsftpd/ftp

root@localhost vsftpd# systemctl restart vsftpd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832374.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RBAC做数据权限

在RBAC模型下,系统只会验证用户A是否属于角色RoleX,而不会判断用户A是否能访问只属于用户B的数据DataB。这种问题我们称之为“水平权限管理问题”。 数据权限 数据规则 比如我们系统的商机数据,需要从下面几个维度来控制数据访问权限。 销售人员只能看自己的数据; 各大区的…

Free5GC源码研究(9) - PCF研究(下)

前文再续书接上一回,继续研究Free5GC中所实现的PCF的另外两组服务:SMPolicy和PolicyAuthorizationSMPolicy PCF中与SMF的交互,对session的控制有着很重的的分量,甚至连TS23.503中对与Policy Control的定义都是指PCF指示SMF去控制QoS流的过程。Policy control: The process …

遥感大数据智能分析与应用

在数字化和信息化时代,遥感技术已经成为获取地球表面信息的重要手段。随着遥感数据量的激增,如何高效、智能地分析和应用这些数据,成为了一个亟待解决的问题。本文将探讨遥感大数据智能分析的现状与未来趋势。遥感大数据的挑战与机遇遥感数据正以前所未有的速度增长,这些数…

GMES101 作业一

一共就是求两个矩阵一个旋转矩阵一个投射矩阵 旋转矩阵 旋转矩阵还能第一时间反应过来去找公式 投射矩阵 投射矩阵就完全不记得了,又去看了一遍视频,终于完全理解了投射矩阵究竟是个啥意思 原来还要自己算\[ M_{persp\to ortho}= \begin{matrix} n&0&0&0 \\ 0&am…

waypoint常常被翻译成航路点

参考资料:2023-端到端自动驾驶系统研究综述-陈妍妍 2024-EMMA: End-to-End Multimodal Model for Autonomous Driving

作业四

作业一 要求: ▪ 熟练掌握 Selenium 查找 HTML 元素、爬取 Ajax 网页数据、等待 HTML 元素等内 容。 ▪ 使用 Selenium 框架+ MySQL 数据库存储技术路线爬取“沪深 A 股”、“上证 A 股”、 “深证 A 股”3 个板块的股票数据信息。 o 候选网站:东方财富网: http://quote.eas…

ATE测试 - STDF文件分析 - Excel报表格式探讨

1、转换对象:STDF文件 2、适用人员:TE 或 解决方案人员 或 需要对测试项TestItem原始测试值进行分析的 2、Excel格式:如下示意图4、局限性:Excel一个sheet中,列数最大不能超过16384列,行数最大不能超过1048576行,因此这种格式对于超过16384颗Die的文件就无法生成Excel文…

实验一:百度机器翻译SDK实验(2024.11.15日完成)

实验一:百度机器翻译SDK实验(2024.11.15日完成)任务一:下载配置百度翻译Java相关库及环境(占10%)。任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,…

2024.11.12 NOIP模拟 - 模拟赛记录

Preface 一套烂题。 T1 一眼搬的 CF(赛后十秒就找到原题了),只搬 idea 就算了,根本不设置部分分,大样例给的更是一坨(数据范围给的 \(10^{15}\),1 2 10 72 121 算什么大样例?),甚至最后的题解都是直接复制的洛谷。 T2 稍好,除了实数运算稍微恶心一点,其它都没什么。…

数据采集与融合技术作业四

目录作业①实验要求及结果心得体会作业②实验要求及结果心得体会作业③实验要求及结果心得体会码云连接作业① 实验要求及结果要求 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证…

[转贴]在前端如何玩转 Word 文档

在日常工作中,大部分人都会使用 Microsoft Office Word、WPS 或 macOS Pages 等文字处理程序进行 Word 文档处理。除了使用上述的文字处理程序之外,对于 Word 文档来说,还有其他的处理方式么?答案是有的。 接下来阿宝哥将介绍在前端如何玩转 Word 文档,阅读本文之后,你将…

AI之旅:起步即迈出重要一步,博客园与 Chat2DB 达成战略合作

在技术变革的路上,我们不会孤单。我们与博客园的合作,只是一个开始。未来,更多的技术人将加入这场旅程,共同书写AI时代的开发者新篇章。我们希望,这条路上的每一个人,都能够在智能工具与温暖社区的双重支持下,走得更远、飞得更高AI之旅开篇之后的第一篇本准备写一篇简单…