linux - 如果文件可使用 s3 命令公开访问,如何显示?
问题描述
我尝试了以下命令来显示我的 S3 存储桶中存在的所有文件:
aws s3 ls -a s3://project-files
我得到的输出是:
2021-06-21 19:18:27 184163 1624283306646-Plastic_challenge.pdf
2021-06-21 19:25:29 184163 1624283728863-water_toxic_challenge.pdf
2021-06-21 19:26:21 184163 1624283780648-water_toxic_challenge.pdf
2021-06-21 19:38:17 184163 1624284496754-plastic_solution.pdf
但在这里,它并没有暗示哪些文件可以公开访问。我需要看到如下内容:
2021-06-21 19:18:27 184163 PUBLIC 1624283306646-Plastic_challenge.pdf
2021-06-21 19:25:29 184163 Can be made Public 1624283728863-water_toxic_challenge.pdf
2021-06-21 19:26:21 184163 PUBLIC 1624283780648-water_toxic_challenge.pdf
2021-06-21 19:38:17 184163 Can be made Public 1624284496754-plastic_solution.pdf
解决方案
对象可以通过两种方式公开访问:
- 对象本身的访问控制列表 (ACL) 设置可能为
public
,或 - 存储桶可以有一个存储桶策略,允许公共访问存储桶或存储桶的一部分
没有一个 API 调用可以列出对象并确定它们是否具有公共 ACL。需要单独调用来检索每个对象的权限以确定它们是否是公共的。
同样,没有任何 API 调用可以列出存储桶中的对象并确定存储桶策略是否将它们公开。需要解析存储桶策略中的逻辑以确定存储桶的哪些部分是公开的。存储桶策略中的其他规则可能会使这进一步复杂化,例如,这些规则可能仅使对象可以从给定的 IP 地址公开访问。
如果您希望专门阻止公共访问,则可以在存储桶上激活Block S3 Public Access,这可以禁用通过存储桶策略或通过对象级 ACL 授予的公共访问权限。
推荐阅读
- javascript - 需要使用节点 js 来自多个输出的单个数组
- c# - 如何在 C# 中获取变量并将其存储在数据库中?
- angular - 如何使 ngx-mat-intl-tel-input 的搜索字段成为焦点?
- amazon-web-services - 如何升级 CDK 引导程序?
- flutter - 移动到其他页面时无法保持底部导航栏颤动
- javascript - 像 (if:) 这样的更改需要在它们之间使用 + 组合
- c# - 锁定一个对象和所有子对象
- android - 如何在 Flutter 中使用 Google Play Install Referrer
- javascript - 如何从 CDN 将 javascript 添加到 webflow 站点
- google-api - FetchError:对 https://www.googleapis.com/oauth2/v4/token 的请求失败