FTP 服务器 linux安装

文章目录

  • 前言
  • 一、了解
  • 二、安装
    • 启动
    • 匿名连接
  • 三、创建用户
    • 1. 创建系统用户
    • 2. 连接
    • 3. 连接不上? 500
    • 4. 还是连接不上? 500
    • 5. 还还还是连不上?530
  • 补充
    • 关于创建用户
      • useradd 命令
      • 如何设置用户不能登录shell
      • 不用系统指定的家目录
    • vsftpd 配置
      • chroot
      • 禁用匿名登录
      • 日志
      • 黑白名单


前言

提示:这里可以添加本文要记录的大概内容:

  • ftp 连接失败:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
  • ftp 连接失败:530 permission denied
  • ftp 连接成功,但是能访问到上级目录和其他目录

提示:以下是本篇文章正文内容,下面案例可供参考

注意: 以下全部操作都是基于 SELinux= disable、防火墙关闭

一、了解

二、安装

参考文档: https://blog.csdn.net/DoupeLe/article/details/138261457

# 查询是有安装ftp
rpm -qa|grep vsftpd
# 卸载 vsftpd
yum remove vsftpd
# yum安装ftp
yum install -y vsftpd

默认几个位置:

配置文件 :/etc/vsftpd
根目录: /var/ftp
日志: /var/log/vsftpd.log

注意: 这里的yum 卸载会有遗留,最好去各主要文件夹下确认一下。

启动

# 查看版本号信息
vsftpd -v
# 查看ftp状态
systemctl status vsftpd

匿名连接

默认情况下是允许匿名连接的,进入后的根目录就是 /var/ftp

三、创建用户

1. 创建系统用户

[root@localhost vsftpd]# useradd people -s /bin/bash
[root@localhost vsftpd]# echo 123456 | passwd --stdin people
更改用户 aaa 的密码 。
passwd:所有的身份验证令牌已经成功更新。

注意,这个people 账户 指系统(linux)的用户账户哦。和 ftp 没有任何关系

比如,我这里创建了一个用户 people people@123。之后,people就可以通过xshell 登录到这个服务器了
并且,虽然我没有在useradd 的时候指定任何关联路径,但是这时候就默认登录后就到了 home/people 中了。

在这里插入图片描述

在这里插入图片描述

这里,aaa 和 people 都是我们创建的系统用户,可以看到分配了 /home/aaa 和 /home/people 两个家目录。
并且统一完成了:

# 家目录所有者
 chown -R username:username /home/username
# 家目录权限 用户 rwx
 chmod 700 /home/username

2. 连接

此时创建好的用户 test ,可以shell 登录,也可以xshell -> xsftp ,但是 不能走 ftp协议登录

在这里插入图片描述

还 需要vsftp(/etc/vsftpd/vsftpd.conf)保证如下配置

   # ☆☆☆☆☆☆ 允许本地用户登录(默认开启)。vsftpd 的“本地用户”指的是所在系统的用户,即在 Linux 系统中通过 useradd 命令或其他用户管理工具创建的用户
   local_enable=YES
   
   # ☆☆☆☆☆☆ 用户登录ftp后,只能到自己的家目录下,不能随便切换到其它目录。
   chroot_local_user=YES
   

修改配置文件后一定要重启!

之后就能通过ftp 连接了。

3. 连接不上? 500

我们在本地测试一下ftp localhost,发现登录失败:

在这里插入图片描述

原因: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解释: 新版本的vsftp(我这里是3.0.2-28)针对用户安全性进行了升级使,用户被锁定的 chroot 目录不可写,防止安全漏洞
由此衍生出了两种解决方法:
(1)既然说家目录不能有写权限,那我就去掉好了。当然前提是本身没有写业务

dr-xr-x---
 
chmod 550 /home/test

(2) 如果你非写不可,那就只有修改ftp 服务器的规则了

在配置文件中加上:

# 允许在锁定用户家目录 (chroot) 的情况下保留用户的写权限
allow_writeable_chroot=YES

记得重启!

4. 还是连接不上? 500

[root@localhost var]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:root): ftpuser
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/pheno/camera/dist/manage/upload
Login failed.
421 Service not available, remote server has closed connection

检查发现,因为 这个 upload 的上上级目录是属于非root的另一个用户。相当于,在别人家里建家

这里提醒: 系统用户的家目录,尤其是特别深的情况时,一定要注意,其父级只能属于root,不能为其他非root用户

5. 还还还是连不上?530

[root@localhost var]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:root): test
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

检查发现: 创建用户时候,关联了错误的shell 命令

[root@localhost var]# cat /etc/shells  
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/usr/bin/nologin
[root@localhost var]# usermod -s /usr/bin/nologin  test

