FTP 文件传输服务

FTP连接

控制连接:TCP 21,用于发送FTP命令信息

数据连接:TCP 20,用于上传、下载数据

数据连接的建立类型:  

主动模式:服务端从 20 端口主动向客户端发起连接  

被动模式:服务端在指定范围内某个端口被动等待客户端连接

FTP 用户的类型

匿名用户:  anonymous 或 ftp

本地用户:  帐号名称、密码等信息保存在 passwd、shadow 文件中

虚拟用户:  使用独立的帐号/密码数据文件

Vsftpd 软件包

主程序:/usr/sbin/vsftpd

服务名:vsftpd

用户控制列表文件  /etc/vsftpd/ftpusers  /etc/vsftpd/user_list

主配置文件  /etc/vsftpd/vsftpd.conf

vsftpd.conf配置文件详解 - 云起时。 - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/LiuChang-blog/p/10491519.html

常用的全局配置项
listen=YES:是否以独立运行的方式监听服务
listen_address=192.168.4.1:设置监听的 IP 地址
listen_port=21:设置监听 FTP 服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用 user_list 列表文件
userlist_deny=YES:是否禁用 user_list 中的用户
max_clients=0:限制并发客户端连接数
max_per_ip=0:限制同一 IP 地址的并发连接数常用的匿名 FTP 配置项
anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的 FTP 根目录
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率

匿名登录

1、准备访问目录

[root@hfj vsftpd]# chown ftp /var/ftp/pub
[root@hfj vsftpd]# ls -ld /var/ftp/pub
drwxr-xr-x. 2 ftp root 4096 3月  22 16:48 /var/ftp/pub

2、配置vsftpd.conf文件

配置匿名访问的主要选项如下:

anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的 FTP 根目录,需要手动添加。
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
local_enable=NO:是否启用本地系统用户

3、启动vsftpd服务:默认关闭

[root@hfj vsftpd]# systemctl start vsftpdsystemctl enable vsftpd  开机启动。
[root@hfj vsftpd]# ps -ax|grep vsftpd188828 ?        Ss     0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf189169 pts/3    S+     0:00 grep --color=auto vsftpd

4、访问测试:

[root@hfj vsftpd]# netstat -anpt |grep vsftpd
tcp        0      0 0.0.0.0:21           0.0.0.0:*         LISTEN      188828/vsftpd 
[root@hfj vsftpd]# ftp 10.5.63.202   或者输入主机名称
Connected to 10.5.63.202 (10.5.63.202).
220 Welcome to hfj FTP service.
Name (10.5.63.202:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,5,63,202,160,131).
150 Here comes the directory listing.
drwxr-xr-x    2 14       0            4096 Mar 22 08:48 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.

不启用user_list的用户登录

1、打开ftp访问权限

检查selinux 中关于ftp的策略

#getsebool -a | grep ftp

打开ftp访问权限

#setsebool  -P  ftpd_full_access=on

2、本地用户配置文件:vsftpd.conf

anonymous_enable=NO 禁止匿名开放模式
local_enable=YES 允许本地用户模式
guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定 PAM 文件
allow_writeable_chroot=YES
允许对禁锢的 FTP 根目录执行写入操作,而且不拒绝用
户的登录请求

常见错误汇总:

1、vsftpd要安装成功,ftp客户端软件要安装成功。
2、配置文件,不明白不清楚的地方不要乱改。Linux是文本配置型操作系统,配置文件不懂的千万不要乱改,修改时要小心,注释信息不要动。
3、改完配置文件后要重新启动vsftpd服务。
4、访问ftp服务,要使用正常可以登陆操作系统的普通用户,可以使用ssh远程或者用虚拟主机直接登录一下尝试一下是否能够访问。
5、关闭selinux、firewalld。

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

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

相关文章

flink-connector-redis支持select查询

EN 1 项目介绍 基于bahir-flink二次开发,相对bahir调整的内容有: 1.使用Lettuce替换Jedis,同步读写改为异步读写,大幅度提升了性能 2.增加了Table/SQL API,增加select/维表join查询支持 3.增加关联查询缓存(支持增量与全量) 4…

flask_restful数据解析

参数验证也叫参数解析 Flask-Restful 插件提供了类似 WTForms 来验证提交的数据是否合法 的包,叫做 reqparse 。 # Flask_RESTFUl数据解析 from flask import Flask,render_template from flask_restful import Api,Resource from flask_restful.reqparse import …

项目3-留言板

1.创建项目 记得将project type改为maven 将需要的包引入其中 更改版本号 引入MYSQL相关包记得进行配置!!! spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncodingutf8&useSSLfalseusername: rootpassword:…

深入解析Oracle数据库中的外连接 (OUTER JOIN)

