linux网络服务学习(2):vsftp

news2024/11/24 6:47:07

1.什么是vsftp

vsftp是linux服务器上的一款使用ftp协议的软件,是linux上使用最广泛的ftp服务端软件

ftp协议是使用明文传输的,很不安全,一般用于局域网内的文件上传、下载

2.vsftp连接类型

ftp连接要用到2个端口:21、20端口。

21端口用于用户收发FTP命令,如登录等;20端口则用于传送上传、下载的数据

3.vsftp的2种工作模式

(1)主动模式(port模式)

(2)被动模式(passive)

(3)2种模式的选择

主动模式:传送数据时,服务器连接到客户端的端口。需要客户端开放端口给服务器

被动模式:传送数据时,客户端连接到服务器的端口。服务器端开放端口给客户端连接

linux中FTP默认是被动模式,因为客户端往往在防火墙后面,服务器很难连接到客户端。如果要把被动模式改为主动模式,可以在ftp界面下键入passive

4.vsftp的2种传输模式

(1)Binary模式(默认模式):不对数据进行任何处理。适合可执行文件、压缩文件、图片等

(2)ASCII模式:进行文本传输时,自动适应目标操作系统的结束符

(3)切换方式:在ftp互动界面中输入ascii就切换为ASCII模式,输入bin,就转换到Binary模式。

5.软件信息

服务端软件名vsftpd
客户端软件名ftp
服务名ftpd
配置文件/etc/vsftpd/vsftpd.conf

6.匿名登录

6.1安装ftp、vsftpd

yum -y install ftp vsftpd

需要BASE yum源,Media源安装不了

6.2开启ftp服务并设置为开机自启

systemctl start vsftpd
systemctl enable vsftpd

6.3使用匿名用户登录

(1)登录流程

在客户端键入命令:ftp FTP服务器ip

然后在用户名一栏输入ftp或anonymous,代表匿名用户

密码一栏直接回车跳过。这样就可以通过匿名用户登录上了

*匿名用户登录后的所在的服务器目录为/var/ftp,但不建议直接在这个目录下上传下载文件,因为所有的匿名用户都是使用这个目录,很容易造成文件混乱,所以最好再建一层三级目录

(2)权限设置

匿名用户的权限取决于2部分,一是ftp配置文件中对匿名用户的权限设置,二是登录后所在服务器目录的权限设置。

配置文件中匿名用户权限的设置见下表:

配置文件中有关匿名用户权限的设置作用在配置文件中的状态
anonymous_enable=YES启用匿名访问默认开启
anon_umask=022使匿名用户可以下载自己上传的文件无,需要手动写入
anon_root=/var/ftp匿名用户的FTP根目录无,需要手动写入
anon_upload_enable=YES允许上传文件默认被注释
anon_mkdir_wirte_enable=YES允许创建目录默认被注释
anon_other_write_enable=YES开放其他写入权(删除、覆盖、重命名等)无,需要手动写入

vim打开文件后可以通过/关键字来快速搜索

除此之外,还要通过chmod命令对FTP根目录的other用户权限进行设置

*如果出现下图这样的错误,说明是SElinux防火墙没关,在服务器端setenforce 0关闭SElinux防火墙即可

6.4 使用服务器本地用户登录

(1)登录流程

*在服务器端创建一个不可以登录系统,专用于FTP登录的用户:

useradd  -s  /sbin/nologin  ymyx

*给新创建的这个用户设置密码:

passwd  ymyx

通过上述方法创建不可登录系统的用户后,还需要修改/etc/shells文件,在文件中添加下图中的内容

如果是使用正常创建的可以登录系统的用户,则不需要修改/etc/shells

*在客户端登录FTP服务器:

ftp FTP服务器ip

并输入用户名与密码

(2)权限设置

配置文件中有关匿名用户权限的设置作用在配置文件中的状态
local_enable=YES启用服务器本地用户访问默认开启
local__umask=022使服务器本地用户可以下载自己上传的文件默认开启
local__root=/var/ftp服务器本地用户的FTP根目录(如果不写,)无,需要手动写入
chroot_local_user=YES是否将用户禁锢在主目录默认被注释
chroot_list_enable=YES开启白名单,白名单中用户可以随意切换目录默认被注释
chroot_list_file=/etc/vsftpd/chroot_list白名单位置(需手动创建,在里面直接写用户名即可)默认被注释

经试验,在centos7环境下,配置文件中设置了chroot_local_user=YES后,客户端无法再用服务器本地账户登录FTP,需要在配置文件中额外加一条:allow_writeable_chroot=YES

(3)白名单与黑名单

*配置文件中可以设置允许登录FTP的白名单,以及不允许登录FTP的黑名单

黑名单:userlist_enable=YES&userlist_deny=YES

白名单:userlist_enable=YES&userlist_deny=NO

*黑名单配置文件: /etc/vsftpd/ftpusers

这个文件的优先级很高,只要在文件写入了用户名,不需要重启FTP服务就可以立即生效

6.5使用虚拟用户登录

虚拟用户是人为创建的,需要找一个本地用户作为映射。它的好处是,可以对不同的用户进行不同的权限设置,更灵活。

