麒麟V10服务器搭建FTP服务

  • 概念

1.1介绍

FTP:File transfer protocol 文件传输协议

1.2原理

默认采用被动模式

被动模式FTP

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被

动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

FTP服务器命令(21)端口接受客户端任意端口(客户端初始连接)

FTP服务器命令(21)端口到客户端端口(>1023)(服务器响应客户端命令)

FTP服务器数据端口(>1023)接受客户端端口(>1023)(客户端初始化数据连接到服务器指定的任意端口)

FTP服务器数据端口(>1023)到客户端端口(>1023)(服务器发送ACK响应和数据到客户端的数据端口)

NFS,基于主机认证,只是局域网之间文件传输

FTP,可以实现用户之间的认证

Real:本地用户 ,服务端用户

匿名用户

虚拟(游客)用户

1.3 配置文件

主配置文件:

vim /etc/vsftpd/vsftpd.conf

从配置文件

vim /var/ftp/pub

主配置文件详解

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配置本地yum仓库

1)在光驱中插入kylin-server-v10的系统光盘(若是虚拟机则连接相应的ISO文件),然后在系统中将光盘挂载到/mnt目录。

2)将本地目录/mnt/mydvd配置为本机的yum源

2.3安装vsftpd

2.4 重启vsftpd服务,关闭防火墙和修改SE linux策略

 SELLinux设置(查看下面常见问题)

  1. 设置安全策略:

setsebool -P allow_ftpd_anon_write=1

  1. 修改安全上下文:

chcon -R -t public_content_rw_t /var/ftp/pub

  1. 防火墙配置(临时)

Systemctl stop firewalld.service

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

2.5配置网络

1)查看虚拟网卡名称 ens33

2)配置IP地址

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

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

5)虚拟机中IP配置(静态IP、添加IP地址、子网掩码、网关、DNS)

6)重启网络服务

7)测试网络

三、匿名用户登录

3.1要求:

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

3.2过程:

(1)修改配置文件/etc/vsftpd,默认访问var/ftp/pub\ 
  1. vsftpd的配置文件在/etc/vsftpd目录下,修改 vsftp.conf 文件:(建议复制一个备份文件在同一目录下,以防直接修改错误,而无法恢复。)
  1. 查看以下授权是否开启并修改:

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 #启用匿名用户其它操作的权限

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

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

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

(5)在Windows的文件资源系统操作:(匿名用户登录,用户名为ftp,密码为空)注:确定防火墙关闭

(6)测试

匿名用户在pub子目录下可以上传、下载、新建、重命名和删除文件

a. 在/var/ftp/pub下新建 download文件和upload文件,并chmod授权777

b. 在/home/下为用户授权

c. 将Windows桌面上的kylin.txt文件拖拽上传到upload文件中

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

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

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

g. 在Windows文件资源管理器中新建文件夹和重命名

h. 删除文件

3.3常见问题及解决办法:

(1)有的时候我们改了配置了vsftpd.conf文件之后还是不能上传下载文件,需要进行以下操作:
  1. 在麒麟V10系统终端中使用命令getsebool -a|grep ftp 查看ftp的相关权限

这个时候会报SElinux is disabled(因为在装vsftpd的时候SElinux=disabled,在银河麒麟V10的终端通过修改selinux配置文件/etc/selinux/config文件中的SELUNUX参数发现无法启动selinux。(在银河麒麟中有个kysec安全软件,怀疑是此软件拦截了selinux的启动。)

  1. 解决办法:
  1. Vim /etc/sysconfig/selinux将SElinux=disabled 改为SElinux=enforcing

2)调用指令:security-switch --set default,执行过程中出现selinux关闭。

查看指令帮助,执行 security-switch --set custom --list selinux,重启后调用sestatus发现selinux启动了。

3)重启后发现当前模式还是enforce,查看/etc/default/grub, selinux=1 enforcing=1,去除 enforcing=1,重启机器。Selinux模式已经正常。

(2)在Windows终端中,登录ftp  FTP550报错

  1. 解决办法:

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

2)执行Windows+R,输入cmd,登录ftp 192.168.1.17测试

四、本地用户

4.1要求:

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

4.2过程:

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

useradd -s /sbin/nologin lisi

passwd lisi #设置密码

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

在/home目录下,执行chmod 755 lisi增加权限

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

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

mkdir -p /var/ftp/testup #创建上传文件夹

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

在/var/ftp/testup中创建1234.txt文件,并填写些东西。

