Linux网络服务:网络设置与基础服务2

2023-11-18

目录

一、理论

1.FTP服务

2.配置文件路径

3.FTP配置文件解析

4.配置本地用户访问ftp

二、实验

1.匿名用户访问FTP服务器

2.普通用户访问FTP服务器

3.FTP服务器黑白名单

 4.问题


一、理论

1.FTP服务

(1)FTP协议

FTP(File Transfer Protocol)文件传输协议,是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。

使用TCP的20、21端口:

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

② 数据连接:TCP 20 ,用于建立数据连接,传输文件数据包括上传和下载数据。

(2)FTP连接及传输模式

FTP数据来连接分为主动模式和被动模式:

     ① 主动模式(port):服务器主动发起数据连接。

 首先由客户端向服务端的21端口建立FTP控制连接。当需要传输数据时,客户端以PORT命令告知服务器“我打开了某端口,请你过来连接我”,预算服务器从20端口向客户端的该端口发送请求并建立数据连接。

      ② 被动模式(PASV):服务器被动等待连接。

      如果客户端所在的网络的防火墙禁止主动模式连接,通常会使用被动模式。

      首先由客户端向服务器的21端口建立FTP控制连接。当需要传输数据时,服务器以PASV命令告知客户端“我打开了某端口,请你来连接我”,于是客户端向服务器的该端口(非20)发送请求并建立数据连接。

在传输文件时,根据是否进行字符转换,分为文本模式和二进制模式:

      ① 文本模式:又称为ASCII模式,一般只用于纯文本文件的传输。

ASCII(American Standard Code for information interchange)美国信息交换标准码模式,这种模式在传输文件时使用ASCII标准字符序列,一般只用于纯文本文件传输。

      ②  二进制模式:又称为Binary模式:适合传输程序、图片等非纯文本字符的文件。

这种模式不会转换文件中的字符序列,更合适传输程序,图片等非纯文本字符的文件。使用二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式。

(3)FTP用户的类型

     ① 匿名用户:用户名为ftp或anonymous,提供任意密码(包括空密码),都可以通过服务器的验证

     ② 本地用户:除了匿名用户以外的其他系统用户。

(4)FTP服务器软件的种类

WIndows系统:FileZilla Sener、Serv-U

Linux系统:vsftpd (Very Secure FTP Daemon),该软件针对安全特性方面做了大量的设计,支持15000ge 用户并发连接。

 

(5)FTP客户端工具的种类

Windows系统和Linux系统默认都自带有ftp命令程序。

2.配置文件路径

      ① 服务配置文件:/etc/vsftpd/vsftpd.conf

      ②  黑名单配置文件:/etc/vsftpd/user_list

      ③ 匿名用户FTP服务的默认根目录:/var/ftp

      ④ 本地用户FTP服务的默认根目录:/home/账户同名文件

      ⑤ 错误日志路径:/var/log/messages

3.FTP配置文件解析

服务配置文件:/etc/vsftpd/vsftpd.conf

表1 FTP配置文件解析

命令 功能
anonymous_enable=YES

允许匿名用户访问(账户名为ftp,不需要密码),默认允许建议关闭

local_enable=YES

允许本地用户访问(本地可登录账户)

write_enable=YES

开放服务器的写权限,上传文件到服务器必须开启,默认开启

local_umask=022

本地用户文件权限反掩码,文件权限777-umask,文件权限666-umask

dirmessage_enable=YES

开启日志消息,默认开启

connect_from_port_20=YES

确保端口数据传输来自20端口,默认开启

xferlog_std_format=YES

日志文件设置为标准ftpd xferlog格式,默认开启,日志位置/var/log/xferlog

chroot_local_user=YES

将用户访问权限限制在用户自己的根目录下,默认关闭。

allow_writeable_chroot=YES

允许被限制用户对自己根目录进行写操作

anon_root=/var

设置本地用户的默认根目录为/var,注意需要此目录给其他用户读写权限才可上传下载

userlist_enable=YES

开启user_list用户列表,文件位置/etc/vsftpd/user_list,默认关闭

userlist_deny=YES

若user_list是开启状态userlist_deny=YES是黑名单文件中的用户不能登录,默认关闭

