麒麟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上传、下载测试

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

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

相关文章

C#开发的OpenRA游戏之属性SelectionDecorations(10)

C#开发的OpenRA游戏之属性SelectionDecorations(10) 前面分析了选择属性,继续分析前面的内容,不过这里不再是选择,而是选择相关的属性。 当用玩家选择地图上一个物品,或者士兵,或者坦克时,就会在周边画上一些指示标记,并且有一个状态条。 通过上图,可以看到建筑物周…

Eureka简单使用做微服务模块之间动态请求

创建一个eureka模块,引入eureka 为启动项加上EnableEurekaServer注解 配置信息 orderService和userService的操作是一样的 这里以orderService为例: 引入eureka客户端 加上 LoadBalanced注解 配置 orderService和userService都配置好了之后 启动 这样我们在http://localhos…

k8s环境排查nginx转发nacos请求失败问题

一、问题背景 k8s部署两个服务,一个nginx,一个nacos, 服务信息如下(nacos有两个端口): 服务 serviceNameservice类型porttargetPort nodePortnginxmonitor-cp-nginxNodePort808031082nacosmonitor-cp-nacosClusterIP88488848-98489848- ng的default.conf配置文件…

新购服务器项目部署指南—— Express + Vue + Nginx+ pm2 Nodejs项目部署全流程

目录 一、部署Express项目1.1、安装Node1.2、安装pm2进程管理器1.3、部署Express后端项目 二、部署Vue前端项目2.1、Nginx的下载安装与SLL配置2.2、打包Vue项目2.3、上传项目到Nginx目录2.4、配置Nginx 附录pm2命令速览Nginx命令速览 最后 书接上回:新购服务器开荒记…

队列实现方式、效率分析及应用场景

文章目录 一、什么是队列二、队列特性阻塞和非阻塞有界和无界单向链表和双向链表 三、Java队列接口继承图四、Java队列常用方法五、队列实现方式与效率分析六、队列的应用场景七、Python中队列与优先级队列使用 一、什么是队列 队列是一种特殊的线性表,遵循先入先出…

CloudCompare 源码编译

一、下载源码 二、cmake 编译 这里面有四个比较重要的地方 1、源码的位置 2、生成的位置 3、项目的位置 4、qt 的位置 三、编译 开始测试,先用那个项目做测试 没有问题 然后用build的那个打开 加入Qt 的相关库到qcc中 启动项目生成cloudcompare 启动 ok ,完成…

Unsupervised Skill Discovery via Recurrent Skill Training论文笔记

Zheyuan Jiang, Jingyue Gao, Jianyu Chen (2022). Unsupervised Skill Discovery via Recurrent Skill Training. In Conference on Neural Information Processing Systems (NeurIPS), 2022. 通过循环技能训练发现无监督技能 1、Motivation 以往的无监督技能发现方法主要使…

Pinctrl子系统和GPIO子系统实验

驱动入口出口函数: static int __init led_init(void) {return 0; } static void __exit led_exit(void) { }module_init(led_init);module_exit(led_exit);MODULE_LICENSE("GPL");字符设备驱动那一套 先创建设备结构体 (cdev) 1…

Unity 自带的一些可以操控时间的属性或方法。

今天来总结下Unity自带的一些可以操控时间的方法。 1、Time.time。比较常用计算运行时间而触发特定事件。 public class Controller : MonoBehaviour {public float eventTime 5f; // 触发事件的时间private float startTime; // 游戏开始的时间private void Start(){startT…

【Cisco Packet Tracer】电子邮箱仿真搭建

本文使用Cisco Packet Tracer,搭建电子邮箱仿真系统,使得zhangsancisco.com可以和lisicisco.com可以互相发送邮件。 电子邮箱账号(为了简单起见,账号密码设置一致):zhangsan/lisi 域名:cisco.…

京东运营数据分析(京东数据采集):2023年10月京东护肤行业品牌销售排行榜

鲸参谋监测的京东平台10月份护肤市场销售数据已出炉! 鲸参谋数据显示,2023年10月份,京东平台上护肤市场的销量为2000万,环比增长约28%,同比降低约26%;销售额为25亿,环比增长约24%,同…

2023年汉字小达人市级比赛才知道消息?请查收最后三天的备考策略

这两天有家长联系六分家长,说语文老师刚刚通知他们孩子晋级了2023年第十届上海小学生汉字小达人比赛的市级活动(实际比赛),该如何准备? 六分成长发现这些家长还有好几个呢。经过和家长了解,发现是孩子的语…

React中通过children prop或者React.memo来优化子组件渲染【react性能优化】

文章目录 前言未优化之前的代码问题解决方案一,通过children prop解决方案二,通过React.memo后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:react.js 🐱‍👓博主在前端领域还有很多知识和…

深入理解计算机中的程序

目录 程序的存储 程序的编译过程 各位宝宝好&#xff0c;我们这次从计算机底层来讲一下程序是如何存储&#xff0c;编译的 程序的存储 我们拿一个最简单的程序来举个例子&#xff1a; #include<stdio.h> int main() {printf("hello world");return 0; } …

tomcat-pass-getshell 弱口令 漏洞复现

tomcat-pass-getshell 弱口令 漏洞复现 名称: tomcat-pass-getshell 弱口令 描述: Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。 通过弱口令登…

属性级情感分析

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 属性级情感分析 简介数据集介绍数据加载和预处理&#xff08;data_utils.py&#xff09;预训练模型&#xff08;skep&#xff09;模型定义模块&#xff08;model.py&#xff09;训练配置&#xff08;config.py&am…

【1++的Linux】之信号量

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;信号量二&#xff0c;基于环形队列的生产消费者模型三&#xff0c;线程池 一&#xff0c;信号量 1&#xff0c;什么是信号量&#xff1f; 任何时候都有一个…

数字技术-IPC专利分类号对应表

数字技术-IPC专利分类号对应表&#xff0c;基于2023年的关键数字技术专利分类体系&#xff0c;通过国际专利分类&#xff08;IPC&#xff09;号进行筛选。这些数据涵盖了各种数字技术领域的创新&#xff0c;包括但不限于人工智能、大数据、云计算、物联网、5G通信等。利用关键词…

Python 进阶(十一):高精度计算(decimal 模块)

《Python入门核心技术》专栏总目录・点这里 文章目录 1. 导入decimal模块2. 设置精度3. 创建Decimal对象4. 基本运算5. 比较运算6. 其他常用函数7. 注意事项8. 总结 大家好&#xff0c;我是水滴~~ 在进行数值计算时&#xff0c;浮点数的精度问题可能会导致结果的不准确性。为了…

lua的gc原理

lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁&#xff0c;目前大多数有关这个方面的文章都还是基于lua5.1版本&#xff0c;有一定的滞后性。因此本文通过参考当前的5.3.4版本的Lua源码&#xff0c;希望对Lua的GC算法有一个较为详尽的探讨。 L…