我刚刚在默认项目"我的第一个项目"下创建了一个新存储桶。
我不小心删除了存储桶上的所有权限。是否可以恢复默认权限?
我不需要存储桶,因此可以将其删除,但我也没有权限这样做。
更新
澄清一下,我拥有项目和存储桶。其他用户不应具有访问权限。 根据@gso_gabriel的建议,我尝试了以下方法:
我可以列出存储桶中的对象:
> gsutil ls -r gs://my-bucket-name/
gs://my-bucket-name/name-of-my-file
我无法更改 ACL:
> gsutil defacl set public-read gs://my-bucket-name/
Setting default object ACL on gs://my-bucket-name/...
AccessDeniedException: 403 my-email-address does not have storage.buckets.update access to the Google Cloud Storage bucket.
> gsutil acl set -R public-read gs://my-bucket-name/
Setting ACL on gs://my-bucket-name/name-of-my-file...
AccessDeniedException: 403 my-email-address does not have storage.objects.update access to the Google Cloud Storage object.
我认为没有ACL(见最后一行(:
> gsutil ls -L gs://my-bucket-name/
gs://my-bucket-name/name-of-my-file
Creation time: Wed, 10 Jun 2020 01:31:20 GMT
Update time: Wed, 10 Jun 2020 01:31:20 GMT
Storage class: STANDARD
Content-Length: 514758
Content-Type: application/octet-stream
Hash (crc32c): AD4ziA==
Hash (md5): W3aLFrdB/eF85IZux9UVfQ==
ETag: CIPc1uiM9ukCEAE=
Generation: 1591752680386051
Metageneration: 1
ACL: []
更新 2
@gso_gabriel建议的 gcloud 命令的输出是:
> gcloud projects get-iam-policy my_project_ID
bindings:
- members:
- user:my-email-address
role: roles/owner
etag: BwWnsC5jgkw=
version: 1
我还尝试了 GCP 控制台的 IAM 和管理员部分中的"策略疑难解答"。它显示了以下内容:
- 我可以在项目上创建存储桶和对象,例如已启用 storage.buckets.create
- 我无法删除项目中的存储桶和对象,例如 storage.buckets.delete 被禁用
- 我无法获取项目上的存储桶和对象的 IAM 策略,例如 storage.buckets.getIamPolicy 被禁用
与项目关联的"角色"包括存储管理员组中的权限(请参阅 GCP 控制台的 IAM 和管理员部分中的角色子部分(。 即 storage.objects.delete 等权限应该已启用,但策略疑难解答显示未授予这些权限。
正如此处所解释的那样,如果您是存储桶的所有者 - 或者至少有权访问拥有它的账户 - 您应该能够修改它的 ACL 并添加权限。
以所有者身份登录后,您只需运行命令gsutil acl set -R public-read gs://bucketName
即可为用户提供对存储桶的公共读取。您还可以在此处检查完全默认的权限。如果您不确定哪个帐户是Owner
,请运行以下命令 - 如此处所示 - 它将返回所有具有权限的帐户,包括一个将提及Owner
的帐户。
gsutil ls -L gs://your-bucket/your-object
回报应该是这样的。
{
"email": "your-service-account@appspot.gserviceaccount.com",
"entity": "user-your-service-account@appspot.gserviceaccount.com",
"role": "OWNER"
}
让我知道这些信息是否对您有帮助!