若user_list是开启状态,userlist_deny=NO则只允许user_list中的用户登录

      4.配置本地用户访问FTP

表2 配置本地用户访问FTP

命令 功能
anonymous_enable=YES

允许匿名用户访问

local_enable=YES

允许本地用户访问

write_enable=YES

开放服务器的写权限

local_umask=022

设置本地用户umask为022

chroot_local_user=YES

限制本地用户只能访问默认根目录

allow_writeable_chroot=YES

允许被限制用户对自己根目录进行写操作

anon_root=/mnt 设置本地用户默认根目录为/mnt

userlist_enable=YES

开启user_list用户列表

userlist_deny=YES 开启黑名单,禁用user_list文件中的用户登录
userlist_deny=YES 开启白名单,允许user_list文件中的用户登录

二、实验

1.匿名用户访问FTP服务器

ftp传输使用匿名用户上传下载文件:

(1)搭建环境 

centos 7系统虚拟机一台,配置关闭防火墙和selinux

(2)检测环境并安装ftp服务

(3)备份配置文件

(4)配置文件

进入vsftpd文件

取消注释 ,允许匿名用户上传下载

重启vsftpd服务

 (5)目录配置读写权限

创建测试文件test.txt

写入内容:”hello 123”

(6)匿名用户登录ftp

Windows cmd命令:ftp 服务器IP地址

匿名账户:ftp  密码:无

 (7)匿名用户进行下载、上传文件

 get 命令下载文件

 下载到本地的文件路径在C:\Users\下

 

删除文件

客户端上传新文件到服务器

 显示成功

 用户put命令上传备份文件到服务器

 显示成功

2.普通用户访问FTP服务器

ftp传输使用普通用户在家目录上传下载文件:

(1)禁用匿名用户访问

进入配置文件

设置匿名用户禁止访问

(2)验证ftp匿名登录

匿名登录显示失败

(3)限制访问根目录,拥有写权限

进入配置文件

限制本地用户只能访问默认根目录

允许本地用户对默认根目录有写权限

(4)普通用户进行下载、上传文件

普通用户jia登录

 切换目录,显示不能切换

根目录创建文件

服务器下载到用户2个文件:test3和test5

 

删除根目录文件

用户将备份文件上传到服务器

 显示已恢复

3.FTP服务器黑白名单

ftp传输开启黑白名单

(1)新增用户mao

(2)启用黑名单

 

 (3)用户列表新增mao

 (5)用户登录被拒绝

(6)启用白名单

 

重启服务

(7)被禁用户解除限制可以登录

 ​​​

 4.问题

