当前位置: 首页 > article >正文

ubuntu 22.04 安装vsftpd服务

先决条件,确保你已经配置好了存储库。

  1. 安装vsftpd

    为了方便实验,我已经切换到了root用户。

    root@local:~# apt-get install vsftpd
    
  2. 修改配置
    配置文件在 /etc/vsftpd.conf

    root@local:~# grep -vE '^#|^$' /etc/vsftpd.conf
    listen=NO
    listen_ipv6=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chroot_list_enable=YES
    chroot_local_user=NO
    chroot_list_file=/etc/vsftpd.chroot_list
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO
    pasv_enable=YES
    pasv_min_port=10000
    pasv_max_port=10100
    
    • listen=NO: 禁用 vsftpd 的独立监听模式,意思就是托管给与 xinetd 或其他服务管理器,设置为YES代表独立运行,但是如果设置为YES就不会监听端,即使设置了端口号也不会监听。
    • listen_ipv6=YES: 监听IPV6 地址
    • anonymous_enable=NO: 禁止匿名用户访问
    • local_enable=YES: 允许本地用户访问
    • write_enable=YES: 允许本地用户上传文件
    • local_umask=022: 设置文件默认权限,表示用户上传的文件将有 644 权限(755 对于目录)
    • dirmessage_enable=YES: 启用目录消息功能,如果设置为 YES,用户进入目录时会显示 .message 文件的内容,文件在家目录下默认不存在需要自己创建。
    • use_localtime=YES: 使用本地时间显示文件时间。
    • xferlog_enable=YES: 如果设置为 YES,FTP 会话的日志将被记录到 /var/log/xferlog 文件中。
    • connect_from_port_20=YES: 如果设置为 YES,FTP 会话将使用端口 20 进行数据传输。
    • chroot_list_enable=YES: 启用 chroot 列表功能。如果设置为 YES,vsftpd 将使用 /etc/vsftpd.chroot_list 文件来管理哪些用户被限制在自己的主目录中,如果设置为NO /etc/vsftpd.chroot_list 那么/etc/vsftpd.chroot_list 文件中的用户将不会被限制。
    • chroot_local_user=NO: 禁用对所有本地用户的 chroot 限制,如果设置为 NO,只有在 /etc/vsftpd.chroot_list 文件中列出的用户才会被限制在自己的主目录中。
    • chroot_list_file=/etc/vsftpd.chroot_list: vsftpd 将使用此文件来管理哪些用户被限制在自己的主目录中,此文件需要自己创建。
    • secure_chroot_dir=/var/run/vsftpd/empty: 指定安全的 chroot 目录,此目录用于确保 chroot 环境的安全性。
    • pam_service_name=vsftpd: 指定 PAM 服务名称,vsftpd 将使用此名称来查找 PAM 配置文件。
    • rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem: 指定 RSA 证书文件的路径,此文件用于 SSL/TLS 加密(公钥加密)
    • rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key: 指定 RSA 私钥文件的路径,此文件用于 SSL/TLS 加密(私钥解密)
    • ssl_enable=NO: 禁用 SSL/TLS 加密,如果设置为 NO,FTP 会话将不使用 SSL/TLS 加密.
    • pasv_enable=YES: 启用被动模式连接,如果设置为 YES,FTP 会话将支持被动模式连接。
    • pasv_min_port=10000 和 pasv_max_port=10100: 设置被动模式连接的端口范围。

2.1. 由于启用了chroot_list_enable功能,所以需要创建 /etc/vsftpd.chroot_list 文件。

root@local:~# touch /etc/vsftpd.chroot_list
chroot_list_enable=YES	  #  启用禁固目录功能,设置为YES表示/etc/vsftpd.chroot_list文件用的用户将会被限制在自己的家目录,设置为NO表示所有的用户会被限制在家目录,但是排除/etc/vsftpd.chroot_list中的用户
chroot_local_user=NO	# 禁用对所有本地用户的 chroot 限制,如果设置为 NO,只有在 /etc/vsftpd.chroot_list 文件中列出的用户才会被限制在自己的主目录中,设置为YES表示只有/etc/vsftpd.chroot_list 文件中的用户不会被限制。
chroot_list_file=/etc/vsftpd.chroot_list

2.2. 设置完后重启vsftpd使用客户端连接测试。
在这里插入图片描述
如上报错是因为从 vsftpd 3.0.0 版本开始,如果用户被禁锢(chroot)在其家目录中,且家目录具有写权限,vsftpd 会拒绝运行,以防止潜在的安全风险。 意思就是说需要把家目录的 写权限给去掉,但是如果去掉的就无法在家目录下创建文件,也无法上传。处理方法有两种

a. 方法一、 修改配置文件允许家目录保持可写状态,修改完需要重启vsftpd

allow_writeable_chroot=YES

在这里插入图片描述
成功登录,并且可以正常创建文件。

b. 方法二、去掉家目录的 写权限,在家目录下创建一个子目录,确保子目录具有写权限。

如果配置了allow_writeable_chroot=YES参数需要注释掉,并重启ftp

