在实验过程中,我无意中为不应公开的存储桶中的所有用户添加了默认读取访问权限。我使用了以下命令:
gsutil defacl ch -d allUsers gs://my-bucket
意识到我的错误后,我尝试使用以下命令删除默认的读取访问权限:
gsutil defacl get gs://my-bucket
但是,当我检查时,删除无效!当我上传新文件时,它仍然为公众提供读取权限。当我检查以下内容时:
wb.Write(Response.Body)
它仍然显示allUsers的读取访问权限。
这是gsutil函数的错误吗?目前我使用的是gsutil版本4.34。
还有其他方法可以更改Google云端存储分区的allUsers的默认访问权限吗?如果还有其他方法,请让我知道,谢谢!
答案 0 :(得分:2)
我尝试多次重现此问题,但无济于事。恐怕如果无法访问项目的元数据和配置,很难解决这种情况;因为在这一点上确实需要这样做,以便找出可能出了问题的地方。
我是Google Cloud Support的员工-我的建议是在问题跟踪器here上打开一个私人问题,注明您的项目编号和受影响的Cloud Storage存储桶。另外,请确保还包括此StackOverflow帖子的链接。
最后,一旦您创建它,请让我知道问题ID或指向私人问题的链接,以便我们尽快查看它。
编辑:
解决方案是运行以下gsutil command,该命令将默认ACL设置为project-private ACL的默认条目:
gsutil defacl set project-private gs://my-bucket
此问题发生在ACL中只有一个条目的情况下,即使它可以正确更新所有内容,也无法删除它。
答案 1 :(得分:1)
我在设置为公开的存储桶中的单个对象遇到了同样的问题。我只能在向对象添加新权限后删除 allUsers 权限 - 即使使用建议的“project-private”命令也不起作用。