(3)修改安全上下文,使根目录能够写入(上传)功能

chcon -t public_content_rw_t /var/ftp/testup

(4)修改配置文件,执行 vim /etc/vsftpd/vsftpd.conf

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

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

local_root=/var/ftp/testup

#设置本地用户的根目录为/var/ftp/testup

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)修改SELinux允许本地用户登录

getsebool -a|grep ftp

setsebool -P ftpd_full_access on

setsebool -P tftp_home_dir on

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

systemctl restart vsftpd

  1. 设置防火墙规则
(8)测试

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

b. 在Windows资源管理器访问地址ftp://192.168.1.16

c. 将桌面的kylin.txt上传(拖拽)到var/ftp/textup目录文件中

4.3常见问题及解决办法:

安装完vsftpd软件后,SELinux安全策略默认是没有开启FTP服务,直接访问会报错500 OOPS,所有需要修改为允许使用FTP服务。

目标:希望FTP用户访问自己的家目录

尝试:命令行输入 setsebool -P ftp_home_dir=1

发现会报错:

  1. 解决办法:

麒麟V10服务器操作系统开始用tftp_home_dir来替代了ftp_home_dir,所以修改如下:

五、虚拟用户

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

5.1要求:

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

5.2过程:

(1)操作虚拟用户列表

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

b. 用db_load转换工具,将文本文件(上一步所建立的文件)转化为数据库文件
db_load  -T  -t  hash  -f  vusers.list  vusers.db

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

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

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

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

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

vim /etc/vsftpd/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/vsftpd/vconfig #指定虚拟用户的配置文件的位置(需添加)

allow_writeable_chroot=YES

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

vuser1

vim /etc/vsftpd/vconfig/vuser1

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

local_root=/var/ftp/share #用户登录后所在的目录

anon_world_readable_only=NO #允许浏览和下载

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

vuser2

vim /etc/vsftpd/vconfig/vuser2

guest_username=svuser2

local_root=/var/ftp/noshare

anon_world_readable_only=NO

write_enable=YES //允许写入

anon_upload_enable=YES //允许上传

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

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

(6)修改SELinux允许本地用户登录和匿名用户具有写入权限

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

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

在vuser1中只能进行下载测试

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

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


  1. vuser2能进行上传、下载

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

将123.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.17 发现500报错,没有读取chroot_list文件,这里需要我们自行创建chroot_list_file=/etc/vsftpd/chroot_list 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录
  1. 解决办法:

在/etc/vsftpd下,创建chroot_list文件

再次登录Windows终端测试

vuser2上传、下载测试

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

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

相关文章

删除巨大文本文件的最后一行

用truncate去年最后的字节数。 export file"abc.json"tail -n 1 "$file" | wc -c | xargs -I {} truncate "$file" -s -{}mac上面truncate需要安装一下。 参考: Remove the last line from a file in Bash - Stack Overflow

Vue路由器(详细教程)

路由: 1.理解:一个路由(route)就是一组映射关系(key-value),多个路由需要路由器(router)进行管理。 2.前端路由:key是路径,value是组件。 1、先安装vue-router路由 npm i vue-route…

车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景)

车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是…

go的HTTP网络编程

