麒麟V10桌面搭建FTP服务

news2024/9/23 21:31:59

1.1介绍

FTP:File transfer protocol (文件传输协议)是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

1.2 FTP的作用

用于文件的上传和下载;

1.3 FTP属于协议及端口号

(1)Tcp协议
(2)端口号:

21:控制层面,用于账户密码验证,权限的验证;

20:数据层面,用于文件的上传和下载;

1.4  FTP账户分类

(1)匿名用户

客户端访问FTP资源时,可以在没有服务器的账户及密码的下,使用匿名(anonymous)身份获取公共资源,但权限较小。

(2)实体用户

实体用户(real user)是指FTP服务器的本地账户,使用/etc/passwd中的用户名为认证方式。

(3)虚拟用户

区别于实施账户,FTP支持建立专有的用户,将账号及密码保存在数据库中,采用非系统账户访问服务器资源,相对于FTP的实体用户而言,虚拟用户只能访问FTP共享资源,增强了系统安全性,并且,客户端使用虚拟用户登录,需要提交账号及密码,管理员可以根据这些账号进行策略设置,增加了对用户和下载的可管理性,考虑到FTP服务器的安全性以及管理因素,选择虚拟用户登录,是一个非常可靠的方案.

1.5配置文件

(1)主配置文件

vim /etc/vsftpd.conf

(2)从配置文件

vim /srv/ftp/

(3)主配置文件详解

anonymous_enable=YES 是否启用匿名用户

local_enable=YES

write_enable=YES 允许写入(无论是匿名用户还是本地用户要实现上传就需要快开启它)

local_umask=022 默认本地用户上传文件权限755

dirmessage_enable=YES 显示每个目录下的文件信息

xferlog_enable=YES 日志启用

connect_from_port_20=YES 主动请求的数据端口

chown_uploads=YES 所有匿名用户上传的文件所属用户将会被改成chown_username

chown_username=whoever 匿名上传的所属用户名是whoever

xferlog_file=/var/log/xferlog 启用的日志文件

xferlog_std_format=YES

idle_session_timeout=600 空闲连接超时

data_connection_timeout=120 数据连接超时

nopriv_user=ftpsecure 当服务器运行于最底层时使用的用户名

chroot_list_enable=YES chroot_local_user=YES 所有文件列出用户, 可以切换到其他目录

chroot_list_file=/etc/vsftpd/chroot_list 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录

listen=NO 服务将自己监听处理listen_ipv6=YES

pam_service_name=vsftpd 设置PAM认证模块使用名称预设为vsftpd

userlist_enable=YES

tcp_wrappers=YES 服务端和客户端访问控制策略(服务器级别的一种防火墙)

二、准备工作

2.1查看系统版本号

2.2导入ISO映像文件

1)在光驱中插入Kylin-Desktop-V10_U1-HWE+GA-Release-Build02-20210824-GFB-x86_64.iso的系统光盘(若是虚拟机则连接相应的ISO文件)。

2.3安装vsftpd

2.4 重启vsftpd服务

  1. 开启vsftpd服务,并设置开机自启

2.5配置网络

(1)查看虚拟网卡名称 ens33

(2)网络连接

(3)客户端计算机->网络‘属性’->更改适配器配置->WLAN(注:如果网线连接选择以太网)

(4)按‘windows+R’键->输入“cmd”->输入ipconfig,保证虚拟机和主机电脑的IPV4地址同一网段内与子网掩码、网关一致

(5)重启网络服务

或者执行 ifconfig ens33 up

(6)测试网络

三、匿名用户登录

3.1要求:

  1. vsftpd服务器只允许匿名登录
  2. 匿名用户在根目录下只能下载
  3. 匿名用户在/svr/ftp子目录下可以新建、下载、上传、重命名文件(文件夹)

3.2过程:

(1)修改配置文件/etc/vsftpd.conf,默认访问/srv/ftp/ 

vsftpd的配置文件在/etc/vsftpd目录下,修改 vsftp.conf 文件:(建议复制一个备份文件在同一目录下,以防直接修改错误,而无法恢复。)

查看以下授权是否开启并修改:

anonymous_enable=YES #启用匿名访问

no_anon_password=YES #不需要匿名密码登录

local_enable=NO #启用本地用户访问(NO)

anon_umask=022 #设置匿名用户上传的文件权限

anon_upload_enable=YES #启用匿名用户上传

anon_world_readable_only=NO #匿名用户只读

anon_mkdir_write_enable=YES #启用匿名用户创建文件夹权限

anon_other_write_enable=YES #启用匿名用户其它操作的权限

uft8_filesystem=YES

(2)保存退出,重启FTP服务器

(3)在 /srv/ftp/ 目录下创建文件test