(1)ftp相关命令命令失败

      ①  查看本机防火墙以及ftp防火墙和selinux是否关闭

 关闭防火墙和安全机制

         

      ②  检查配置文件内容是有错误:

            重启报错

            拼写错误:正确为“enable”

      ③  查看服务状态是否正常,不正常查看/var/log/messages日志排错

      ④  匿名用户的默认根目录不能有读权限否则连接不上ftp服务器

       ⑤  可以get但是不能put查看根目录的权限和属主情况

             取消注释 ,允许匿名用户上传下载

              目录权限

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux网络服务:网络设置与基础服务2 的相关文章

  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u
  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • 为什么无论 -rdynamic 如何,backtrace 都不包含 Objective-C 符号?

    Update 我正在 Linux 上使用 GNU 运行时 问题是not发生在带有 Apple 运行时的 MacOS 上 更新2 我在 MacOS 上编译了 GNU 运行时并用它构建了示例 该错误确实not发生在带有 GNU 运行时的 Mac
  • Linux >2.6.33:可以使用 sendfile() 来实现更快的“猫”吗?

    必须将大量大文件连接成一个更大的单个文件 我们目前使用 cat file1 file2 output file but are wondering whether it could be done faster than with that
  • 如何使用 nohup 获取正在运行的程序列表

    我正在通过 SSH 连接访问运行 CentOS linux 发行版 的服务器 由于我无法始终保持登录状态 因此我使用 nohup command 来运行我的程序 我找不到如何获取我开始使用 nohup 的所有程序的列表 工作 只有在我注销之
  • 如何将命令输出作为多个参数传递给另一个命令

    我想将命令的每个输出作为多个参数传递给第二个命令 例如 grep pattern input returns file1 file2 file3 我想复制这些输出 例如 cp file1 file1 bac cp file2 file2 b
  • GCC 详细模式输出解释

    我是 Linux 新手 谁能向我解释一下我的 hello world 程序的以下详细模式输出 另外 这些文件是做什么用的crt1 o crti o crtend o crtbegin o and crtn o and lc and lgcc
  • 在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法

    我有一个 dotnet SDK sln and a build proj with
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • 如何在C程序中直接改变显存映射来绘制像素(无需库函数)

    是否可以通过使用 C 程序更改 RAM 中屏幕 视频即监视器 内存映射中的值来显示黑点 我不想使用任何库函数 因为我的主要目标是学习如何开发简单的操作系统 我尝试访问起始屏幕内存映射 即 0xA0000 在 C 中 我尝试运行该程序 但由于
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • %config(noreplace) 文件上出现意外的 RPM 冲突

    我正在创建我自己的RPM using rpmbuild My RPM 包含配置文件哪个应该永远不会被覆盖 即使 RPM 包含这些配置文件的新版本 为了存档这个 我用以下标签标记了它们 config noreplace opt mypacka
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • 为什么“script”命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换删除它们?

    在linux上 使用bash shell 当我使用script命令时 生成的文件称为typescript 当我用 vim 打开该文件时 每一行都包含 M字符 并且有几行 由于我的彩色命令提示符 包含一个字符 我想用任何东西替换这些字符 从而
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • VSCODE 在 Linux 上不适用于我

    刚刚了解 VSCODE 很高兴尝试一下 我下载 解压并运行可执行文件 我得到 Code 2183 0429 201254 ERROR browser main loop cc 170 Running without the SUID san
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径

