开发者社区 > 博文 > 配置ftp连接对象存储bucket子目录的方法
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

配置ftp连接对象存储bucket子目录的方法

  • 京东云技术交付部
  • 2021-01-26
  • IP归属:未知
  • 56640浏览

简介

本文介绍在云主机内配置ftp,将ftp的根目录设置为对象存储bucket中的子目录的配置方法;此配置可以直接实现通过ftp上传文件到对象存储的bucket中;

前提条件

环境配置如下:

 centos 7.4 云主机
s3fs
版本 1.85
pure-ftp
版本 1.0.47

配置方法:
一、创建bucket,同时在云主机内安装s3fs
1、
oss控制台创建一个bucket,本文bucket名称为jdftp 

2、安装s3fs,参考 https://docs.jdcloud.com/cn/object-storage-service/s3fs 进行安装,本文将bucket挂载到云主机上的目录为jdftp  



二、主机内安装ftp,本文安装的是pure-ftpd
1
、用如下命令进行安装
yum install -y pure-ftpd


2
、安装完成后先修改配置文件/etc/pure-ftpd/pure-ftpd.conf

PureDB /etc/pure-ftpd/pureftpd.pdb前面的#删除; 

3启动pure-ftpd。

启动命令为systemctl start pure-ftpd。

启动完使用ps aux |grep pure-ftpd 命令看下是否有pure-ftp的进程;

4创建账户,为了安全,pure-ftpd使用的账号并非linux的系统账号,而是虚拟账号。

创建虚拟账户jdftp-u是将虚拟用户jdftp与系统用户pure-ftp关联在一起。

也就是说,使用jdftp账号登录ftp后,会以pure-ftp的身份来读取和下载文件,-d是指定jdftp账户的家目录。

这样可以使用户ftp_usera只能访问其家目录/jdftp/ftptest/

5、调整/jdftp/ftptest的属主权限。
由于jdftp是通过s3fs挂载的bucket目录,直接使用chown是无法修改属主权限的,需要在s3fs挂载的时候指定下属主。
目前需要先使用umount命令将/jdftp卸载,之后重新使用s3fs命令挂载。
挂载的命令如下:

   s3fs jdftp /jdftp -o allow_other -o uid=1000,umask=000,gid=1000 -o passwd_file=~/.passwd-s3fs -o url="https://s3.cn-north-1.jdcloud-oss.com"   (其中allow_other是允许非root用户访问OSS uid=1000,umask=000,gid=1000 是设置目录的属主和权限)

6、创建用户信息数据库文件,使用命令pure-pw mkdb

之后使用 pure-pw list 查看下账户信息;

7、在/jdftp/ftptest 目录下创建一个测试文件 jdftptest.txt

8、通过ftp客户端连接测试,连接正常

并在可以直接对目录进行文件上传下载的操作;

  


在此感谢各位童鞋阅读,如果能够对大家有所帮助,欢迎点赞转发。

同时欢迎扫码关注京东云技术中台团队的公众号:云服务飞行团;更多精彩内容会持续放送!

共0条评论