华为云:基于HCE OS的FTP文件共享服务器部署【玩转华为云】

举报
山河已无恙 发表于 2024/01/30 19:28:50 2024/01/30
【摘要】 写在前面博文内容为华为云欧拉操作系统入门级开发者认证实验笔记基于HCE OS的FTP文件共享服务器部署后端存储理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》防火墙放行端口当前假设你已经有了一台弹性云服务器,搭建...

写在前面


  • 博文内容为华为云欧拉操作系统入门级开发者认证实验笔记
  • 基于HCE OS的FTP文件共享服务器部署
  • 后端存储
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


防火墙放行端口

当前假设你已经有了一台弹性云服务器,搭建FTP , 首先需要开启对应的端口,配置安全组, 服务列表>网络>虚拟私有云vpc

在这里插入图片描述在这里插入图片描述

添加入方向 FTP 服务对应的端口

在这里插入图片描述在这里插入图片描述

FTP服务部署

通过cloudshell登录ecs

在这里插入图片描述在这里插入图片描述

当直接通过下面的命令安装ftp服务

[root@ecs-hce ~]# yum install -y vsftpd

设置FTP服务开机自启动

[root@ecs-hce ~]# systemctl enable vsftpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.

在ECS上启动FTP服务, 查看FTP服务端口

[root@ecs-hce ~]# systemctl start vsftpd.service
[root@ecs-hce ~]# netstat -nltp|grep vsftpd
tcp6       0      0 :::21                   :::*                    LISTEN      16790/vsftpd  

配置vsftpd,查看配置文件位置

