linux搭建vsftpd服务使用filezilla连接服务

news2024/12/27 15:14:23

背景:支持使用filezilla上传文件到公司的服务机器上,所以搭建vsftpd支持filezilla进行上传

一、linux机器搭建vsftpd服务

1、先看看自己的机器属于什么发行版,不同的发行版命令不一样
我的是centos,其他发行版命令不一样,查看本机发行版
cat /etc/redhat-release
2、安装命令,点击y然后安装成功
sudo yum install vsftpd 这个需要确认下 yse 或者 sudo yum -y install vsftpd 这个直接跳过是否yser or no
3、启动vsftpd服务
sudo systemctl start vsftpd
以上就是简单的安装成功了。

二、本地搭建客户端,使用的是filezilla进行上传

我用的是mac版本
下载地址: 传送门
记得是下载客户端,别下载错成服务端了,汉化版本目前没找到 ,汉化版在设置中修改语言即可

三、使用filezilla教程

将英文改成中文,即汉化

1. 打开FileZilla客户端。 
2. 点击菜单栏中的"编辑"(Edit)选项。 
3. 从下拉菜单中选择"设置"(Settings)选项。 
4. 在弹出的设置窗口中,找到"界面"(Interface)选项,并点击它。 
5. 选择language 然后选择 chinese 即可

记得关闭重启生效,这里有个坑,我用英文版的,创建英文目录正常,创建中文失败

匿名用户操作

以上步骤完成,开始进行连接,首先我们什么配置都没改
直接输入外网地址,点击快速连接就能连接上了。此时是匿名登陆不需要账号密码就行

可以看到右侧显示/pub这个是,匿名登陆在服务器上有个默认路径是/var/ftp/,此时pub目录就在这个路径下。
1、匿名登陆是因为默认的配置/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
代表启用匿名登陆,当你设置成No时,就不能使用匿名登陆了。
2、目前只支持你下载并不能上传,接下来支持上传
首先修改配置

anon_upload_enable=YES # 允许匿名用户上传
# 如果发现上传失败,那是因为匿名用户上传权限和配置有关还和文件系统有关,找到pub目录增加其他用户的权限
sudo chmod o+rw pub # 赋予其他用户的读写权限

3、允许匿名用户创建目录,默认不允许创建的
anon_mkdir_write_enable=YES
修改配置文件即可
4、此时匿名用户还不能修改、删除、重命名
anon_other_write_enable=YES
修改配置即可,这个在配置中没有,需要自己添加

本地用户操作

使用服务器上的用户和密码登录服务器进行上传文件更加安全
1、创建用户并设置密码

useradd ftpuser # 能够在 /home中看到 存放的位置 /etc/passwd  查看 cat /etc/passwd 
passwd ftpuser # 给用户设置密码 存放位置 /etc/shadow cat /etc/shadow 

2、登录
然后通过用户名和密码登录进去。默认进入到/home/username 目录下
你可以进行基本的操作,因为默认配置允许本地用户上传、修改、编辑、删除等操作
3、指定用户登录时的目录位置
local_root 可以指定位置
4、这种情况用户也能看到其他目录,如果linux上其他用户可以读写,那么它就能操作这些文件了,不安全,此时需要启用chroot功能

allow_writeable_chroot=YES # 开启chroot必须添加
chroot_local_user=YES # 启用了本地FTP用户的chroot功能。这将限制本地FTP用户访问其家目录以外的目录
chroot_list_enable=YES # 表示启用了chroot_list文件的使用。chroot_list文件用于指定哪些FTP用户将被chroot限制
chroot_list_file=/etc/vsftpd/chroot_list # 指定了chroot_list文件的路径。这个文件包含了将被chroot限制的FTP用户的列表。您可以编辑这个文件并添加或删除FTP用户的名称,以控制哪些用户将被chroot限制。

如果发现报错,记得在/etc/vsftpd目录下创建chroot_list文件,另外需要注意的是不需要将你当前本地登录的用户给添加进chroot_list,因为此时的chroot_list相当于白名单,他可以允许文件中用户可以切换到其他目录。具体配置是和chroot_list_enable、chroot_local_user相关的,具体看下面解释,所以现在就有了ftpuser这个用户只能访问local_root指定的目录了。

四、vsftpd的配置

1、修改/etc/vsftpd/vsftpd.conf 配置后记得重启加载最新配置

systemctl restart vsftpd

2、用户连接的验证方式

匿名用户登录

用户账号名称:ftp或anonymous
用户账号密码:无密码
工作目录:/var/ftp
默认权限:默认支持下载不支持上传,上传权限由两部分组成(主配置文件和文件系统)

本地用户登录

用户账号名称:本地用户(/etc/passwd)存放的位置
用户账号密码:用户密码(/etc/shadow)存放的位置
工作目录:登录用户的宿主
目录权限:最大权限(drwx------)

虚拟用户登录


3、配置文件参数介绍

