使用非ROOT用户挂载ossfs

公司的应用服务器迁移,考虑到安全问题要求使用非root用户启动应用。因此需要把阿里云oss挂载给非root用户

挂载文件系统

下面,我们以 support 账号为例子。看看如何挂载 ossfs 给 support 账号

  • 进入 阿里云帮助中心 下载最新的ossfs安装包
  • 安装依赖以及下载的安装包
    # 安装依赖包
    yum install -y fuse fuse-libs
    rpm -ivh ossfs_1.91.1_centos7.0_x86_64.rpm 
    
  • 配置账号访问信息
    echo BucketName:yourAccessKeyId:yourAccessKeySecret > /etc/passwd-ossfs
    chmod 640 /etc/passwd-ossfs
    chown support:support /etc/passwd-ossfs 
    
  • 查看 support 用户的 UIDGID 并记录下来
    [root@localhost ~]# id support
    uid=1000(support) gid=1000(support) groups=1000(support)
    
  • 编辑 /etc/fuse.conf, 取消 user_allow_other 前的注释
  • 切换到 support 用户,挂载 ossfs
    # 参数说明
    # $Bucket     Bucket名
    # $PATH       实际挂载的路径
    # $URL        Bucket的Endpoint
    # $UID        support用户的uid,这里为 1000
    # $GID        support用户的gid,这里为 1000
    # $File       passwd-ossfs文件路径,这里为 /etc/passwd-ossfs。
    /usr/local/bin/ossfs $Bucket $Path -ourl=$URL -ouid=$UID -ogid=$GID -o passwd_file=$File -oallow_other -o mp_umask=022
    
    到这里我们其实已经可以正常使用该存储空间了,为了确保开机后能自动挂载,我们还需要添加开机自动挂载脚本。

设置开机启动

以下的操作以 root 执行,还是以挂载文件给 support 用户为例子。

  • 创建 /etc/init.d/ossfs 启动脚本(请自行替换文件中的参数)
    #! /bin/bash
    #
    # ossfs      Automount Aliyun OSS Bucket in the specified direcotry.
    #
    # chkconfig: 2345 90 10
    # description: Activates/Deactivates ossfs configured to start at boot time.
    # 开机挂载oss,采用此种方式挂载避免修改/etc/fstab ,导致挂载失败而系统无法启动。
    # 加 -o allow_other 允许非root用户操作避免因权限问题导致无法操作oss目录
    su - support -c "/usr/local/bin/ossfs $Bucket $Path -ourl=$URL -ouid=$UID -ogid=$GID -o passwd_file=$File -oallow_other -o mp_umask=022"
    
  • 设置执行权限和开机启动
    chmod +x ossfs 
    chkconfig ossfs on
    
    设置完成后重启服务器可以看到oss已经正常挂载了,并且 root 用户和 support 用户均能正常访问

卸载文件系统

  • 使用root用户卸载挂载目录(以/data/ossfs为例)
    umount -l /data/ossfs
    
  • 使用普通用户卸载挂载目录(以/data/ossfs为例)
    fusermount /data/ossfs
    

参考文献

ossfs如何通过非root用户挂载Bucket到ECS实例

本文链接 https://blog.kimi360.top/bc04bb10b5b1/

本文采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。