麒麟V10服务器搭建FTP服务

news2024/11/24 20:45:56
  • 概念

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.coloradmin.cn/o/1258015.html

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

相关文章

计算机组成原理-Cache替换算法

文章目录 总览随机算法(RAND)先进先出算法(FIFO)近期最少使用算法(LRU)最不经常使用算法(LFU)总结 总览 随机算法(RAND) 没有选择性地考虑替换哪一块Cache&a…

Glare or Gloom, I Can Still See You – End-to-End Multi-Modal Object Detection

SENSOR-AWARE MULTI-MODAL FUSION G-log(-log(U)),U~Uniform[0,1] 辅助信息 作者未提供代码

解密Spring Cloud微服务调用:如何轻松获取请求目标方的IP和端口

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。 目的 Spring Cloud 线上微服务实例都是2个起步,如果出问题后,在没有ELK等日志分析平台,如何确定调用到了目标服务的那个实例,以此来排…

深度学习笔记《一》:keras_core.layers.Conv2D()

一、说明 卷积,池化,激活函数,这三者号称是深度神经网络的三驾马车;其中卷积是最复杂的一个,因此,对卷积这个东西需要精心认知,这样对后面学习大有帮助。本篇为系列博文,专门介绍Cer…

哈希表、哈希冲突解决办法

文章目录 一、什么是哈希表?二、什么是哈希冲突?怎样解决?三、哈希表的大小为什么是质数?四、链表法五、开放地址法线性探测法平方探测法双哈希(Double Hashing) 六、哈希表满了怎么办?七、完美哈希八、一些使用哈希解…

PGP 遇上比特币

重复使用 PGP 密钥作为比特币密钥 介绍 在数字安全领域,密码学在确保数据的完整性和真实性方面发挥着至关重要的作用。 一种广泛使用的加密技术是使用 Pretty Good Privacy (PGP1)。 PGP 为安全通信(例如电子邮件、文件传输和数据存储)提供加…

4G执法记录仪在高铁、地铁、机场应急处突中的应用

4G执法记录仪:高铁、地铁、机场紧急应对新利器 随着时代的迅猛发展,公共交通安全管理面临着越来越复杂的挑战。其中,高铁、地铁、机场这类人流密集的区域,要求高效、准确的应急响应与指挥调度机制。在这种背景下,4G/5G执法记录仪…

大数据平台/大数据技术与原理-实验报告--MapReduce编程

实验名称 MapReduce编程 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.30-2023.11.03 实验仪器设备以及实验软硬件要求 专业实验室(配有centos7.5系统…

burpsuite issue definitions

https://portswigger.net/burp/documentation/scanner/vulnerabilities-list 先从高危的开始学(四十能学剑,时人无此心): os command injection todo 未完待续

element 的 Notification 通知,自定义内容

通知事件: // 商户后台通知 MerchantBackgroundNotice() {// 禁止消息通知弹出多条if(this.notifyInstance) {this.notifyInstance.close();}const h this.$createElement; // 创建文本节点this.notifyInstance this.$notify({showClose: false, // 禁止关闭按钮…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1,字符编码(Character Encoding) 是一种将…

Java(八)(可变参数,Collections,小案例:斗地主游戏小案例:斗地主游戏,Map集合,Stream流)

目录 可变参数 Collections 小案例:斗地主游戏 Map集合 Map的常用方法 map集合的遍历 键找值 键值对 Lambda 表达式 HashMap底层原理 集合的嵌套 Stream流 获取集合或数组的Stream流 Stream流的方法 可变参数 就是一种特殊的形参,定义在方法和构造器的形参列表中,…

视频没有字幕怎么办,怎么给视频增加字幕

文章目录 视频没有字幕怎么办,怎么给视频增加字幕前言软件准备制作字幕1. 导入视频2. 将视频拖拽到轨道3. 生成字幕4. 导出字幕 字幕实时翻译1. 播放视频2. 显示字幕设置3. 双语字幕显示 总结 视频没有字幕怎么办,怎么给视频增加字幕 前言 有时候下载的…

传音荣获2023首届全国人工智能应用场景创新挑战赛“智能家居专项赛”三等奖

近日,中国人工智能学会与科技部新一代人工智能发展研究中心联合举办2023首届全国人工智能应用场景创新挑战赛(2023 1st China’s Innovation Challenge on Artificial Intelligence Application Scene,以下简称CICAS 2023),吸引了…

10 个例子带你学会 AI 编程(含提示词)

大家好,我是伍六七。 AI 编程是一个程序员群体普遍关注的领域,但是真的使用 AI 编程实现提效的还是少数。 有的人没有大模型资源,有的人不知道可以在哪些方面使用 AI 进行提效,还有的人不相信使用 AI 可以提效。 今天&#xff…

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

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

【机器学习】迁移学习

迁移学习:给定一个有标记的源域和一个无标记的目标域。这两个领域的数据分布不同。迁移学习的目的就是要借助源域的知识,来学习目标域的知识(标签)。或是指基于源域数据和目标域数据、源任务和目标任务之间的相似性,利用在源领域中学习到的知…

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——Eigen库 本章将介绍视觉SLAM的基本问题之一:如何…

【开源】基于JAVA的天然气工程运维系统

项目编号: S 022 ,文末获取源码。 \color{red}{项目编号:S022,文末获取源码。} 项目编号:S022,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…

Win11修改用户名(超详细图文)

新买的电脑一般预装Windows11系统(家庭与学生版),新电脑初次开机使用微软邮箱账号登录,则系统将用户名自动设置成邮箱前5位字符。我的用户名便是一串数字【231xx】(qq邮箱前5位),看着很不舒服&a…