注意,先确认一下,系统中可接受的 shell 类型,即那些可以被用作用户登录 shell 的 shell。如果用户的 shell 不在 /etc/shells 文件中,那么用户将无法登录。

之前用户创建用的是 -s /sbin/nologin,不是本系统的支持的shell,改成/usr/bin/nologin就可以了。

补充

关于创建用户

创建系统用户 默认家目录

  • 拥有者都是当前用户,
  • 而且权限都是固定的:drwx------ (对应数值的700)

d:表示这是一个目录(directory)。
rwx:表示所有者的权限。 可读、可写、可执行
—:表示所属组的权限。 无权限
—:表示其他用户的权限。 无权限

useradd 命令

现在来详细解释一下这个命令

useradd 【选项】 用户名
-m :  为用户创建家目录,不存在,则自动创建。默认是 /home/用户名
-d :  指定用户家目录  这个家目录最好不要预先存在,最好由系统自动建立
-s :指定用户的登录 shell     -s /bin/bash(普通的默认的)   -s /usr/bin/nologin
注意: 这里能指定的shell,一定要是系统承认的,也就是在/etc/shells 列表中的。

移除用户:

userdel -r aaa
-r : 同时还删除对应的家目录。

如何设置用户不能登录shell

先确认一下,系统中可接受的 shell 类型,即那些可以被用作用户登录 shell 的 shell,如下:

[root@localhost var]# cat /etc/shells  
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/usr/bin/nologin

当用户尝试登录时,系统会检查用户的 shell 是否合法。如果用户的 shell 不在 /etc/shells 文件中,那么用户将无法登录。

几种shell 类型的解读:

/bin/sh
/bin/bash : 最常用的,默认
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/usr/bin/nologin : 禁止用户登录

不用系统指定的家目录

 useradd -m -d /path/to/custom/home/directory username
 如果指定的目录不存在,-m 选项会自动创建该目录。

vsftpd 配置

chroot

在 vsftpd(Very Secure FTP Daemon)中,chroot 是一个重要的安全特性,它用于限制 FTP 用户的活动范围
chroot 的全称是 “change root”

chroot_local_user=YES
# 当设置为 YES 时,所有本地用户都会被 chroot 到他们的家目录。这意味着用户登录后只能访问他们的家目录及其子目录

chroot_list_enable=YES
# 如果设置为 YES,那么 vsftpd 会检查 chroot_list_file 指定的文件列表,只有在这个文件列表中的用户才会被 chroot 到指定的目录
chroot_list_file=/etc/vsftpd/chroot_list
# 配合上面的chroot_list_enable ,指定一个包含用户名的文件,其中每个用户行对应一个将被 chroot 的用户
## 注意,如果上面两个都被注释了,表示,任意用户都会被chroot到其根目录。

allow_writeable_chroot=YES
# 允许根目录可写

禁用匿名登录

anonymous_enable=NO

为了安全,最好禁用

日志

黑白名单

因为,默认ftp连接的用户都是系统用户,更多时候并不允许所有的系统用户都可以登录ftp服务器。
这里可以对这些本地用户加入白名单,来限制哪些本地用户可以连接ftp

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list   # 在这里设置白名单

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深刻理解Redis集群(上):RDB快照和AOF日志

RDB快照 save同步阻塞 客户端 服务端 .conf配置文件 # The filename where to dump the DB dbfilename dump.rdb# rdb-del-sync-files是Redis配置文件中的一个选项,它的作用是在主节点上执行BGSAVE或AOF持久化操作时,删除同步锁文件,以释放磁…

git工具指令

下面是常用的Git命令清单,几个专用名称的译名如下: Workspace :工作区 Index /Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库新建代码库 在当前目录新建一个Git代…

java初识

目录 1.命名规范 2.数据类型 3.数据类型转换(就是见识一下) 4.java里面的输入输出 4.1判断是不是偶数 4.2判断是不是闰年 4.3其他的输入输出 4.4顺序的问题 5.分支语句补充 5.IDEA里面的调试 6.continue的一个案例 1.命名规范 这个命名规范就…

【Java SE】初遇Java,数据类型,运算符

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 1. Java 概述 1.1 Java 是什么 Java 是一种高级计算机语言,是一种可以编写跨平台应用软件,完全面向对象的程序设计语言。Java 语言简单易学…

Java基于easyExcel的自定义表格格式

这里用的到easyExcel版本为3.3.4 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.4</version></dependency> 效果 代码部分 package com.tianyu.test;import com.alibaba.exc…

57 长短期记忆网络(LSTM)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录长短期记忆网络&#xff08;LSTM&#xff09;门控记忆元输入门、忘记门和输出门候选记忆元 (相当于RNN中计算 H t H_t Ht​)记忆元隐状态 从零开始实现初始化模型参数定义模型训练和预测 简洁实现小结练习 长短期记忆网络&#xff08;LSTM&a…

