Todos los productos
Search
Centro de documentos

Object Storage Service:Gestión de permisos de acceso a archivos (PHP SDK V1)

Última actualización: Sep 22, 2026

Este tema describe cómo gestionar los permisos de acceso a archivos.

Requisitos previos

  • En este tema se utiliza el endpoint público de la región China (Hangzhou). Para acceder a OSS desde otros servicios de Alibaba Cloud en la misma región, utilice un endpoint interno. Para obtener más información sobre las regiones y los endpoints compatibles, consulte Regions and endpoints.

  • En este tema se muestra cómo crear una instancia de OSSClient con un endpoint de OSS. Para conocer configuraciones alternativas, como usar un dominio personalizado o autenticarse con credenciales de Security Token Service (STS), consulte Create an OssClient.

  • Para establecer los permisos de acceso a un archivo, debe contar con el permiso oss:PutObjectAcl. Para consultar los permisos de acceso a un archivo, necesita el permiso oss:GetObjectAcl. Para obtener más información, consulte Grant custom access policies to a RAM user.

Tipos de listas de control de acceso

Los archivos cuentan con cuatro tipos de listas de control de acceso (ACL):

Permisos de acceso

Descripción

Valor del permiso de acceso

Inherit from Bucket

El archivo hereda los permisos de acceso del bucket.

default

Private

El propietario del archivo y los usuarios autorizados tienen permisos de lectura y escritura sobre él. Los demás usuarios no pueden acceder al archivo.

private

Public-read

El propietario del archivo y los usuarios autorizados tienen permisos de lectura y escritura sobre él. Los demás usuarios solo cuentan con permisos de lectura. Utilice este permiso con precaución.

public-read

Public-read-write

Todos los usuarios tienen permisos de lectura y escritura sobre el archivo. Utilice este permiso con precaución.

public-read-write

Las ACL de los archivos tienen mayor prioridad que las ACL de los buckets. Por ejemplo, si un bucket es privado pero un archivo dentro de él tiene configurado public-read-write, todos los usuarios tendrán permisos de lectura y escritura sobre ese archivo. Si un archivo no tiene una ACL configurada, heredará la ACL de su bucket.

Establecer permisos de acceso a archivos

A continuación se muestra un ejemplo de código para configurar la ACL de un 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");
            

Consultar permisos de acceso a archivos

A continuación se muestra un ejemplo de código para consultar la ACL de un 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);