ACL是授予存儲空間(Bucket)和文件(Object)訪問權限的訪問策略。您可以在創建Bucket或上傳Object時設置ACL,也可以在創建Bucket或上傳Object后的任意時間內修改ACL。set-acl命令用于設置或修改Bucket或Object的訪問權限ACL。
注意事項
要設置或修改Bucket ACL,您必須具有
oss:PutBucketAcl
權限;要設置或修改Object ACL,您必須具有oss:PutObjectAcl
權限;要批量修改Object ACL,您必須具有oss:PutObjectAcl
和oss:ListObjects
權限。具體操作,請參見為RAM用戶授權自定義的權限策略。從ossutil 1.6.16版本開始,命令行中Binary名稱支持直接使用ossutil,您無需根據系統刷新Binary名稱。如果您的ossutil版本低于1.6.16,則需要根據系統刷新Binary名稱。更多信息,請參見命令行工具ossutil命令參考。
當您在OSS ON云盒中使用該命令時:
將配置文件中的Endpoint替換為云盒Endpoint。更多信息,請參見云盒Endpoint。
在本文已有示例的基礎上添加--sign-version、--region以及--cloudbox-id選項。關于這三個選項的具體用法,請參見通用選項。
設置或修改Bucket ACL
命令格式
ossutil set-acl oss://bucketname acl -b [--retry-times <value>]
參數及選項說明如下:
配置項
說明
bucketname
待設置或修改ACL的Bucket名稱。
acl
Bucket的讀寫權限ACL。取值如下:
private(默認值):只有該Bucket的擁有者可以對該Bucket內的文件進行讀寫操作,其他人無法訪問該Bucket內的文件。
public-read:只有Bucket擁有者可以對該Bucket內的文件進行寫操作,其他用戶(包括匿名訪問者)都可以對該Bucket中的文件進行讀操作。這有可能造成您數據的外泄以及費用激增,若被人惡意寫入違法信息還可能會侵害您的合法權益。除特殊場景外,不建議您配置公共讀寫權限。
public-read-write:任何人(包括匿名訪問者)都可以對該Bucket內文件進行讀寫操作。這有可能造成您數據的外泄以及費用激增,請謹慎操作。
-b
不添加此選項,默認對Object設置ACL。如果需要對Bucket設置ACL時,須添加此選項。
--retry-times
發生錯誤后的重試次數。默認值為10,取值范圍為1~500。
使用示例
設置目標存儲空間examplebucket的ACL為private。
ossutil set-acl oss://examplebucket private -b
設置或修改Object ACL
命令格式
ossutil set-acl oss://bucketname[/prefix] acl [-r] [--include <value>] [--exclude <value>] [--version-id <value>] [--job <value>] [--retry-times <value>] [--encoding-type <value>]
參數及選項說明如下:
配置項
說明
bucketname
Bucket名稱。
prefix
Bucket下的資源,例如目錄、文件等。
acl
Object的讀寫權限ACL。取值如下:
default:繼承Bucket的讀寫權限。
private(默認值):只有該Bucket的擁有者可以對該Bucket內的文件進行讀寫操作,其他人無法訪問該Bucket內的文件。
public-read:只有Bucket擁有者可以對該Bucket內的文件進行寫操作,其他用戶(包括匿名訪問者)都可以對該Bucket中的文件進行讀操作。這有可能造成您數據的外泄以及費用激增,若被人惡意寫入違法信息還可能會侵害您的合法權益。除特殊場景外,不建議您配置公共讀寫權限。
public-read-write:任何人(包括匿名訪問者)都可以對該Bucket內文件進行讀寫操作。這有可能造成您數據的外泄以及費用激增,請謹慎操作。
-r
如果指定該選項時,ossutil會對Bucket下所有符合prefix條件的Object設置ACL。如果不指定該選項,則ossutil只對cloud_url中指定的單個Object設置ACL。
--include
包含符合指定條件的所有Object。
更多信息,請參見include和exclude選項。
--exclude
不包含任何符合指定條件的Object。
更多信息,請參見include和exclude選項。
--version-id
Object的指定版本ID。僅適用于已開啟或暫停版本控制狀態Bucket下的Object。
--job
多文件操作時的并發任務數,默認值為3,取值范圍為1~10000。
--retry-times
發生錯誤后的重試次數。默認值為10,取值范圍為1~500。
--encoding-type
對
oss://bucket_name
之后的prefix進行編碼,取值為url。如果不指定該選項,則表示prefix未經過編碼。使用示例
將目標存儲空間examplebucket下的exampleobject.txt文件的讀寫權限ACL設置為private。
ossutil set-acl oss://examplebucket/exampleobject.txt private
將目標存儲空間examplebucket下指定版本ID為
CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****
的exampleobject.txt文件的讀寫權限ACL設置為private。ossutil set-acl oss://examplebucket/exampleobject.txt private --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****
將目標存儲空間examplebucket下所有符合指定前綴為test的文件讀寫權限ACL設置為default。
ossutil set-acl oss://examplebucket/test default -r
將目標存儲空間examplebucket下所有后綴為.jpg的文件讀寫權限設置為private。
ossutil set-acl oss://examplebucket private --include "*.jpg" -r
將目標存儲空間examplebucket下文件名稱包含abc,且后綴不是.png和.txt的文件讀寫權限設置為default。
ossutil set-acl oss://examplebucket default --include "*abc*" --exclude "*.png" --exclude "*.txt" -r
通用選項
當您需要通過命令行工具ossutil切換至另一個地域的Bucket時,可以通過-e選項指定該Bucket所屬的Endpoint。當您需要通過命令行工具ossutil切換至另一個阿里云賬號下的Bucket時,可以通過-i選項指定該賬號的AccessKey ID,并通過-k選項指定該賬號的AccessKey Secret。
例如您需要獲取另一個阿里云賬號下,華東2(上海)地域下名為testbucket的存儲空間設置讀寫權限ACL為private,命令如下:
ossutil set-acl oss://testbucket private -b -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****
關于此命令的其他通用選項的更多信息,請參見通用選項。