root@local:~# chmod -w /home/ftpuser
root@local:~# ll -d /home/ftpuser
dr-xr-xr-x 2 ftpuser ftpuser 4096 Feb 14 09:56 /home/ftpuser/
root@local:~# mkdir /home/ftpuser/uploads
root@local:~# chown ftpuser:ftpuser  /home/ftpuser/uploads/
root@local:~# ll -d /home/ftpuser/uploads
drwxr-xr-x 2 ftpuser ftpuser 4096 Feb 14 09:58 /home/ftpuser/uploads/

在这里插入图片描述

可以看出正常登录,进来并且可以创建文件。

相关文章:

ubuntu 22.04 安装vsftpd服务

先决条件,确保你已经配置好了存储库。 安装vsftpd 为了方便实验,我已经切换到了root用户。 rootlocal:~# apt-get install vsftpd修改配置 配置文件在 /etc/vsftpd.conf rootlocal:~# grep -vE ^#|^$ /etc/vsftpd.conf listenNO listen_ipv6YES anonymou…...

K-均值(K-means)聚类算法

K-均值(K-means)聚类算法是一种常用的无监督学习算法,用于将数据集分成 K 个簇(clusters)。该算法的基本思想是将数据点分为 K 个簇,使得每个数据点所属的簇内部的数据点之间的相似度最大化,而不…...

STM32F407通过FSMC扩展外部SRAM和NAND FLASH

1 扩展外部SRAM 1.1 地址情况 FSMC控制器的存储区分为4个区(Bank),每个区256MB。其中,Bank1可以用于连接SRAM、NOR FLASH、PSRAM,还可以连接TFT LCD。Bank1的地址范围是0x60000000~0x6FFFFFFF。Bank1又分为4个子区,每…...

AndroidStudio查看Sqlite和SharedPreference

1.查看Sqlite 使用App Inspection,这是个好东西 打开方式:View → Tool Windows → App Inspection 界面如图: App inspection不但可以看Sqlite还可以抓包network和background task连抓包工具都省了。 非常好使 2.查看sharedPreference 使…...

Elasticsearch:15 年来致力于索引一切,找到重要内容

作者:来自 Elastic Shay Banon 及 Philipp Krenn Elasticsearch 刚刚 15 岁了!回顾过去 15 年的索引和搜索,并展望未来 15 年的相关内容。 Elasticsearch 刚刚成立 15 周年。一切始于 2010 年 2 月的一篇公告博客文章(带有标志性的…...

信呼OA办公系统sql注入漏洞分析

漏洞描述 信呼OA办公系统uploadAction存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息。 环境搭建 源码下载地址:https://github.com/rainrocka/xinhu 下载后解压到本地网站根目录下,配置好数据库,然后安装即可 默认密…...

TDengine 客户端连接工具 taos-Cli

简介工具获取运行命令行参数 基础参数高级参数 数据导出/导入 数据导出数据导入 执行 SQL 脚本使用小技巧 TAB 键自动补全设置字符列显示宽度其它 错误代码表 简介 TDengine 命令行工具(以下简称 TDengine CLI)是用户操作 TDengine 实例并与之交互最简…...

机器学习算法 - 随机森林之决策树初探(1)

随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一。 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了)。在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树。每个…...

原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表

对于大多数的开发者来言,看了很多文档可能遇见不到什么有用的,就算有用从文档上看,把代码复制到自己的本地大多数也是不能用的,非常浪费时间和学习成本, 尤其是three.js , cesium.js 这种难度较高&#xff…...

在 PyCharm 中接入deepseek的API的各种方法

在 PyCharm 中接入 DeepSeek 的 API,通常需要以下步骤: 1. 获取 DeepSeek API 密钥 首先,确保你已经在 DeepSeek 平台上注册并获取了 API 密钥(API Key)。如果没有,请访问 DeepSeek 的官方网站注册并申请 …...

Haskell语言的软件工程

Haskell语言的软件工程 引言 在软件工程的领域中,选择合适的编程语言是每个开发者都需要面对的重要决策。作为一种功能强大的函数式编程语言,Haskell凭借其独特的特性和优势逐渐在许多软件项目中占据一席之地。本文将深入探讨Haskell语言在软件工程中的…...

【2025新】基于springboot的问卷调查小程序设计与实现

目录 一、整体目录(示范): 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分(示范): 四、数据库表(示范): 数据库表有注释,可以导出数据…...

数据结构——Makefile、算法、排序(2025.2.13)

目录 一、Makefile 1.功能 2.基本语法和相关操作 (1)创建Makefile文件 (2)编译规则 (3)编译 (4)变量 ①系统变量 ②自定义变量 二、 算法 1.定义 2.算法的设计 &#xff…...

思科、华为、H3C常用命令对照表

取消/关闭 思科no华为undo华三undo 查看 思科show华为display华三display 退出 思科exit华为quit华三quit 设备命名 思科hostname华为sysname华三sysname 进入全局模式 思科enable、config terminal华为system-view华三system-view 删除文件 思科delete华为delete华…...

learn_pytorch