(4)在Windows的浏览器里匿名连接FTP服务器:

  1. 在Windows的文件资源系统操作:(匿名用户登录,用户名为ftp,密码为空)

(6)测试

1)在/srv/ftp/下新建 download文件和upload文件,并chmod授权777

2)在/home/下为用户授权

  1. 匿名用户在根目录下只能下载

1)执行Windows+R,输入cmd,登录ftp 192.168.8.124

  1. 匿名用户在/srv/ftp子目录可以上传、下载、新建、重命名和删除文件测试

1)将Windows桌面上的uksc.db文件拖拽上传到upload文件中

进入upload文件中查看,也可在火狐浏览器中查看

3)在download文件中创建123.txt、test1.txt等文件

4)将从download文件中的red.txt下载(拖拽)到Windows桌面

5)在Windows文件资源管理器dowanload和upload目录中新建文件夹和重命名

6)删除123.txt文件和test文件夹

7)匿名用户在其它目录下只能下载,无法将123.txt上传和删除test.txt,查看常见问题及解决办法

3.3常见问题及解决办法:

(1)在Windows文件资源管理中,登录ftp 192.168.8.124  FTP550报错(权限授权问题)

  1. 解决办法:

1)在虚拟机中检查用户和指定的文件目录是否授权

2)打开Windows文件资源管理,登录ftp 192.168.8.124测试

四、本地用户

4.1要求:

  1. 允许账号登录FTP服务器,但不能登录本地系统
  2. 对账号根目录进行限制,不能进入根目录以外的任何目录

4.2过程:

(1)创建用户,并禁止本地登录

1)useradd -d “/home/admin” -m -s “/usr/sbin/nologin” admin

passwd admin #设置密码

su admin #测试是否能登录本地系统

2)在/home目录下,执行chmod 755 admin增加权限

3)检查/etc/shells下是否添加/usr/sbin/nologin,如果没有,执行vim /etc/shells进行添加。

(2)创建根目录,并赋予其他用户相应权限

mkdir -p /srv/ftp/public #创建上传文件夹

chmod o+w /srv/ftp/public #赋予其它用户写的权限

在/srv/ftp/public中创建123.txt文件,并填写些东西。

  1. 修改安全上下文,使根目录能够写入(上传)功能
(4)修改配置文件,执行 vim /etc/vsftpd.conf

anonymous_enable=NO #禁止匿名用户登录

local_enable=YES #允许本地用户登录

local_root=/srv/ftp/public

#设置本地用户的根目录为/srv/ftp/public

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port20=YES

xferlog_std_format=YES

chroot_local_user=YES

chroot_list_enable=NO

allow_writeable_chroot=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

5)重启vsftpd服务,使配置生效

systemctl restart vsftpd

(6)测试

1)执行Windows+r,输入cmd,登录ftp 192.168.8.125虚拟机地址,对账号根目录进行限制,不能进入根目录以外的任何目录,使用admin用户 下载、上传、删除测试。

2)在Windows资源管理器访问地址ftp://192.168.8.125

3)将桌面的ukui-search*.deb包上传(拖拽)到/srv/ftp/public目录文件中

4.3常见问题及解决办法:

(1)执行“Windows+r”-> cmd 登录ftp 192.168.8.125发现500报错

  1. 解决办法:

1)我们在/etc/vsftpd.conf配置文件中开放了本地用户登录,需要创建一个/etc/vsftpd.user_list文件

2)再次登录测试

2)执行“Windows+r”-> cmd 登录ftp 192.168.8.125使用admin用户发现530报错

  1. 解决办法:

1)检查/etc/passwd和/etc/shells

2)发现/etc/shells/没有添加/usr/sbin/nologin

五、虚拟用户

使用虚拟用户比使用用本地用户和匿名用户的安全性更高,即使被破解了用户名和密码也不会影响本地系统,如果使用本地和匿名用户,也就相当于破解了本地的用户名和密码。

5.1要求:

  1. vuser1只能进行下载
  2. vuser2能进行下载和上传
  3. 对下载/上传流量进行控制

5.2过程:

(1)操作虚拟用户列表

1)建立虚拟用户的用户名、密码列表的文本文件
vim /etc/vusers.list

用db_load转换工具,将文本文件(上一步所建立的文件)转化为数据库文件

Index of /ubuntu/pool/main/d/db5.3

3)执行db_load  -T  -t  hash  -f  vusers.list  vusers.db

4)修改虚拟用户列表文件及数据库文件访问权限。
chmod 600 /etc/vsftpd/vusers.*

2)创建虚拟用户对应的本地用户
  1. 禁止他们本地登录
  2. 设置用户主目录的访问权限

(3)建立支持虚拟用户的PAM认证文件
vim /etc/pam.d/vusers.vu