[root@ecs-hce ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

vsftpd安装后默认开启了匿名FTP的功能,使用匿名FTP,用户无需输入用户名密码即可登录FTP服务器,但没有权限修改或上传文件。

用户如果试图使用Linux操作系统中的账号登录服务器,将会被vsftpd拒绝,但可以在vsftpd里配置用户账号和密码登录。

配置登录账号

[root@ecs-hce ~]# useradd ftpadmin
[root@ecs-hce ~]# passwd ftpadmin
Changing password for user ftpadmin.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

创建供FTP使用的文件目录

[root@ecs-hce ~]# mkdir /var/ftp/work01
[root@ecs-hce ~]# chown -R ftpadmin:ftpadmin /var/ftp/work01

修改vsftpd.conf 配置文件

[root@ecs-hce ~]# vim /etc/vsftpd/vsftpd.conf

默认配置

<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
[root@ecs-hce ~]# cat /etc/vsftpd/vsftpd.conf| grep -v ^#
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES

可根据实际需求选择将FTP配置为主动模式或者被动模式。如果华为云上的服务器需要通过公网IP地址访问华为云上的实例搭建的FTP服务器时,需要将FTP服务器配置为被动模式。(本实验配置为被动模式)

设置以下参数,不允许匿名登录FTP服务器,允许本地用户登录FTP服务器,并指定FTP本地用户使用的文件目录。

anonymous_enable=NO #不允许匿名登录FTP服务器
local_enable=YES #允许本地用户登录FTP服务器
local_root=/var/ftp/work01 #FTP本地用户使用的文件目录

设置以下参数,限制用户只能访问自身的主目录。

chroot_local_user=YES #所有用户都被限制在其主目录
chroot_list_enable=YES #启用例外用户名单
chroot_list_file=/etc/vsftpd/chroot_list #例外用户名单
allow_writeable_chroot=YES

设置以下参数,配置FTP支持被动模式。并指定FTP服务器的公网IP地址,以及可供访问的端口范围,端口范围请根据实际环境进行设置。

listen=YES
listen_ipv6=NO
pasv_address=xx.xx.xx.xx #ECS-hce服务器的公网IP地址
pasv_min_port=3000 #被动模式下的最小端口
pasv_max_port=3001 #被动模式下的最大端口
[root@ecs-hce ~]# vim /etc/vsftpd/vsftpd.conf
[root@ecs-hce ~]# cat /etc/vsftpd/vsftpd.conf| grep -v ^#
anonymous_enable=NO
local_enable=YES
local_root=/var/ftp/work01
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO



pam_service_name=vsftpd
userlist_enable=YES


allow_writeable_chroot=YES
pasv_address=120.46.212.140
pasv_min_port=3000
pasv_max_port=3001

chroot_list 文件是限制在主目录下的例外用户名单。如果需要设置某个用户不受只可以访问其主目录的限制,可将对应的用户名写入该文件。如果没有例外也必须要有chroot_list文件,内容可为空。

[root@ecs-hce ~]# cd /etc/vsftpd/
[root@ecs-hce vsftpd]# touch chroot_list

重启vsftpd服务使配置生效

[root@ecs-hce vsftpd]# systemctl restart vsftpd.service
[root@ecs-hce vsftpd]# 

上面操作涉及到的命令

[root@ecs-hce vsftpd]# history 
    1  2023-12-23 13:13:00 root yum install -y vsftpd >> /dev/null 
    2  2023-12-23 13:14:01 root rpm -qc vsftpd
    3  2023-12-23 13:14:11 root systemctl enable vsftpd.service
    4  2023-12-23 13:14:16 root systemctl start vsftpd.service
    5  2023-12-23 13:14:25 root netstat -nltp|grep vsftpd
    6  2023-12-23 13:14:52 root useradd ftpadmin
    7  2023-12-23 13:14:53 root passwd ftpadmin
    8  2023-12-23 13:15:18 root mkdir /var/ftp/work01
    9  2023-12-23 13:15:22 root chown -R ftpadmin:ftpadmin /var/ftp/work01
   10  2023-12-23 13:15:27 root vim /etc/vsftpd/vsftpd.conf
   11  2023-12-23 13:16:06 root cat /etc/vsftpd/vsftpd.conf| grep -V ^#
   12  2023-12-23 13:16:15 root cat /etc/vsftpd/vsftpd.conf| grep -v ^#
   13  2023-12-23 13:16:34 root vim /etc/vsftpd/vsftpd.conf
   14  2023-12-23 13:22:10 root cat /etc/vsftpd/vsftpd.conf| grep -v ^#
   15  2023-12-23 13:22:18 root cd /etc/vsftpd/
   16  2023-12-23 13:22:18 root touch chroot_list
   17  2023-12-23 13:22:35 root systemctl restart vsftpd.service
   18  2023-12-23 13:23:56 root his
   19  2023-12-23 13:23:58 root history 
[root@ecs-hce vsftpd]# 

客户端测试

在linux操作系统中登录。使用以下命令在ecs-hce上安装ftp访问客户端。

yum install -y lftp

安装完成之后使用lftp命令登录进入ftp文件服务器,登录过程中需要使用ftpadmin用户名的密码进行鉴权。

lftp -u ftpadmin 120.46.212.140  #注意此处的IP地址需要修改为ecs-hce弹性云服务的弹性公网地址

验证登录正常,创建一个目录测试。

通过上面的方式我们实现了简单的FTP,但是正常情况下,FTP 服务需要大量的存储空间,直接写到 ecs 里面需要考虑扩容等问题,访问也不是特别方便,所以我们需要一个后端存储,可以不用考虑容量,访问方便,即通过下面的方式:

在这里插入图片描述在这里插入图片描述

安装S3FS应用,通过S3FS实现把对象存储Bucket像盘一样,挂在FTP服务的工作目录之下,从而为服务器提供海量的对象存储远程附件存储空间。

创建OBS对象存储

打开OBS服务控制台 在这里插入图片描述

创建存储桶,配置完成之后点击,立即创建。

  • 区域:华北-北京四
  • 桶名称:ftp-obs(如果创建时提示名称已被占用,请自定义名称,并记住该名称)
  • 数据冗余存储策略:单AZ存储
  • 默认存储类别:低频访问存储
  • 桶策略:公共读写(在弹出页签选择“确认修改”)
  • 其他参数:保持默认
在这里插入图片描述在这里插入图片描述

在桶列表中,点击桶名,

在这里插入图片描述在这里插入图片描述

点击对象>新建文件夹。输入文件夹名称,test。点击确定。

在这里插入图片描述在这里插入图片描述

获取访问密钥,打开对象存储服务,点击“总览”。

在这里插入图片描述在这里插入图片描述

点击“增加访问密钥”,增加后会有一个csv文件自动下载到本地。

在这里插入图片描述在这里插入图片描述

记录下载下来的csv文件中的“Access Key Id”和“Secret Access Key”。

配置OBS挂载至本地FTP

使用root账户登录ecs-hce弹性云服务器, 安装fuse组件(s3fs依赖fuse组件),安装s3fs

直接使用仓库安装

sudo yum install -y automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel

内网环境源码安装

[root@ecs-hce ~]# wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/20220329/s3fs-fuse-master.zip
[root@ecs-hce ~]# unzip s3fs-fuse-master.zip
[root@ecs-hce ~]# mv s3fs-fuse-master s3fs-fuse
[root@ecs-hce ~]# ls
s3fs-fuse  s3fs-fuse-master.zip
[root@ecs-hce ~]# chmod -R 777 s3fs-fuse/
[root@ecs-hce ~]# cd s3fs-fuse
[root@ecs-hce s3fs-fuse]# ls
AUTHORS  autogen.sh  ChangeLog  COMPILATION.md  configure.ac  COPYING  doc  INSTALL  Makefile.am  README.md  src  test
[root@ecs-hce s3fs-fuse]# ./autogen.sh
[root@ecs-hce s3fs-fuse]# ./configure
[root@ecs-hce s3fs-fuse]# make
[root@ecs-hce s3fs-fuse]# sudo make install

挂载OBS桶,在/root/下创建.passwd-s3fs的文件,设置文件权限为600

[root@ecs-hce s3fs-fuse]# cd
[root@ecs-hce ~]# touch .passwd-s3fs
[root@ecs-hce ~]# chmod 600 /root/.passwd-s3fs

在.passwd-s3fs的文件中添加OBS桶的AK:SK。此AK,SK内容为“1.3 创建OBS对象存储”步骤4获取的内容。

[root@ecs-hce ~]# cat << EOF >> /root/.passwd-s3fs
> OCL8HRSONY7F6JOR3JVB:IIYEWEEfH9E5U4uTlBBxGB1Ifa2kIS6nSymNnKKa
> EOF
[root@ecs-hce ~]# ls -l /root/.passwd-s3fs
-rw------- 1 root root 62 Dec 23 14:03 /root/.passwd-s3fs
[root@ecs-hce ~]# s3fs -o allow_other ftp-obs:/test /var/ftp/work01/ -o passwd_file=/root/.passwd-s3fs -o url=https://obs.cn-north-4.myhuaweicloud.com/ -o umask=0 -o max_write=131072 -o use_cache=/dev/shm -o big_writes -o enable_noobj_cache -o nonempty
[root@ecs-hce ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G   17M  1.7G   1% /run
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/vda1        40G  2.5G   35G   7% /
tmpfs           1.7G     0  1.7G   0% /tmp
[root@ecs-hce ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G   25M  1.7G   2% /run
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/vda1        40G  2.5G   35G   7% /
tmpfs           1.7G     0  1.7G   0% /tmp
[root@ecs-hce ~]# s3fs -o allow_other ftp-obs:/test /var/ftp/work01/ -o passwd_file=/root/.passwd-s3fs -o url=https://obs.cn-north-4.myhuaweicloud.com/ -o umask=0 -o max_write=131072 -o use_cache=/dev/shm -o big_writes -o enable_noobj_cache -o nonempty
[root@ecs-hce ~]# s3fs -o allow_other ftp-obs-demo:/test /var/ftp/work01/ -o passwd_file=/root/.passwd-s3fs -o url=https://obs.cn-north-4.myhuaweicloud.com/ -o umask=0 -o max_write=131072 -o use_cache=/dev/shm -o big_writes -o enable_noobj_cache -o nonempty
[root@ecs-hce ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G   25M  1.7G   2% /run
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/vda1        40G  2.5G   35G   7% /
tmpfs           1.7G     0  1.7G   0% /tmp
s3fs             16E     0   16E   0% /var/ftp/work01
[root@ecs-hce ~]# 
在这里插入图片描述在这里插入图片描述
[root@ecs-hce s3fs-fuse]# cd
[root@ecs-hce ~]# touch .passwd-s3fs
[root@ecs-hce ~]# chmod 600 /root/.passwd-s3fs
[root@ecs-hce ~]# cat << EOF >> /root/.passwd-s3fs
> OCL8HRSONY7F6JOR3JVB:IIYEWEEfH9E5U4uTlBBxGB1Ifa2kIS6nSymNnKKa
> EOF
[root@ecs-hce ~]# ls -l /root/.passwd-s3fs
-rw------- 1 root root 62 Dec 23 14:03 /root/.passwd-s3fs

执行如下格式命令实施 mount(以下示例中,桶名为ftp-obs:/test,test为桶内的指定目录,挂载点为/var/ftp/work01/,在实际使用时,桶名,挂载点,以及url需根据实际情况修改)

[root@ecs-hce ~]# s3fs -o allow_other ftp-obs-demo:/test /var/ftp/work01/ -o passwd_file=/root/.passwd-s3fs -o url=https://obs.cn-north-4.myhuaweicloud.com/ -o umask=0 -o max_write=131072 -o use_cache=/dev/shm -o big_writes -o enable_noobj_cache -o nonempty
[root@ecs-hce ~]# df -hFilesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G   25M  1.7G   2% /run
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/vda1        40G  2.5G   35G   7% /
tmpfs           1.7G     0  1.7G   0% /tmp
s3fs             16E     0   16E   0% /var/ftp/work01

查看是否挂载成功。

[root@ecs-hce ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G   25M  1.7G   2% /run
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/vda1        40G  2.5G   35G   7% /
tmpfs           1.7G     0  1.7G   0% /tmp
s3fs             16E     0   16E   0% /var/ftp/work01
[root@ecs-hce ~]# mount -a

卸载已挂载目录的方式为:unmount –l /var/ftp/work01/

[root@ecs-hce ~]# mount -l
........................
s3fs on /var/ftp/work01 type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)

设置开机启动

为确保客户端重启后,仍可自动挂载OBS桶至本地目录,需在/etc/fstab中新增一行s3fs的开机启动的挂载命令。

其中ftp-obs为示例的桶名,test指桶内的指定目录,/var/ftp/work01/为示例的挂载路径,http://obs.cn-east-3.myhuaweicloud.com/为示例的url,实际配置时,需根据实际情况修改。

[root@ecs-hce ~]# cat  /etc/fstab > /etc/fstab.bak
[root@ecs-hce ~]# cat << BOF >>/etc/fstab
s3fs#ftp-obs-demo:/test /var/ftp/work01/ fuse _netdev,allow_other,umask=0,use_cache=/dev/shm,max_write=131072,big_writes,enable_noobj_cache,sigv2,del_cache, url=https:// obs.cn-north-4.myhuaweicloud.com/
BOF

确认配置

[root@ecs-hce ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jun  6 09:04:02 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=bb9f8e28-4582-48d5-9fe8-d76d32466d03 /                       ext4    defaults        1 1
s3fs#ftp-obs-demo:/test /var/ftp/work01/ fuse _netdev,allow_other,umask=0,use_cache=/dev/shm,max_write=131072,big_writes,enable_noobj_cache,sigv2,del_cache, url=https:// obs.cn-north-4.myhuaweicloud.com/

验证结果

此时再次使用ftp访问工具登录到之前创建的ftp服务器中。并创建文件夹test.txt。(替换为自己的弹性云服务器IP)

[root@ecs-hce ~]# lftp -u ftpadmin 120.46.212.140
Password: 
lftp ftpadmin@120.46.212.140:~> mkdir test.txt     
mkdir ok, `test.txt' created                
lftp ftpadmin@120.46.212.140:/> ls
`ls' at 0 [Making data connection...]

Interrupt                                
lftp ftpadmin@120.46.212.140:/> 

博文部分内容参考

© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知,这是一个开源项目,如果你认可它,不要吝啬星星哦 :)


华为云欧拉操作系统入门级开发者认证: https://edu.huaweicloud.com/certificationindex/developer/9bf91efb086a448ab4331a2f53a4d3a1


© 2018-2023 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。