日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

C++管理文件訪問(wèn)權(quán)限

更新時(shí)間:
重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。

本文介紹如何管理文件訪問(wèn)權(quán)限。

注意事項(xiàng)

  • 本文以華東1(杭州)外網(wǎng)Endpoint為例。如果您希望通過(guò)與OSS同地域的其他阿里云產(chǎn)品訪問(wèn)OSS,請(qǐng)使用內(nèi)網(wǎng)Endpoint。關(guān)于OSS支持的RegionEndpoint的對(duì)應(yīng)關(guān)系,請(qǐng)參見(jiàn)OSS地域和訪問(wèn)域名

  • 本文以OSS域名新建OSSClient為例。如果您希望通過(guò)自定義域名、STS等方式新建OSSClient,請(qǐng)參見(jiàn)新建OssClient

  • 要設(shè)置Object訪問(wèn)權(quán)限,您必須具有oss:PutObjectAcl權(quán)限;要獲取Object訪問(wèn)權(quán)限,您必須具有oss:GetObjectAcl權(quán)限。具體操作,請(qǐng)參見(jiàn)RAM用戶授權(quán)自定義的權(quán)限策略

讀寫(xiě)權(quán)限類型

Object包含以下4種讀寫(xiě)權(quán)限:

說(shuō)明

Object的訪問(wèn)權(quán)限優(yōu)先級(jí)高于Bucket的訪問(wèn)權(quán)限。例如,Bucket的訪問(wèn)權(quán)限為私有,而Object的訪問(wèn)權(quán)限是公共讀,則任何人(包括匿名用戶)都可以對(duì)該Object進(jìn)行讀操作。

權(quán)限類型

描述

權(quán)限值

繼承Bucket(默認(rèn)權(quán)限)

當(dāng)Object未設(shè)置訪問(wèn)權(quán)限時(shí),該Object遵循Bucket的讀寫(xiě)權(quán)限,即Bucket是什么權(quán)限,Object就是什么權(quán)限。

CannedAccessControlList.Default

私有

只有Object的擁有者可以對(duì)該Object進(jìn)行讀寫(xiě)操作,其他人無(wú)法訪問(wèn)該Object。

CannedAccessControlList.Private

公共讀

只有該Object的擁有者可以對(duì)該Object進(jìn)行寫(xiě)操作,任何人(包括匿名訪問(wèn)者)都可以對(duì)該Object進(jìn)行讀操作。

警告

互聯(lián)網(wǎng)上任何用戶都可以對(duì)該Object進(jìn)行訪問(wèn),這有可能造成您數(shù)據(jù)的外泄以及費(fèi)用激增,請(qǐng)謹(jǐn)慎操作。

CannedAccessControlList.PublicRead

公共讀寫(xiě)

任何人(包括匿名訪問(wèn)者)都可以對(duì)該Object進(jìn)行讀寫(xiě)操作。

警告

互聯(lián)網(wǎng)上任何用戶都可以對(duì)該Object進(jìn)行訪問(wèn),并且向該Object寫(xiě)入數(shù)據(jù)。這有可能造成您數(shù)據(jù)的外泄以及費(fèi)用激增,如果被人惡意寫(xiě)入違法信息還可能會(huì)侵害您的合法權(quán)益。除特殊場(chǎng)景外,不建議您配置公共讀寫(xiě)權(quán)限。

CannedAccessControlList.PublicReadWrite

設(shè)置文件訪問(wèn)權(quán)限

以下代碼用于設(shè)置指定Object的訪問(wèn)權(quán)限:

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* 初始化OSS賬號(hào)信息。*/
            
    /* yourEndpoint填寫(xiě)B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫(xiě)為https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    /* yourRegion填寫(xiě)B(tài)ucket所在地域?qū)?yīng)的Region。以華東1(杭州)為例,Region填寫(xiě)為cn-hangzhou。*/
    std::string Region = "yourRegion";
    /* 填寫(xiě)B(tài)ucket名稱,例如examplebucket。*/
    std::string BucketName = "examplebucket";
    /* 填寫(xiě)Object完整路徑,完整路徑中不能包含Bucket名稱,例如exampledir/exampleobject.txt。*/
    std::string ObjectName = "exampledir/exampleobject.txt";


    /* 初始化網(wǎng)絡(luò)等資源。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* 設(shè)置文件訪問(wèn)權(quán)限。*/
    SetObjectAclRequest request(BucketName, ObjectName);
    request.setAcl(CannedAccessControlList::Private);
    auto outcome = client.SetObjectAcl(request);

    if (!outcome.isSuccess()) {
        /* 異常處理。*/
        std::cout << "SetObjectAcl fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* 釋放網(wǎng)絡(luò)等資源。*/
    ShutdownSdk();
    return 0;
}

獲取文件訪問(wèn)權(quán)限

以下代碼用于獲取指定Object的訪問(wèn)權(quán)限:

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* 初始化OSS賬號(hào)信息。*/
            
    /* yourEndpoint填寫(xiě)B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫(xiě)為https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    /* yourRegion填寫(xiě)B(tài)ucket所在地域?qū)?yīng)的Region。以華東1(杭州)為例,Region填寫(xiě)為cn-hangzhou。*/
    std::string Region = "yourRegion";
    /* 填寫(xiě)B(tài)ucket名稱,例如examplebucket。*/
    std::string BucketName = "examplebucket";
    /* 填寫(xiě)Object完整路徑,完整路徑中不能包含Bucket名稱,例如exampledir/exampleobject.txt。*/
    std::string ObjectName = "exampledir/exampleobject.txt";

    /* 初始化網(wǎng)絡(luò)等資源。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* 獲取文件訪問(wèn)權(quán)限。*/
    GetObjectAclRequest request(BucketName, ObjectName);
    auto outcome = client.GetObjectAcl(request);

    if (!outcome.isSuccess()) {
        /* 異常處理。*/
        std::cout << "GetObjectAcl fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }
    else { 
        std::cout << " GetObjectAcl success, Acl:" << outcome.result().Acl() << std::endl;
    }

    /* 釋放網(wǎng)絡(luò)等資源。*/
    ShutdownSdk();
    return 0;
}

相關(guān)文檔

  • 關(guān)于設(shè)置Object訪問(wèn)權(quán)限的API接口說(shuō)明,請(qǐng)參見(jiàn)PutObjectACL

  • 關(guān)于獲取Object訪問(wèn)權(quán)限的API接口說(shuō)明,請(qǐng)參見(jiàn)GetObjectACL