在Oracle数据库中,外连接用于从两个或更多表的连接操作中检索那些在至少一个表中有匹配记录的所有记录。外连接可以确保即使在另一个表中找不到匹配项,指定表中的记录也会出现在结果集中。外连接主要有三种类型: 左外连接 (LEFT OUTER JOIN)&…

sql server用nest typeorm实现索引的方式

针对您提到的索引类型,下面是使用TypeORM库在SQL Server中实现不同类型的索引的代码示例: 普通索引: import { Entity, Column, Index } from typeorm;Entity() Index(idx_name, [name]) export class User {Column()name: string;Column()…

JavaScript快速入门笔记之一(基本概念)

JavaScript快速入门笔记之一(基本概念) 前端三大语言: HTML:专门编写网页内容的语言CSS:专门美化网页样式的语言JavaScript:专门编写网页交互的语言 名词解释: 交互:输入数据&#…

C++ MFC 只启动一个程序实例 唤醒之前的实例(完整源码)

初级代码游戏的专栏介绍与文章目录-CSDN博客 很多时候我们希望只允许启动一个程序实例,如果再次运行,就唤醒之前的实例。 目录 1 概述 2 相关技术介绍 2.1 互斥对象 2.2 查找窗口 2.3 唤醒窗口 1 概述 技术上并不难,涉及到以下几个技术…

用redis lua脚本实现时间窗分布式限流

需求背景: 限制某sql在30秒内最多只能执行3次 需求分析 微服务分布式部署,既然是分布式限流,首先自然就想到了结合redis的zset数据结构来实现。 分析对zset的操作,有几个步骤,首先,判断zset中符合rangeS…

Java服务器开发的日志:日志的作用和使用方法;日志文件的定期归档、清理和滚动策略;ELK(又称Elastic Stack)

Java服务器开发的日志 Java服务器开发,为什么要使用日志? 应该怎样使用日志? 在Java服务器开发中使用日志是非常关键的一个实践,原因如下: 本文所说的“日志”,主要是指程序运行时生成的技术日志&#xff…

#AngularJS#$sce.trustAsResourceUrl

$sce.trustAsResourceUrl 是 AngularJS(一个旧版本的 Angular)中的安全上下文(Security Context)方法,用于信任一个 URL,使其可以作为资源 URL 使用,而不会触发 AngularJS 的安全警告或阻止。 …

使用JMeter进行梯度压测

使用JMeter进行梯度压测 梯度压测配置如下: 使用线程:5,然后循环5000次,共2.5万个样本使用线程:10,然后循环5000次,共5万个样本使用线程:15,然后循环5000次,共7.5万个样本使用线程:20&#xff…

Redis中的事件

事件 概述 Redis服务器是一个事件驱动程序:服务器需要处理以下两类事件: 1.文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件…

上位机图像处理和嵌入式模块部署(qmacvisual自定义插件代码分析)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 qmacvisual里面的第三方插件主要由两部分组成,一部分是ExtensionLibrary,也就是插件的容器,这个是官方提供的&a…

【机器学习】贝叶斯上篇(详解)

深入理解贝叶斯学习:核心原理及应用全解析 在机器学习的领域内,贝叶斯学习作为一种强大的框架,使我们能够在不确定性条件下进行预测和决策。贝叶斯学习源于托马斯贝叶斯的工作,提供了一种概率论的学习方法,与传统的频…

01 React新建开发环境

https://create-react-app.dev/docs/getting-started npx create-react-app my-appJSX使用表达式嵌入 function App() {const count 100;function getSelfName() {return "SelfName"}return (<div>Hello World!<div>{This is Javascript message~!}&l…

荟萃分析R Meta-Analyses 3 Effect Sizes

总结 效应量是荟萃分析的基石。为了进行荟萃分析&#xff0c;我们至少需要估计效应大小及其标准误差。 效应大小的标准误差代表研究对效应估计的精确程度。荟萃分析以更高的精度和更高的权重给出效应量&#xff0c;因为它们可以更好地估计真实效应。 我们可以在荟萃分析中使用…

【Golang星辰图】大数据时代的明星工具:深入了解Go语言数据处理和分析库

高效处理数据&#xff0c;驾驭大数据时代&#xff1a;深入学习Go语言数据处理库 前言 在当今互联网时代&#xff0c;数据处理和分析变得越来越重要。随着数据规模的不断增大&#xff0c;如何高效地处理和分析数据成为了许多企业和开发者面临的挑战。为了满足这一需求&#xf…

面试算法-102-LRU 缓存

题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返…

JavaScript-Web学习笔记02

三、事件高级 1、注册事件&#xff08;绑定事件&#xff09; 注册事件概述 给元素添加事件&#xff0c;称为注册事件或者绑定事件。 注册时间有两种方式&#xff1a;传统方式和方法监听注册方式 传统注册方式 利用 on 开头的事件 onclick<button onclick "alert(hi~)…

软考高级架构师:MVP 架构概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…