【d53】【Java】【力扣】24.两两交换链表中的节点

思路 定义一个指针cur, 先指向头节点&#xff0c; 1.判断后一个节点是否为空&#xff0c;不为空则交换值&#xff0c; 2.指针向后走两次 代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*…

[数据集][目标检测]辣椒缺陷检测数据集VOC+YOLO格式695张5类别

重要说明&#xff1a;数据集图片里面都是一个辣椒&#xff0c;请仔细查看图片预览&#xff0c;确认符合要求下载 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文…

Nacos 是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台,旨在帮助开发者更轻松地构建、部署和管理微服务应用。

Nacos 是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台&#xff0c;旨在帮助开发者更轻松地构建、部署和管理微服务应用。Nacos 提供了一系列的功能来支持服务注册与发现、配置管理、服务元数据管理、流量管理、服务健康检查等&#xff0c;是构建云原生应用和服务网…

SpringCloud 2023各依赖版本选择、核心功能与组件、创建项目(注意事项、依赖)

目录 1. 各依赖版本选择2. 核心功能与组件3. 创建项目3.1 注意事项3.2 依赖 1. 各依赖版本选择 SpringCloud: 2023.0.1SpringBoot: 3.2.4。参考Spring Cloud Train Reference Documentation选择版本 SpringCloud Alibaba: 2023.0.1.0*: 参考Spring Cloud Alibaba选择版本。同时…

【软考】高速缓存的组成

目录 1. 说明2. 组成 1. 说明 1.高速缓存用来存放当前最活跃的程序和数据。2.高速缓存位于CPU 与主存之间。3.容量般在几千字节到几兆字节之间。4.速度一般比主存快 5~10 倍&#xff0c;由快速半导体存储器构成。5.其内容是主存局部域的副本&#xff0c;对程序员来说是透明的。…

Java:选择排序

目录 直接选择排序 堆排序 基本思想&#xff1a; 每一次从待排序的数据元素中选出最小(或最大)的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完。 直接选择排序 思路1&#xff1a; 在元素集合array[i]--array[n-1]中选择关键码最大(小…

​fl studio21.2.3.4004中文版永久2024最新下载安装图文详细使用教程​

随着数字音乐制作的快速发展&#xff0c;越来越多的音乐制作软件涌现出来&#xff0c;而FL Studio无疑是其中的佼佼者。作为一款功能强大、易于上手的音乐制作软件&#xff0c;FL Studio V21中文版在继承了前代版本优秀基因的基础上&#xff0c;进一步提升了用户体验&#xff0…

什么是原生IP?

代理IP的各个类型称呼有很多&#xff0c;且它们在网络使用和隐私保护方面扮演着不同的角色。今天将探讨什么是原生IP以及原生IP和住宅IP之间的区别&#xff0c;帮助大家更好地理解这两者的概念和实际应用&#xff0c;并选择适合自己的IP类型。 一、什么是原生IP&#xff1f; 原…

FPGA-Vivado-IP核-逻辑分析仪(ILA)

ILA IP核 背景介绍 在用FPGA做工程项目时&#xff0c;当Verilog代码写好&#xff0c;我们需要对代码里面的一些关键信号进行上板验证查看。首先&#xff0c;我们可以把需要查看的这些关键信号引出来&#xff0c;接好线通过示波器进行实时监测&#xff0c;但这会用到大量的线材…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-1

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

.NET 工具库高效生成 PDF 文档

QuestPDF 是一个开源 .NET 库&#xff0c;用于生成 PDF 文档。使用了C# Fluent API方式可简化开发、减少错误并提高工作效率。利用它可以轻松生成 PDF 报告、发票、导出文件等。 QuestPDF 是一个革命性的开源 .NET 库&#xff0c;它彻底改变了我们生成 PDF 文档的方式。 Ques…

[Admin] Things Need to Know

List View Bulk Actions Highlight: To take bulk actions on all of the available records in a list, you click the bulk action button without selecting any records.

优雅使用 MapStruct 进行类复制

前言 在项目中&#xff0c;常常会遇到从数据库读取数据后不能直接返回给前端展示的情况&#xff0c;因为还需要对字段进行加工&#xff0c;比如去除时间戳记录、隐藏敏感数据等。传统的处理方式是创建一个新类&#xff0c;然后编写大量的 get/set 方法进行赋值&#xff0c;若字…

鸿蒙开发(NEXT/API 12)【硬件(传感器开发)】传感器服务

使用场景 Sensor Service Kit&#xff08;传感器服务&#xff09;使应用程序能够从传感器获取原始数据&#xff0c;并提供振感控制能力。 Sensor&#xff08;传感器&#xff09;模块是应用访问底层硬件传感器的一种设备抽象概念。开发者可根据传感器提供的相关接口订阅传感器…