第三章 深度学习分为如下几个步骤 1:数据预处理,划分训练集和测试集 2:选择模型,设定损失函数和优化函数 3:用模型取拟合训练数据,并在验证计算模型上表现。 接着学习了一些数据读入 模型构建 损失函数的构…...

什么是Docker多架构容器镜像

什么是Docker多架构容器镜像 在 Docker 中,同一个 Docker 镜像可以在不同的平台上运行,例如在 x86、ARM、PowerPC 等不同的 CPU 架构上。 为了支持这种多平台的镜像构建和管理,Docker 在 17.06 版本时引入了 Manifest 的概念,在…...

【devops】 Git仓库如何fork一个私有仓库到自己的私有仓库 | git fork 私有仓库

一、场景说明 场景: 比如我们Codeup的私有仓库下载代码 放入我们的Github私有仓库 且保持2个仓库是可以实现fork的状态,即:Github会可以更新到Codeup的最新代码 二、解决方案 1、先从Codeup下载私有仓库代码 下载代码使用 git clone 命令…...

【Elasticsearch】字符过滤器Character Filters

在 Elasticsearch 中,字符过滤器(Character Filters)是文本分析器的重要组成部分,用于在分词之前对原始文本进行预处理。它们可以对字符流进行转换,例如添加、删除或更改字符。Elasticsearch 提供了三种内置的字符过滤…...

RocketMQ及和Kafka的区别

目录 1 从场景入手2 RocketMQ是什么?3 RocketMQ及和Kafka的区别3.1 在架构上做了减法3.1.1 简化协调节点3.1.2 简化分区3.1.3 底层存储3.1.3.1 Kafka底层存储3.1.3.1 RocketMQ底层存储 3.1.4 简化备份模型3.1.4.1 Kafka备份模型3.1.4.2 RocketMQ备份模型 3.1.5 Rock…...

设置ollama接口能外部访问

为了配置Ollama以允许外网访问,你可以按照以下步骤进行操作: ‌确认Ollama服务已正确安装并运行‌: 使用以下命令检查Ollama服务的状态: bash Copy Code systemctl status ollama如果服务未运行,使用以下命令启动它&…...

数组_移除元素

数组_移除元素 一、leetcode-27二、题解1.代码2.思考 一、leetcode-27 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数…...

【含文档+PPT+源码】基于微信小程序的乡村振兴民宿管理系统

项目介绍 本课程演示的是一款基于微信小程序的乡村振兴民宿管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该…...

macOs在vscode编辑器的cmd中,比如npm i 总是提示权限不够需要sudo

mac Os Apple M2 Pro在vscode 编辑器的cmd中比如npm i 总是提示权限不够,总要sudo npm i : 报错如下: npm warn peer webpack"^2.0.0 || ^3.0.0 || ^4.0.0" from the root project npm error code EACCES npm error syscall open npm error p…...

Vim 退出编辑模式

1. 按 Esc 键 按下键盘上的 Esc 键是最常见和推荐的方式。这会将光标从插入模式切换回普通模式。按下 Esc 键后,你就可以使用普通模式下的命令进行编辑。 2. 使用 Ctrl [ 在一些终端中,你也可以使用组合键 Ctrl [ 来模拟按下 Esc 键的效果。这对于一…...

【流程图】在 .NET (WPF 或 WinForms) 中实现流程图中的连线算法

在 .NET (WPF 或 WinForms) 中实现流程图中的连线算法,通常涉及 图形绘制 和 路径计算。常见的连线方式包括 直线、折线 和 贝塞尔曲线。以下是几种方法的介绍和示例代码。 1. 直线连接(最简单) 适用场景: 两个节点之间没有障碍…...

Linux查找占用的端口,并杀死进程的简单方法

在Linux系统管理中,识别并管理占用特定端口的进程是一项常见且重要的任务。以下是优化过的步骤指南,帮助您高效地完成这一操作,同时提供了一个简洁的命令参考表。 Linux下识别并终止占用端口的进程 1. 探寻端口占用者 使用 lsof命令 lsof…...

【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)

近年来,人工智能领域的飞速发展极大地改变了各个行业的面貌。当前最新的技术动态,如大型语言模型和深度学习技术的发展,展示了深度学习和机器学习技术的强大潜力,成为推动创新和提升竞争力的关键。特别是PyTorch,凭借其…...

Datawhale Ollama教程笔记3

小白的看课思路: Ollama REST API 是什么? 想象一下,你有一个智能的“盒子”(Ollama),里面装了很多聪明的“小助手”(语言模型)。如果你想让这些“小助手”帮你完成一些任务&#…...

基于JavaWeb开发的Java+Spring+vue+element实现旅游信息管理平台系统

基于JavaWeb开发的JavaSpringvueelement实现旅游信息管理平台系统 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各…...

基础网络详解4--HTTP CookieSession 思考 2

一、Cookie与Set-Cookie 1. Cookie 定义: Cookie 是客户端(通常是浏览器)存储的一小段数据,由服务器通过 Set-Cookie 响应头设置,并在后续请求中通过 Cookie 请求头发送回服务器。作用: 用于在客户端保存状态信息,例…...