6.5.1建立虚拟用户数据库文件

vim /etc/vsftpd/vsftpd.user
#这个文件就是虚拟用户的数据库文件,但还需要转换需要格式。文件名称随意
#该文件的编辑格式为奇数行为用户名,偶数行为用户名密码

vsftpd.user内的格式见下图

db_load  -T  -t  hash  -f  vsftpd.user  vsftpd.db
#把文件转换为数据库的格式
#-T代表转换为数据库格式,-t hash代表使用hash加密,-f后接原文件

chmod 600 vsftpd.db
#修改权限为600,ftp强制的操作

6.5.2创建虚拟用户的映射用户

(1)创建映射用户

useradd  -d  /var/ftproot  -s  /sbin/nologin  xnyh
#-d后可以指定家目录

xnyh这个用户不需要设置密码,它的作用就是给虚拟用户提供一个家目录

(2)修改所映射的用户家目录权限

虽然虚拟用户是以服务器的一个本地用户为映射并使用其家目录的,但对于这个家目录而已,虚拟用户相当于other用户,因此要用chmod命令修改其权限

chmod 755 /var/ftproot

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

FTP登录默认是不会去找虚拟用户的数据库文件的,需要修改PAM认证文件。

(1)建立PAM配置文件

FTP原有的PAM认证文件是/etc/pam.d/vsftpd,可以直接对其进行修改,也可以复制一份再改名

cp -a /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.pam
#复制一份PAM认证文件

vim  /etc/pam.d/vsftpd.pam
#把文件原有的内容都删掉,并添加下面两条内容
auth  required  pam_userdb.so  db=/etc/vsftpd/vsftpd
account  required  pam_userdb.so  db=/etc/vsftpd/vsftpd
#这里的/etc/vsftpd/vsftpd就是之前建立的虚拟用户数据库文件vsftpd.db,结尾的db省略掉了

(2)修改主配置文件

修改好PAM认证文件后,还需要修改FTP主配置文件:/etc/vsftpd/vsftpd.conf

*将pam_service_name=vsftpd改为pam_service_name=vsftpd.pam

#这代表登录模式将由本地用户登录转变为虚拟用户登录,二者不能同时存在

*还需要在其中添加:

guest_enable=YES

#开放映射

guest_username=xnyh

#使用的映射用户名

user_config_dir=/etc/vsftpd/dir

#虚拟用户的配置文件的目录位置,这个目录是自己创建的,名称随意。在这个目录下可以建立很多配置文件,每个配置文件对应一个虚拟用户

6.5.4给虚拟用户建立配置文件

(1)保持主配置文件中匿名用户的设置不变

因为虚拟用户与匿名用户在主配置文件中共用同样的配置,而且主配置文件的优先级高于自建的虚拟用户配置文件,所以不能在主配置文件中对匿名用户进行权限设置,只需保留最基本的即可:

anonymous_enable=YES

anon_umask=022

(2)建立虚拟用户的配置文件

虚拟用户配置文件的总目录就是/etc/vsftpd/dir(这是之前在主配置文件中自定义的),在其中创建与虚拟用户名相同的文件即为配置文件。

我之前在数据库文件中写入的4个虚拟用户是a1、a2、a3、a4,所以我就在/etc/vsftpd/dir下创建4个同名文件

(3)编辑配置文件内容

虚拟用户的权限语句与匿名用户一样,对不同用户进行不同的配置即可

anon_upload_enable=YES允许上传文件
anon_mkdir_wirte_enable=YES允许创建目录
anon_other_write_enable=YES开放其他写入权(删除、覆盖、重命名等)

6.5.5客户端登录

完成上述操作后,FTP客户端就可以使用虚拟用户进行登录了,登录流程与登录本地用户一样

6.6 ftp模式下的一些常用命令

cd、ls、pwd、mkdir

put:上传

mput:同时上传多个

get:下载

mget:同时下载多个

delete:删除文件

mdelete:同时删除多个文件

rmdir:删除目录

rename:重新命名

quit:退出

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visual Studio 2013 - 重置窗口布局

Visual Studio 2013 - 重置窗口布局 1. Microsoft Visual Studio 2013 - 重置窗口布局References 1. Microsoft Visual Studio 2013 - 重置窗口布局 窗口 -> 重置窗口布局 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

HarmonyOS定时器与定时任务