随机推荐

  • httpclient错误

    Caused by org apache http ProtocolException Target host is not specified at org apache http impl conn DefaultRoutePlanne
  • 用python实现计算器

    上次我用我学习的python做一个简易的计算器 我对计算器进行了 更改优化 变成了一个真正的计算器 实现流程 1 计算机布局 2 计算机执行 首先导入模块 Tkinter 作为 Python GUI 开发工具之一 它具有 GUI 软件包的必
  • 技术大佬和普通程序员改bug的区别!

    阅读本文大概需要2min 文 强哥 未经授权禁止转载 在我这么多年的工作生涯里 难免遇到那些工作糊弄的开发同事 随意编程的实习生 不够细致的测试 缺乏专业度的产品 产品的体验 取决于多个环节的把控 但很多情况下 由于bug严重影响体验 或者
  • 【原创】遇到 ORACLE 错误 1017

    1 错误描述 expdp sys leixiao orcl1 schemas sys directory DATA PUMP DIR dumpfile expdp test1 dmp logfile expdp test1 log 以sys
  • 做影视剪辑短视频,新手小白一个月赚5000多,用点心你也可以

    大周有一个学员把短视频当自己兴趣爱好 空余时间做二次剪辑 谁想到一个月多赚了5000多 他在一家私企上班 工作还算稳定 每天朝九晚五的工作 他不想就这样日复一日平淡的过下去 找到了大周 开始了自己短视频之旅 他这个人比较腼腆 本人出镜拍视频
  • 解决Android通过chrome://inspect/调试WebView出现 HTTP/1.1 404 Not Found 的问题

    问题描述 无论是调试Web页面还是调试Hybrid混合应用 只要是调试Android的webview 都需要使用Chrome inspect进行调试 但是国内开发者会出现404 Not Found错误 原因解析 国内网络无法访问 https
  • Java中九大内置对象

    1 Request对象 该对象封装了用户提交的信息 通过调用该对象相应的方法可以获取封装的信息 即使用该对象可以获取用户提交的信息 当Request对象获取客户提交的汉字字符时 会出现乱码问题 必须进行特殊处理 首先 将获取的字符串用ISO
  • 全国计算机等级考试题库二级C操作题100套(第91套)

    第91套 函数fun的功能是 计算请在程序的下划线处填入正确的内容并把下划线删除 使程序得出正确的结果 注意 源程序存放在考生文件夹下的BLANK1 C中 不得增行或删行 也不得更改程序的结构 给定源程序 include
  • Spring Cloud 2.2.2 源码之三十九nacos配置动态刷新原理一

    Spring Cloud 2 2 2 源码之三十九nacos配置动态刷新原理一 RefreshScope注解类实例化基本流程 nacos如何通过RefreshScope注解进行属性刷新 RefreshEventListener的handle
  • Selenium安装及环境配置

    目录 一 Selenium 简介 1 组件 2 特点 二 安装Selenium 三 下载对应版本的Chromedriver 1 查看Chrome的版本号 2 下载驱动 chromedriver和配置 3 解压到本地 4 复制文件放入pyth
  • 一次吃透Qt中信号与槽(包含信号与槽的使用,自定义以及重构示例,建议收藏)

    1 Qt中信号和槽 信号与槽 信号与槽 Signal Slot 是 Qt 编程的基础 也是 Qt 的一大创新 因为有了信号与槽的编程机制 在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单 它可以让应用程序编程人员把这些互不了解的对
  • 2023领导力测评启示录

    导读 在现今这个由数据驱动的世界里 人力资源专业人士也越来越注重在进行人才选拔和发展时 运用客观数据来辅助决策 然而 面对市场上种类繁多的测评选择 首要挑战就是要了解不同类型的领导力测评 通常 测评主要分为两类 这两类测评的区别在于收集的数
  • Go语言实现区块链与加密货币-Part1(基本原型、工作量证明、持久化)

    区块链 Blockchain 是21世纪最具革命性的技术之一 它仍然处于不断成长的阶段 而且还有很多潜力尚未显现 作为比特币的底层技术 它本质上只是一个分布式数据库 不过使它独一无二的是 区块链是一个公开的而不是私人的数据库 每个使用它的人
  • 使用Arduino开发ESP32(22):蓝牙作为客户端使用

    文章目录 目的 基础准备 搜索蓝牙设备 搜索设备 信息查询 连接与交互 总结 目的 ESP32的蓝牙除了作为服务器 从设备 使用还可以作为客户端 主机 使用 这篇文章将对相关内容做个简单说明 基础准备 这篇文章中测试需要先准备一个蓝牙服务器
  • 字符串翻转

    给定两个字符串 s和goal 如果在若干次旋转操作之后 s能变成goal 那么返回true s的旋转操作就是将s最左边的字符移动到最右边 例如 若s abcde 在旋转一次之后结果就是 bcdea 示例 1 输入 s abcde goal
  • Go Flutter Desktop (一) 初探

    Flutter 在去年的时候就有一个第三方的桌面引擎 是用 golang 开发的 Github 地址是 https github com go flutter desktop go flutter 目前在 mac linux windows
  • $confirm的自定义使用

    confirm的自定义使用 在项目开发过程中 经常会遇到需要修改ui库中默认样式的情况 就比如说使用element ui的 confirm弹出框时 它的默认样式如下 但我们需要的是 这样一个布局样式 这时我们就需要对默认样式进行一个自定义修
  • 华为OD机试 - 约瑟夫问题(Java)

    题目描述 输入一个由随机数组成的数列 数列中每个数均是大于 0 的整数 长度已知 和初始计数值 m 从数列首位置开始计数 计数到 m 后 将数列该位置数值替换计数值 m 并将数列该位置数值出列 然后从下一位置从新开始计数 直到数列所有数值出
  • [Agent]开发---csvAgent开发

    资料 https python langchain com docs integrations toolkits csv csvagent需要csv文件和模型 该方法在后台使用pandas方法去处理该文件 然后调用LLM去回答问题 我们使用
  • Linux网络服务:网络设置与基础服务2

    目录 一 理论 1 FTP服务 2 配置文件路径 3 FTP配置文件解析 4 配置本地用户访问ftp 二 实验 1 匿名用户访问FTP服务器 2 普通用户访问FTP服务器 3 FTP服务器黑白名单 4 问题 一 理论 1 FTP服务 1 F