minio客户端mc的使用
Minio Client 简称mc,是用来访问MinIO服务的命令行客户端,对ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案,它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。
[TOC]
mc的安装与配置
- 下载最新版的 mc客户端
curl -sL http://iso.sqlfans.cn/linux/mc.2023-08-15 -o /usr/bin/mc
chmod +x /usr/bin/mc
mc用法
连接minio服务器
- 连接minio服务器,注意使用api端口9000,而不是Console端口9100
mc config host remove myminio
mc config host add myminio http://10.30.3.231:9000 minioadmin minioadmin --api s3v4
mc config host list
管理bucket及object
- mb创建bucket或目录、ls查看bucket、cp上传或下载文件、mv移动文件、rm删除文件、rb删除bucket
mc config host remove myminio
mc config host add myminio http://10.30.3.231:9000 minioadmin minioadmin --api s3v4
mc mb myminio/bucket111 #.创建bucket,示例 bucket111
mc ls myminio #.列出所有的bucket
mc cp /etc/hosts myminio/bucket111/ #.上传本地文件到bucket
mc cp /etc/sysconfig myminio/bucket111 --recursive #.上传本地目录到bucket
mc cp myminio/bucket111/hosts /tmp/ #.下载bucket中的文件到本地目录
mc cat myminio/bucket111/hosts #.查看bucker中的文件内容
mc mb myminio/bucket111/222 #.在bucket中创建目录
mc mv myminio/bucket111/hosts myminio/bucket111/222/ #.移动文件
mc rm myminio/bucket111/222/hosts #.删除bucket中的文件
mc rm myminio/bucket111 --recursive --force #.删除bucket下所有的目录和文件
mc rb myminio/bucket111 --force #.删除bucket
设置访问权限
- 利用
mc anonymous
设置访问权限策略
mc config host remove myminio
mc config host add myminio http://10.30.3.231:9000 minioadmin minioadmin --api s3v4
mc mb myminio/bucket222 #.创建bucket用于测试,默认访问权限为 private
mc anonymous set download myminio/bucket222 #.设置指定bucket的访问权限为 readonly,即永久下载
mc anonymous set upload myminio/bucket222 #.设置指定bucket的访问权限为 writeonly
mc anonymous set public myminio/bucket222 #.设置指定bucket的访问权限为 readwrite
mc anonymous get myminio/bucket222 #.查看指定bucket的访问权限
mc admin policy list myminio/bucket222 #.查看指定bucket可用的策略列表
mc anonymous list myminio/bucket222 #.列出指定bucket的策略
mc rb myminio/bucket222 #.删除这个测试的bucket
管理用户和角色
- 利用
mc admin
管理用户和角色
mc admin user add myminio myuser Admin_147 #.添加用户,示例 myuser
mc admin user disable myminio myuser #.禁用特定的用户
mc admin user enable myminio myuser #.启用特定的用户
mc admin user ls myminio #.查看用户,包含状态信息
mc admin user info myminio myuser #.查看特定用户的详细信息
mc admin group add myminio mygroup myuser #.添加用户组,示例 mygroup,并将 myuser 添加到 mygoup
mc admin group disable myminio mygroup #.禁用特定的用户组
mc admin group enable myminio mygroup #.启用特定的用户组
mc admin group ls myminio #.列出用户组
mc admin group info myminio mygroup #.查看特定用户组的详细信息
mc admin user rm myminio myuser #.删除特定的用户
mc admin group rm myminio mygroup #.删除特定的用户组,先删用户再删用户组,不可直接删除非空的用户组
mc admin policy --help #.配置用户或用户组的策略
其他常用操作
mc version #.输出版本信息
mc update #.更新mc到最新版本
mc tree #.以树型结构列出buckets and objects
mc diff #.对两个文件夹或者存储桶比较差异
mc share #.生成用于共享的URL
特定场景需求
将iso目录设置永久有效
- 需求:通过
mc share
分享的链接有效期最多7天,如何设置文件访问链接永久有效呢 - 解决:通过 mc 设置对应 bucket 的访问权限为 download
mc config host remove myminio
mc config host add myminio http://10.30.3.231:9000 minioadmin minioadmin --api s3v4
#.通过 mc share 分享的链接最多支持 7 days
mc mb myminio/bucket333
mc mb myminio/bucket333/iso
mc cp /etc/hosts myminio/bucket333/iso/
mc share download --recursive --expire=120h myminio/bucket333/iso
#.设置对应bucket的访问权限为 download 即永久有效
mc anonymous set download myminio/bucket333/iso
mc anonymous get myminio/bucket333/iso
利用mc配置多用户权限策略
- 场景1:给用户应用全局策略,比如
readwrite
#.定义alias,比如 myminio
mc alias set myminio http://10.30.4.150:9000 minioadmin minioadmin --api s3v4
mc alias list
#.新增存储桶,比如 bucket123
mc mb -p myminio/bucket123
#.新增用户,比如 user123
mc admin user add myminio user123 password123
mc admin user list myminio
#.新增用户组,比如 group123
mc admin group add myminio group123 user123
mc admin group list myminio
#.给用户应用全局策略,RELEASE.2023-05-27之后请使用attach附加策略
# mc admin policy set myminio readwrite user=user123
mc admin policy attach myminio readwrite --user user123
- 场景2:给用户应用自定义策略,比如
getonly
#.新增存储桶,比如 bucket456
mc mb -p myminio/bucket456
#.创建应用自定义策略文件,比如仅针对 bucket456 这个桶
cat > /opt/getonly.json << EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket456/*"
],
"Sid": ""
}
]
}
EOF
#.使用getonly.json策略文件,创建新的策略
mc admin policy create myminio getonly /opt/getonly.json
#.为用户应用自定义策略
mc admin policy attach myminio getonly --user user123