HarmonyOS 的 ArkTS 说白了 就是 TS和JS混合 加了一些新特性的语言 定时任务 就还是用 js代码就OK了 我们代码这样写 Entry Component struct Twox {build() {Row() {Column(){Button("触发定时任务").onClick(()>{setTimeout(()> {console.log(执行)},2000…

Halcon 凹坑检测案例

* 使用元组的方法 ImageFile:[] ImageFile[0]:D:/Halcon/产品上的凹坑检测/1.bmp ImageFile[1]:D:/Halcon/产品上的凹坑检测/2.bmp for Index : 0 to |ImageFile|-1 by 1read_image (Image, ImageFile[Index])* 二值化threshold (Image, Region, 100, 255)* 连通性connection (…

C语言实现流水灯

头文件 #ifndef __LED_H__ #define __LED_H__ #define RCC (*(unsigned int *)0X50000A28) #define GPIOE_MODER (*(unsigned int *)0X50006000) #define GPIOF_MODER (*(unsigned int *)0X50007000) #define GPIOE_OTYPER (*(unsigned int *)0X50006004) #define GPIOE_OSPE…

百度千帆模型初次体验【人工智能】

百度千帆模型初次体验【人工智能】 前言版权推荐百度千帆模型初次体验【人工智能】一、百度智能云平台1.领取代金券2.创建应用3.开通付费 二、SpringBoot1.创建SpringBoot项目2.配置文件3.配置Bean4.编写Util5.测试6.结果 三、问题四、资料 最后 前言 2024-3-20 13:38:33 以下…

亚马逊等跨境电商平台自养号测评的五个核心因素

一、安全稳定的环境系统 尽管市场上存在大量现成的系统和软件包,卖个软件或设备给你,这种基本上都没有解决风控的能力,因此,小编推荐大家还是自己掌握相关技术,避免过度依赖于外部资源,目前,也…

从零到一构建短链接系统(七)

1.convention目录下创建exception目录,并创建AbstractException类, ClientException类,ServiceException类,RemoteException类 /*** 抽象项目中三类异常体系,客户端异常、服务端异常以及远程服务调用异常** see Clien…

第2章 数据处理伦理

思维导图 2.1 引言 简单来说,伦理是建立在是非观念上的行为准则。伦理准则通常侧重于公平、尊重、责任、诚信、质量、可靠性、透明度和信任等方面。 数据处理伦理指如何以符合伦理准则的方式获取、存储、管理、使用和销毁数据。 核心概念:对人的影响、…

sentry-cli - error: Failed to load .sentryclirc file from project path

Xcode 15.2 warning sentry-cli - error: Failed to load .sentryclirc file from project path (/Users/zhuhongwei/Desktop/pandabill/.sentryclirc)推荐一下刚上线的 App 熊猫小账本,里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App,用于…

第1章 Iceberg简介

1.1 概述 Iceberg是一个面向大型分析数据集的开放表格格式。它为多种计算引擎,如Spark、Trino、PrestoDB、Flink、Hive和Impala,增加了表格功能,使用一种高性能的表格格式,其工作方式就像一个SQL表一样。 在生产环境中&#xff0…

QT网络编程之实现UDP组播发送和接收

推荐一个不错的人工智能学习网站,通俗易懂,内容全面,作为入门科普和学习提升都不错,分享一下给大家:前言https://www.captainbed.cn/ai 一.UDP通信 1.QT中实现UDP通信主要用到了以下类:QUdpSocket、QHost…

SQLiteC/C++接口详细介绍之sqlite3类(十二)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十一) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(十三) ​37.sqlite3_load_extension 用于在SQLit…

个人网站|基于jsp 技术+ Mysql+Java的个人网站设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

DC-2 靶场渗透

环境:kali ip:192.168.157.128 靶机:dc-2 ip:192.168.157.129 确保kali和靶机在NAT模式下 1.nmap ip add #查看kali的IP地址 nmap -sP 192.168.157.0/24 #扫描192.168.157.0这个网段下的存活主机 得到到靶机的IP:192.168.15…

网络编程——预备知识

网络编程——预备知识 🍃套接字🌿什么是套接字🌿套接字的类型🌿套接字的位置 🍃IP🍃端口号Port🍃字节序🍃地址信息结构(结构体类型) 🍃套接字 &a…

spring整合Sentinel

安装sentinel: 执行命令; java -jar sentinel-dashboard-1.8.6.jar 注:sentinel的默认端口为8080,容易出现tomcat的冲突。 当端口冲突,可以使用该指令修改sentinel的端口 默认账号和密码都为sentinel Springcloud整合sentinel:…

【MySQL】学习和总结使用列子查询查询员工工资信息

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

java 数据结构 排序算法

目录 排序 插入排序 直接插入排序 希尔排序( 缩小增量排序 ): 直接选择排序 堆排序 交换排序 冒泡排序 快速排序递归 Hoare法 挖坑法 前后指针法 快速排序优化 快速排序非递归 归并排序 归并排序非递归 排序算法复杂度及稳定性分析 计数排序 排序…

YOLO_you only look once

前言 计算机图形学的课程即将结束,我需要提交一份关于YOLO模型的学习报告。在这段时间里,我对YOLO进行了深入的学习和研究,并记录下了我的学习过程和心得体会。本文将详细介绍YOLO模型的原理、优缺点以及应用领域,希望能够为后续…

matlab 混沌系统李雅普洛夫指数谱相图分岔图和庞加莱界面

1、内容简介 略 65-可以交流、咨询、答疑 2、内容说明 matlab 混沌系统李雅普洛夫指数谱相图分岔图和庞加莱界面 混沌系统李雅普洛夫指数谱相图分岔图和庞加莱界面 李雅普洛夫指数谱、相图、分岔图、庞加莱界面 3、仿真分析 略 4、参考论文 略