Todos os produtos
Search
Central de documentação

Object Storage Service:Gerencie permissões de acesso a arquivos (PHP SDK V1)

Última atualização: Jul 03, 2026

Este tópico descreve como gerenciar permissões de acesso a arquivos.

Pré-requisitos

  • Este tópico usa o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para obter detalhes sobre regiões e endpoints compatíveis, consulte Regiões e endpoints.

  • Este tópico demonstra como criar uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como uso de domínio personalizado ou autenticação com credenciais do Security Token Service (STS), consulte Criar um OssClient.

  • Para definir permissões de acesso a arquivos, você precisa da permissão oss:PutObjectAcl. Para consultar permissões de acesso a arquivos, você precisa da permissão oss:GetObjectAcl. Para mais informações, consulte Conceder políticas de acesso personalizadas a um usuário RAM.

Tipos de listas de controle de acesso

Os arquivos têm quatro tipos de listas de controle de acesso (ACLs):

Permissões de acesso

Descrição

Valor da permissão de acesso

Herdar do Bucket

O arquivo herda as permissões de acesso do bucket.

default

Privado

O proprietário do arquivo e os usuários autorizados têm permissões de leitura e escrita. Outros usuários não podem acessar o arquivo.

private

Leitura pública

O proprietário do arquivo e os usuários autorizados têm permissões de leitura e escrita. Outros usuários têm apenas permissão de leitura. Use esta permissão com cautela.

public-read

Leitura e escrita públicas

Todos os usuários têm permissões de leitura e escrita no arquivo. Use esta permissão com cautela.

public-read-write

As ACLs de arquivo têm prioridade sobre as ACLs de bucket. Por exemplo, se um bucket for privado, mas um arquivo nele estiver configurado como leitura e escrita públicas, todos os usuários terão permissões de leitura e escrita nesse arquivo. Se um arquivo não tiver uma ACL configurada, ele herdará a ACL do bucket.

Definir permissões de acesso a arquivos

O exemplo de código a seguir mostra como configurar a ACL de um objeto:

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
$provider = new EnvironmentVariableCredentialsProvider();
// The Endpoint is set to China (Hangzhou) in this example. Specify the actual Endpoint.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";
$object = "yourObjectName";
// Set the file ACL to public-read. The default is to inherit the bucket's ACL.
$acl = "public-read";
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->putObjectAcl($bucket, $object, $acl);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
            

Obter permissões de acesso a arquivos

O exemplo de código a seguir mostra como consultar a ACL de um objeto:

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
$provider = new EnvironmentVariableCredentialsProvider();
// The Endpoint is set to China (Hangzhou) in this example. Specify the actual Endpoint.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";
$object = "yourObjectName";
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $objectAcl = $ossClient->getObjectAcl($bucket, $object);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
var_dump($objectAcl);