You need to enable JavaScript to run this app.
导航

Goofys自动挂载 TOS 桶并使用非root用户访问

最近更新时间2024.01.02 11:34:34

首次发布时间2023.07.18 20:38:57

本文将介绍使用 Goofys 实现自动挂载,bing允许非root用户进行访问。

实验介绍

goofys是Google Cloud基于GO文件系统挂载对象存储桶的一个开源工具。本实验介绍如何自动挂载

关于实验

  • 级别:初级
  • 相关产品:ECS云服务器
  • 受众:通用
  • 操作系统:CentOS 8.3
  • 软件版本:Goofys 0.24.0

操作步骤

步骤一:下载goofys

参考:https://github.com/kahing/goofys

  1. 下载
wget https://github.com/kahing/goofys/releases/latest/download/goofys
  1. 设置goofys的执行权限
chmod +x goofys
  1. 执行 ./goofys --version 验证安装是否成功。回显如下则表示安装成功。
    alt

步骤二:配置认证文件

  1. 获取火山引擎AccessKey 和SecretKey

    1. 登录火山引擎控制台

    2. 选择一级菜单“访问控制”—>选择二级菜单“密钥管理” 快捷入口

    3. 点击“新建密钥”,每个子账号最多拥有两个密钥

    1. 得到属于你的AccessKey和SecretKey

  1. 配置文件 vim ~/.aws/credentials
[default]
aws_access_key_id = Access_Key
aws_secret_access_key =  Secret_Key
region = cn-beijing
[user0]
aws_access_key_id = Access_Key_user0
aws_secret_access_key = Access_Key_user0

步骤三:利用goofys挂载tos桶

方法一:goofys一次性挂载tos桶,关机后失效

  1. 创建挂载点,即文件夹,这里命令为“tos_floder”
mkdir /mnt
  1. 挂载tos到该挂载点
./goofys --subdomain --dir-mode=0755 --file-mode=0666 --profile default --endpoint https://tos-s3-cn-beijing.ivolces.com/ -o allow_other <bucket> <mountpoint>

参数说明:

  • --subdomian 使得goofys使用用virtual host模式访问TOS,默认会走Path模式

  • -o allow_other 允许一般用户访问桶

  • --file-mode value 文件的权限位

  • --dir-mode value 文件夹的权限位

  • --profile value value指定文件~/.aws/credentials 中的哪个密钥访问对象存储,例如 上述的default 、user0。不填则默认为匿名用户访问。

  1. 检查是否挂载成功
df -h

将火山引擎上的桶tos01(桶名)挂载到/mnt(挂载点)上,如图显示挂载成功

现在切换到其他用户,发现一般用户也可以访问

方法二:设置goofys自动挂载tos桶,开机自动挂载

  1. 执行命令编辑文件vim /etc/fstab,在末尾中插入如下
/root/goofys#<bucket>   <mountpoint>   fuse   _netdev,allow_other,--file-mode=0666,--dir-mode=0777,--endpoint=https://tos-s3-cn-beijing.ivolces.com/,--profile=default    0       0
  1. 执行mount -a即可挂载

说明

  • /root/goofys是goofys安装的位置
  • 如果未挂载成功,在上述命令中增加--debug_s3,重启后查看系统日志,查看自动挂载失败原因。

卸载桶

通过以下命令可以实现桶的卸载

fusermount -u <mountpoint>

常见问题

问题1:root用户可以访问挂载,但是一般用户却不能访问

  1. 可能原因1:挂载点所在的目录一般用户无法访问。检查挂载点,比如挂载点在/root下面,一般用户无法访问/root

  2. 可能原因2:挂载命令里面少写参数-o allow_other。这个参数表明允许一般用户访问挂载

  3. 可能原因3:fuse文件系统未安装

解决方案:下载fuse文件系统https://blog.csdn.net/pc620/article/details/6059118/

  • 安装包下载地址:https://github.com/libfuse/libfuse/releases,以安装fuse2.9.6为例
wget https://github.com/libfuse/libfuse/releases/download/fuse-2.9.6/fuse-2.9.6.tar.gz
tar zxvf fuse-2.9.6.tar.gz
cd fuse-2.9.6
./configure
  • 安装fuse
./configure
make
make install  #注意:这一步一定要在root用户下进行
  • 查看fuse是否挂载成功: lsmod|grep fuse

若没成功则可通过:modprobe fuse 命令挂载fuse。