匿名用户相关参数配置

默认配置:
anonymous_enable=YES # 允许匿名用户登录
匿名用户可选参数
anon_upload_enable=YES # 控制匿名用户是否允许上传文件。将其设置为YES表示允许匿名用户上传文件。 
anon_mkdir_write_enable=YES # 控制匿名用户是否允许创建新的目录。将其设置为YES表示允许匿名用户创建目录。 
anon_other_write_enable=YES # 匿名用户是否可以操作权限 例如重命名、删除等权限
anon_roow=/var/ftp # 匿名用户登录时所登录的目录,如果想要设置,修改配置即可
chown_uploads=YES/NO(NO) # 设置是否改变匿名用户上传文件的属主 
chown_username=username # 设置匿名用户上传文件属主名,就是修改所属用户到底是谁,看到默认是ftp -rw------- 1 ftp ftp        6 Jul  9 19:52 hello2.txt

本地用户相关参数

local_enable=YES/NO(YES) # 允许本地用户登录
local_root=/home/username # 本地用户登录时,将被更换到定义的目录下
write_enable=YES/NO(YES) # 本地用户是否有写权限,属于全局设置
# 控制用户是否允许切换到上级目录
allow_writeable_chroot=YES # 想要开启chroot功能必须加上 
chroot_list_enable=YES/NO(NO) # 
chroot_list_file=/etc/vsftpd/chroot_list  # 设置是否启用chroot_list_file配置指定的用户文件
chroot_local_user= #用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录
搭配情况:
A=chroot_list_enable,B=chroot_local_user
# 这个文件类似于白名单 里面的用户可以其他权限
1 A=YES,B=YES 在 /etc/vsftpd/chroot_list 文件中列出的用户,可以切换到其他目录,未在文件中列出的用户,不能切换到其他目录
# 类似于黑名单
2 A=YES,B=NO 在 /etc/vsftpd/chroot_list .. 不能切换到其他目录,未在的可以切换到其他目录
3 A=NO,B=YES 所有用户不能切换到其他目录
4 A=NO,B=NO 所有用户都可以切换到其他目录

访问控制相关

在/etc/vsftpd下的ftpusers文件中作用
解释:ftpusers文件是一个用于存储被禁止登录FTP的用户列表的文件。当FTP服务器配置为使用该文件时,任何出现在ftpusers文件中的用户将被禁止登录FTP服务器。这个文件通常用于限制某些用户或组的FTP访问权限,以增加服务器的安全性。
所以你想让某个用户不能登录ftp,把它加入到这个文件中即可。
在/etc/vsftpd下的user_list文件的作用
解释:user_list文件是一个用于存储允许或禁止访问FTP服务器的用户列表的文件。该文件通常用于配置FTP服务器的访问控制,以确定哪些用户可以登录和访问FTP服务器。用户列表中的用户可以根据需要进行添加或删除,以控制其FTP访问权限。这个文件可以用于限制特定用户的FTP访问,提高服务器的安全性。
1、当userlist_deny=NO此时仅允许这个user_list文件中的用户访问ftp
2、当userlist_deny=YES此时这个文件中的用户都被拒绝访问ftp

访问速率设置

anon_max_rate=0 # 设置匿名用户最大传输速度,单位 B/s  0表示不限制速度,默认值0
local_max_rata=0 # 本地用户使用的最大传输速度。单位 B/s  0表示不限制速度,预设值0

五、常见问题(踩坑合集)
1、创建中文目录失败、创建英文目录成功
注意,前提是你已经配置了权限,这个我最后解决的办法是将英文版本改成中文

1. 打开FileZilla客户端。 
2. 点击菜单栏中的"编辑"(Edit)选项。 
3. 从下拉菜单中选择"设置"(Settings)选项。 
4. 在弹出的设置窗口中,找到"界面"(Interface)选项,并点击它。 
5. 选择language 然后选择 chinese 即可

先就这么多吧,足够应付上传了~

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

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

相关文章

架构训练营笔记:高可用设计

2-3高可用设计 高可用复杂度模型 分为计算高可用,存储高可用,高可用本质上需要冗余,这里是集群,没有单机。 计算高可用:分为任务分配与任务分解。 计算高可用对比之前的高性能,就是多了状态检测。 任务…

请求响应-实体参数的接受