欢迎大家到我的博客浏览。go的HTTP网络编程 | YinKais Blog go的HTTP网络编程 1、http编程--server示例 package main ​ import ("fmt""net/http" ) ​ func main() {// 注册处理函数,定义 URL 路由和对应的处理函数http.HandleFunc("…

redisserver一闪而过 redis闪退解决版本

1.进入Redis根目录 2.输入redis-server 或 redis-server.exe redis.windows.conf 启动redis命令,看是否成功。 执 一闪而过的问题 可能是因为已启动或者其他问题,需要重启 先输入redis-cli.exe再输入shutdown再输入redis-server.exe redis.windows.c…

扩散模型实战(十二):使用调度器DDIM反转来优化图像编辑

推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 扩散模型实战(四&#xff…

ajax请求接口数据和显示在页面里 Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法

$.ajax({ url:"这里是你要请求的地址", data:{"id":id}, //以键/值对的形式 async : false, dataType : "json", success : function(data) { for(int i 0; i < data.length; i) { //循环后台传过来的Json数组 var datas data…

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(用户上传头像+用户收货管理)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现&#xff08;用户上传头像&#xff09; 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先&#xff0c;通过深入分析项目所需数据&#xff0c;包括用户、商品、商品类别、收藏、订单、购物…

redisson实现分布式锁(支持redis单例/集群)

redisson实现分布式锁 前言一、引入redisson依赖二、redis 配置三、redisson 配置1.集群配置2.单例配置 四、分布式锁使用-业务层demo 前言 还是在工作中遇到的问题&#xff1a; 1&#xff1a;新增商铺信息时&#xff0c;同一个商铺有多条信息。 异步的情况&#xff0c;根据商…

NX二次开发UF_CURVE_ask_parameterization 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_parameterization Defined in: uf_curve.h int UF_CURVE_ask_parameterization(tag_t object, double param_range [ 2 ] , int * periodicity ) overview 概述 Retu…

国产Ai大模型和chtgpt3.5的比较

下面是针对国产大模型&#xff0c;腾讯混元&#xff0c;百度文心一言&#xff0c;阿里通义千问和chatgpt的比较&#xff0c;最基础的对一篇文章的单词书进行统计&#xff0c;只有文心一言和chatgpt回答差不多&#xff0c;阿里和腾讯差太多了

深度学习中的注意力机制:原理、应用与实践

深度学习中的注意力机制&#xff1a;原理、应用与实践 摘要&#xff1a; 本文将深入探讨深度学习中的注意力机制&#xff0c;包括其原理、应用领域和实践方法。我们将通过详细的解析和代码示例&#xff0c;帮助读者更好地理解和应用注意力机制&#xff0c;从而提升深度学习模…

Vue快速实践总结 · 下篇

文章目录 组件间通信方式父 --> 子通信props插槽 子 --> 父通信&#xff08;自定义事件&#xff09;任意组件通信全局事件总线消息订阅与发布 Vuex工作原理运行环境简单使用GettersmapState与mapGettersmapActions与mapMutations模块化 命名空间 VueRouter路由的作用与分…

OpenWrt Lan口上网设置

LAN口上网设置 连接上openwrt&#xff0c;我用的 倍控N5105&#xff0c;eth0&#xff0c;看到Openwrt的IP是10.0.0.1 在 网络 -> 网口配置 -> 设置好 WAN 口和 LAN 口 初次使用经常重置 openwrt 所以我设置的是 静态IP模式 - 网络 -> 防火墙 -> 常规设置 ->…

7.私信列表 + 发送列表

目录 1.私信列表 1.1 数据访问层 1.2 业务层 1.3 表现层 1.4 私信详情 2.发送列表 2.1 数据访问层 2.2 业务层 2.3 表现层 2.4 设置已读状态 1.私信列表 私信列表&#xff1a;查询当前用户的会话列表&#xff0c;每个会话只显示一条最新的私信、支持分页列表私信详情…

苹果cms搭建教程附带免费模板

准备工作: 一台服务器域名源码安装好NGINX+PHP7.0+MYSQL5.5 安装php7.0的扩展,fileinfo和 sg11,不安装网站会搭建失败。 两个扩展都全部安装好了之后 点击-服务-重载配置 这样我们的网站环境就配置完成啦 下载苹果cms 苹果cms程序github链接:选择mac10!下载即可 http…

部署Jenkins

一、介绍 Jenkins 、Jenkins概念 Jenkins是一个功能强大的应用程序&#xff0c;允许持续集成和持续交付项目&#xff0c;无论用的是什么平台。这是一个免费的源代码&#xff0c;可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允…

自建CA实战之 《0x02 Nginx 配置 https双向认证》

自建CA实战之 《0x02 Nginx 配置 https双向认证》 上一章节我们已经实现了Nginx上配置https单向认证&#xff0c;主要场景为客户端验证服务端的身份&#xff0c;但是服务端不验证客户端的身份。 本章节我们将实现Nginx上配置https双向认证&#xff0c;主要场景为客户端验证服…

基于单片机仿指针显示的电子时钟设计

**单片机设计介绍&#xff0c; 基于51单片机超声波测距汽车避障系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机仿指针显示的电子时钟是一种利用单片机控制器和LED或LCD显示屏幕来模拟传统时钟指针的显示效果的设计…

PubMedBERT:生物医学自然语言处理领域的特定预训练模型

今年大语言模型的快速发展导致像BERT这样的模型都可以称作“小”模型了。Kaggle LLM比赛LLM Science Exam 的第四名就只用了deberta&#xff0c;这可以说是一个非常好的成绩了。所以说在特定的领域或者需求中&#xff0c;大语言模型并不一定就是最优的解决方案&#xff0c;“小…