注意:/etc/pam.d/vusers.vu中,空格用Tab键。

(3)修改/etc/vsftpd.conf主配置文件程度

vim /etc/vsftpd.conf

anonymous_enable=NO

local_enable=YES #使用虚拟用户一定要启用本地用户

chroot_local_user=YES #将所有本地用户限制在家目录中(需添加)

guest_enable=YES  #启用用户映射功能,允许虚拟用户登录(需添加)

pam_service_name=vusers.vu  #指定对虚拟用户进行PAM认证的文件名vuser.vu

user_config_dir=/etc/vconfig #指定虚拟用户的配置文件的位置(需添加)

allow_writeable_chroot=YES

(4)为虚拟用户vuser1、vuser2建立各自独立的配置文件

vuser1

vim /etc/vconfig/vuser1

guest_username=svuser1 #设置vuser1对应的本地用户为svuser1

local_root=/srv/ftp/noshare #用户登录后所在的目录

anon_world_readable_only=NO #允许浏览和下载

anon_max_rate=500000 #限定传输速率为500KB/s

vuser2

vim /etc/vconfig/vuser2

guest_username=svuser2

local_root=/srv/ftp/share

anon_world_readable_only=NO

write_enable=YES //允许写入

anon_upload_enable=YES //允许上传

anon_mkdir_write_enable=YES //允许创建文件夹

anon_max_rate=1000000 //限定传输速度为1000KB/s

(5)重新加载vsftpd服务,使配置生效
systemctl restart vsftpd
(6)测试

打开Windows文件资源管理器登录ftp://192.168.8.125

  1. 在vuser1中只能进行下载测试

1)将文件123.txt下载(拖拽)到桌面

2)将文件uksc.db上传(拖拽)到桌面、新建文件夹、删除测试

  1. vuser2能进行上传、下载

将个人日日程APP.zip包上传到目录下

2)将666.txt下载(拖拽)到桌面

anonymous_enable=NO

local_enable=YES //使用虚拟用户一定要启用本地用户

chroot_local_user=YES //将所有本地用户限制在家目录中(需添加)

guest_enable=YES //启用用户映射功能,允许虚拟用户登录(需添vim /etc/vsftpd/vconfig/vtext2

guest_username=vtext2

local_root=/var/ftp/noshare

anonymous_enable=NO #禁止本地登录

write_enable=YES #允许写入

local_umask=022

anon_upload_enable=NO #允许上传

anon_mkdir_write_enable=NO #允许创建文件夹

idle_session_timeout=600

data_connection_timeout=120

anon_world_readable_only=NO #允许浏览和下载

max_clients=10 #客户端允许最大访问量

max_per_ip=5

local_max_rate=1048576 #本地用户最大传输速度

anon_max_rate=1000000 #限定传输速度为1000KB/s

5.3常见问题及解决办法:

  1. “Windows+r”-> cmd 登录ftp 192.168.8.125发现/etc/vuser.db报错

  1. 解决办法:

1)在/etc/下,删除vusers.db文件,重新将文本文件转化为数据库文件

2)再次登录Windows终端测试

  1. 用db_load转换工具,将文本文件转化为数据库文件时未找到命令

  1. 解决办法:

1)想要使用db_load转换工具,需要先下载安装db*包

浏览器登录:Index of /ubuntu/pool/main/d/db5.3

)将下载好的db包进行安装

3)再次执行命令测试

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

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

相关文章

Java变量理解

成员变量VS局部变量的区别 语法形式:从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰…

深度盘点:100 个 Python 数据分析函数总结

经过一段时间的整理,本期将分享我认为比较常用的100个实用函数,这些函数大致可以分为六类,分别是统计汇总函数、数据清洗函数、数据筛选、绘图与元素级运算函数、时间序列函数和其他函数。 技术交流 技术要学会交流、分享,不建议…

DMX512协议及对接口电路的分析

1、DMX512协议简介 DMX 是Digital MultipleX 的缩写,意为多路数字传输(具有512条信息的数字多路复用”)。DMX512控制协议是美国舞台灯光协会(usITT)于1990年发布的灯光控制器与灯具设备进行数据传输的工业标准,全称是USITTDMX512(1990); DMX512 在其物理…

达索系统3DEXPERIENCE WORKS 2024 结构仿真功能增强

simulia结构仿真是什么? 不仅能对结构进行力学、热学、声学等多学科计算,辅助于设计方案的优化;还能采用数字化技术模拟产品性能,大幅节约试验和样机迭代成本。达索系统3DEXPERIENCE WORKS 2024 结构仿真为企业提供随需应变、精准…

Android开源框架--Dagger2详解