实体参数的接受 简单实体对象:请求参数名与形参属性对象名相同,定义pojo接受即可,将数据封装到实体类中实体类代码如下: package com.example.POJO;public class User {private String name;private Integer age;public String g…

系统测试——postman的400错误

如果Headers中不勾选Host,调用接口就会报400 Bad Request错误。

Hystrix 断路器

文章目录 1 问题:服务雪崩2 概念3 服务降级3.1 概念:3.2 触发服务降级的情况:3.3 应用3.3.1 依赖3.3.2 解决的问题3.3.3 生产者:3.3.4 消费者:3.3.5 配置全局fallback方法3.3.6 解耦合 4 服务熔断4.1 概念:…

Shell的条件运算语句

目录 IF语句 单分支语句语法语法 多分支结构语法 CASE语句 语法 IF语句 单分支语句语法语法 #写法1 if 条件语句 then内容 fi#写法2 if 条件语句 ;then内容 fi编写一个内容警报器的例子 #!/bin/bash free_mem$(free -m | grep "Mem:" | tr -s " "…

kubernetes源码学习之kube-scheduler

kube-scheduler是kubernetes中的调度程序,负责从api server中获得待分发的pod列表,并为他们找到最合适运行的Node。 基于kubernetes 1.27 基本框架 下面是kubernetes官发给出的框架图,先对kubernetes pod调度的大致流程有一个认识 看一下有…

眼睛:来一场视觉盛宴《手拿把掐》css特效 —— 之听说过CSS【笑】

😷😊🤺🤺🤺前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客 😁 css动画 —— 把你喜欢css动画嵌入到浏览器中_css做的动画效果怎么嵌入网页_彩色之外的…

window电脑修复网络不能正常

问题描述 问题的起点是我打开了OpenAPI公司的GPT,在回答的过程中响应很慢,然后自己开始尝试切换连接的服务器(这里使用到了网络代理),最后自己做了一个操作是 代理软件的这个菜单里面的增强模式选项,结果…

Android爬坑指南————工信部又出新规!

工信部又出新规了! 一、背景二、整改2.1 个人信息保护2.1.1 基本模式(无权限、无个人信息获取模式)腾讯视频网易云音乐 2.1.2 隐私政策内容 2.2 app权限调用2.2.1 应用内权限调用2.2.1.1 获取定位信息和生物特征识别信息2.2.1.2 其他权限 2.3…

渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?

在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢? 就进入了渲染阶段。这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可以解决一系列相关的问题,比如…

SVR算法简介及与其它回归算法的关系

目录 参考链接 有人可以帮助我理解支持向量回归技术和其他简单回归模型之间的主要区别是什么 支持向量回归找到一个线性函数,表示误差范围 (epsilon) 内的数据。也就是说,大多数点都可以在该边距内找到,如下图所示 这意味着 SVR 比大多数其…

TypeScript 学习笔记(一):基本类型、交叉类型、联合类型、类型断言

文章目录 一、常见类型1. 数组2. 布尔3. 数值4. 字符串5. object6. null 和 undefined7. symbol7.1 作为属性名7.2 属性名遍历7.3 静态方法:Symbol.for()和 Symbol.keyFor()7.4 内置 symbol 值7.4.1 Symbol.hasInstance7.4.2 Symbol.isConcatSpreadable7.4.3 Symbol…

Android 报错,闪退(错误)日志保存到手机内存中,以文本文件的形式保存

1.直接贴代码 import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.util.Log;import com.nuotu.atmBookClient.App;import java.io.File; i…

python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)

简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理。在写脚本时,放到后台运行,想知道执行情况,会通过邮件、SMS(短信)、飞信、微信等方式通知管理员,用的最多的是邮件。在linu…

这份4577页的Java面试PDF,让我成功斩获阿里、字节等大厂offer

我为大家准备了一份超级全面的Java 学习面试笔记,这份电子版笔记涵盖了诸多后端技术栈的面试题和答案,相信可以帮助大家在最短的时间内复习Java后端的大多数技术点和面试题,从而拿到自己心仪的offer。共4577页。整体还是比较清爽的&#xff0…

Postman的细节回顾

之前在学校摸索着玩过postman,工作后要使用postman,发现对于很多细节,这里补充说明一下,当作使用手册。 之所以使用postman,是因为更便捷的查看接口情况,不需要每次在浏览器f12查看。 目录 1 创建请求2 测…

产品经理怎么管理项目进度?

作为在职七年的项目管理人员,在项目进度管理上确实有一点发言权。产品经理作为企业的核心骨干岗位之一,在进行项目进度管理时也会有很多问题出现,那么应该怎样去管理项目进度呢?以下是答主的一些拙见,有需要的朋友们就…

C. Particles

Problem - C - Codeforces 思路:通过题意能够知道如果移除i,那么i-1与i1会合成一个新的,同时后面的往前移动两个单位,并且我们发现可以让1 3 5 7 ... 2*n-1合成一个数,让2 4 6 8 ... 2*n合成一个数,同时我们…

java自我学习记录day02

java日常学习 1.继承2.super3.方法重写/覆盖4.多态5.Object类和equals的对比equals用于判断值是否相等hashCode方法toString方法finalize方法 6.刷题(03)题三:在排序数组中查找元素的第一个和最后一个位置 1.继承 如果希望指定去调用父类的某…

uniapp 小程序 filters 过滤日期

页面效果&#xff1a; <template><view class"order-intro-item"><text class"left-label">日期</text><text class"right-info time-text">{{startClearingTime | formatData}} 至 {{endClearingTime | format…