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命令參考。
設定或修改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****
關於此命令的其他通用選項的更多資訊,請參見通用選項。