{"meta":{"title":"关于 GitHub Packages 的权限","intro":"了解如何管理包的权限。","product":"GitHub Packages","breadcrumbs":[{"href":"/zh/packages","title":"GitHub Packages"},{"href":"/zh/packages/learn-github-packages","title":"了解 GitHub Packages"},{"href":"/zh/packages/learn-github-packages/about-permissions-for-github-packages","title":"关于权限"}],"documentType":"article"},"body":"# 关于 GitHub Packages 的权限\n\n了解如何管理包的权限。\n\n包的权限可以将范围限定为用户、组织或存储库。\n\n## 用户/组织作用域包的精细权限\n\n具有精细权限的包仅限于个人帐户或组织。 您可以从与包相连（或链接）的仓库分别更改包的访问控制和可见性。\n\n以下 GitHub Packages 注册表支持精细权限。\n\n* Container registry\n* npm 注册表 <!-- markdownlint-disable-line GHD034 -->\n* NuGet 注册表\n* RubyGems 注册表\n\n## 仓库作用域包的权限\n\n存储库范围的包会继承发布包的存储库的权限和可见性。 通过转到存储库的主页并单击页面右侧的“包”链接，可以找到范围限定为存储库的包。\n有关详细信息，请参阅 [将仓库连接到软件包](/zh/packages/learn-github-packages/connecting-a-repository-to-a-package)。\n\n以下 GitHub Packages 注册表 **仅** 支持存储库范围的权限。\n\n* Apache Maven 注册表\n* Gradle 注册表\n\n其他注册表，可以选择允许将包限定为用户或组织，或链接到存储库。\n\n## 包的可见性和访问权限\n\n如果包属于支持粒度权限的注册表，对包具有管理员权限的任何人都可以将包设置为专用或公共，并且可以授予对包的访问权限，这些权限不同于在组织和存储库级别设置的权限。 有关支持精细权限的注册表的列表，请参阅 [关于 GitHub Packages 的权限](/zh/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)。\n\n在大多数注册表中，若要拉取包，必须使用 personal access token 或 `GITHUB_TOKEN` 进行身份验证，无论该包是公共包还是专用包。 但是，在 Container registry 中，公共包支持匿名访问，无需身份验证或通过 CLI 登录即可进行拉取。\n\n> \\[!NOTE]\n> 如果发布链接到存储库的包，则默认情况下，该包会从链接的存储库继承其权限。 要访问包的精细权限设置，必须移除该包的继承权限。 如果你是组织的所有者，则可以禁用针对组织范围的所有新包的权限的自动继承。 有关详细信息，请参阅 [配置包的访问控制和可见性](/zh/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#selecting-whether-a-package-inherits-permissions-from-a-repository) 和 [配置包的访问控制和可见性](/zh/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#disabling-automatic-inheritance-of-access-permissions-in-an-organization)。\n\n你发布包时，会自动获取对包的管理员权限。 如果将包发布到组织，则组织中具有 `owner` 角色的任何人也会获得包的管理员权限。\n\n对于范围限定为个人帐户的包，可以授予任何人访问角色。 对于范围限定为组织的包，可以为组织中的任何人或团队授予访问角色。\n\n如果使用 GitHub Actions 工作流来管理包，可以通过 ：使用包的设置中“管理 Actions 访问”下的“添加存储库”\\*\\*\\*\\* 按钮 向存储工作流的存储库授予访问角色。 有关详细信息，请参阅“[配置包的访问控制和可见性](/zh/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-workflow-access-to-your-package)”。\n\n| 权限  | 访问说明                                             |\n| --- | ------------------------------------------------ |\n| 读取  | 可以下载包。 <br> 可以读取包元数据。                            |\n| 写入  | 可以上传和下载此包。 <br> 可以读取和写入包元数据。                     |\n| 管理员 | 可以上传、下载、删除和管理此包。 <br> 可以读取和写入包元数据。 <br> 可以授予包权限。 |\n\n> \\[!NOTE]\n> GitHub Actions 工作流使用 REST API 删除和还原包的功能目前为 公开预览，可能随时更改。\n\n有关详细信息，请参阅“[配置包的访问控制和可见性](/zh/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)”。\n\n## \\*\\*\n\n有关软件包注册表的范围和权限\n\n> \\[!NOTE]\n> GitHub Packages 仅支持使用 personal access token (classic) 进行身份验证。 有关详细信息，请参阅“[管理个人访问令牌](/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)”。\n\n若要使用或管理由包注册表托管的包，必须使用 personal access token (classic) 具有相应作用域的包，并且个人帐户必须具有适当的权限。\n\n例如：\n\n* 若要从存储库下载和安装包， personal access token (classic) 必须具有 `read:packages` 作用域，并且用户帐户必须具有读取权限。\n* 若要删除包，您的 personal access token (classic) 必须至少具有 `delete:packages` 和 `read:packages` 作用域。 有关详细信息，请参阅“[删除和恢复包](/zh/packages/learn-github-packages/deleting-and-restoring-a-package)”。\n\n| Scope             | 说明                         | 必需的权限 |\n| ----------------- | -------------------------- | ----- |\n| `read:packages`   | 从 GitHub Packages 下载并安装软件包 | 读取    |\n| `write:packages`  | 将包上载并发布到 GitHub Packages   | 写入    |\n| `delete:packages` | 从 GitHub Packages 删除包      | 管理员   |\n\n> \\[!NOTE]\n> GitHub Actions 工作流使用 REST API 删除和还原包的功能目前为 公开预览，可能随时更改。\n\n创建 GitHub Actions 工作流时，您可以使用 `GITHUB_TOKEN` 在 GitHub Packages 中发布、安装、删除和还原包，而无需存储和管理 personal access token。\n\n有关详细信息，请参阅：\n\n* [配置包的访问控制和可见性](/zh/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)\n* [使用 GitHub Actions 发布和安装包](/zh/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions)\n* [管理个人访问令牌](/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)\n* [OAuth 应用的范围](/zh/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes)\n\n## 关于仓库转让\n\n可以将存储库转移到其他个人帐户或组织。 有关详细信息，请参阅“[转让仓库](/zh/repositories/creating-and-managing-repositories/transferring-a-repository)”。\n\n传输存储库时， GitHub 可能会根据包所属的注册表传输与存储库关联的包。\n\n* 对于支持精细权限的注册表，包的范围限定为个人帐户或组织，并且与包关联的帐户在转移存储库时不会更改。 如果已将包链接到存储库，则在将存储库传输给另一个用户时会删除该链接。 与存储库关联的任何 代码空间或 GitHub Actions 工作流都将失去对包的访问权限。 如果包从链接的存储库继承了其访问权限，则用户将失去对包的访问权限。 有关这些注册表的列表，请参阅上面的[用户/组织范围包的精细权限](#granular-permissions-for-userorganization-scoped-packages)。\n* 对于仅支持存储库范围权限的注册表，包将直接发布到存储库，并将 GitHub 与存储库关联的包作为存储库传输的一部分传输。 与包关联的所有可计费使用量随后都会向存储库的新所有者计费。 如果以前的存储库所有者作为存储库上的协作者被删除，他们可能无法再访问与存储库关联的包。 有关这些注册表的列表，请参阅上面的[存储库范围的包的权限](#permissions-for-repository-scoped-packages)。\n\n## 维护对工作流中 GitHub Actions 包的访问\n\n若要确保工作流将维护对包的访问权限，请确保在工作流中使用正确的访问令牌，并且 GitHub Actions 已启用对包的访问权限。\n\n有关在 GitHub Actions 工作流中使用包的更多概念背景或示例，请参阅 [使用 GitHub Actions 工作流程管理 GitHub Packages](/zh/packages/managing-github-packages-using-github-actions-workflows)。\n\n### 访问令牌\n\n> \\[!NOTE]\n> GitHub Actions 工作流使用 REST API 删除和还原包的功能目前为 公开预览，可能随时更改。\n\n* 要发布、安装、删除和还原与工作流存储库相关联的包，请使用 `GITHUB_TOKEN`。\n* 若要安装与其他无法访问的专用存储库 `GITHUB_TOKEN` 关联的包，请使用 personal access token (classic)\n\n有关在 `GITHUB_TOKEN` 工作流中使用的 GitHub Actions 的详细信息，请参阅 [在工作流中使用 GITHUB\\_TOKEN 进行身份验证](/zh/actions/tutorials/authenticate-with-github_token#using-the-github_token-in-a-workflow)。\n\n### GitHub Actions 对具有精细权限的包的访问\n\n为了确保工作流有权访问注册表中存储的支持精细权限的包，必须授予 GitHub Actions 对运行工作流的存储库的访问权限。 您可以在包的设置页面上找到此设置。 有关详细信息，请参阅“[配置包的访问控制和可见性](/zh/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-workflow-access-to-your-package)”。"}