功名只向马上取,真是英雄一丈夫 一,定义 我们知道在一个类中,通常会定义其他类型的变量,这个变量就是我们所说的“依赖“。 对一个类的变量进行初始化,有两种方式。第一种,这个类自己进行初始化&#xff…

Linux环境安装Java,Tomcat,Mysql,

1、Java的安装 载 jdk1.8 注:此处 CentOS7 是64位,所以下载的是:Linux x64, 文件类型为 tar.gz 的文件 JDK 官网地址:https://www.oracle.com/java/ cd /usr/local/ mkdir jdk cd jdk/tar -xvf jdk-8u202-linux-x64.…

pandas教程:US Baby Names 1880–2010 1880年至2010年美国婴儿姓名

文章目录 14.3 US Baby Names 1880–2010(1880年至2010年美国婴儿姓名)1 Analyzing Naming Trends(分析命名趋势)评价命名多样性的增长“最后一个字母”的变革变成女孩名字的男孩名字(以及相反的情况) 14.3…

【Docker项目实战】使用Docker部署Plik临时文件上传系统

【Docker实战项目】使用Docker部署Plik 临时文件上传系统 一、Plik介绍1.1 Plik简介1.2 Plik特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Plik镜像五、部署Plik临时…

学习知识随笔(Django)

文章目录 MVC与MTV模型MVCMTV Django目录结构Django请求生命周期流程图路由控制路由是什么路由匹配反向解析路由分发 视图层视图函数语法reqeust对象属性reqeust对象方法 MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M&#…

案例-某乎参数x-zse-96逆向补环境

文章目录 前言一、流程分析二、导出代码三、补环境总结 前言 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则…

Java代码的编译与执行过程

一、编译过程 1、javac 编译 Java源代码通过编译器(javac)编译为字节码文件(.class)。 idea中的 build 和 maven package等指令都可以编译为 .class 2、类加载器(Class Loader) 类加载器负责将类的字节码文件加载到内存中,以便在运行时创…

【RTP】5:从network收到rtp包到组帧之间的数据传递

m79 代码。从网络中收到rtp、rtcp 后交给call 进行处理这是因为call 具有PacketReceiver 的能力。收到的包是一个 :CopyOnWriteBuffer 类型:rtc::CopyOnWriteBuffer packetclass Call PacketReceiver 准备delivery包:返回delivery结果:}成功、包错误、ssrc未知 D:\zhb-dev\…

96.STL-遍历算法 transform

目录 transform 语法: 功能描述: 函数原型: 代码示例: transform 是 C 标准模板库(STL)中的一个算法,用于对一个范围内的元素进行转换并将结果存储到另一个范围。以下是简要解释和一个示例…

Ansys Lumerical|带 1D-2D 光栅的出瞳扩展器

附件下载 联系工作人员获取附件 此示例显示了设置和模拟出瞳扩展器 (EPE) 的工作流程,EPE 是波导型增强现实 (AR) 设备的重要组成部分。该工作流程将利用 Lumerical 和 Zemax OpticStudio 之间的动态链接功能 。为了…

「计算机网络」Cisco Packet Tracker计算机网络仿真器的使用

介绍 Cisco Packet Tracker:网络仿真工具,用于模拟网络配置。 (一)通过 带外管理 配置交换机(Switch) 带外:Out-of-Band, OOB写在前面:如何打开Console页面 1、模式转换 用户执行模…

绝对是全网最简单的git入门了!!!

git使用步骤(重点!!!): 下载git安装包: https://gitee.com/lihutao/go/blob/master/Git-2.40.0-64-bit.zip 或去官网下载:Git - Downloads 安装完成后在电脑桌面(也可…

合并区间[中等]

一、题目 以数组intervals表示若干个区间的集合,其中单个区间为intervals[i] [starti, endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 示例 1: 输入:intervals […

Vscode中字符串报错:Unknown word.cSpell

一. 报错现象 二. 原因 是vscode IDE工具中的插件 Code Spell Checker 会检查字符串的合理性,我们写的中式拼音的字符串,不是一个标准英文单词,就会提示错误,解决方法就是让该插件遇到特定词汇不报错 三. 解决方法

深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动

文章目录 前言一、输入系统的基本组成部分二、输入系统相关源码分析1、IMS 构建1.1、SystemServer # startOtherServices()1.2、InputManagerService1.3、NativeInputManager # nativeInit()1.4、NativeInputManager1.5、InputManager1.6、InputDispatcher1.7、InputReader1.8、…

Vue路由嵌套和携带参数的几种方法

1、路由嵌套 路由嵌套逻辑: router.index.js中使用children嵌套子路由 //该文件专门用于创建整个文件的路由器 import VueRouter from vue-routerimport About from "/pages/About"; import Home from "/pages/Home"; import News from "…