使用之前创建的 github Fine-grained personal access token 修改仓库文件时报错403,发现用owner为个人用户名的token无法修改组织下仓库的文件.
这是我的用户名 yiGmMk ,这个用户下的仓库使用该token可以正常修改文件.
原因
创建token可以指定owner,如果需要修改组织下的仓库文件,需要创建一个owner为组织名的token.
如下,需创建owner为programnotes-cn的token才能修改该组织下的仓库文件:
2种方案
github 个人的 Fine-grained Personal Access Token (细粒度令牌) 是可以修改组织(Organization)名下仓库文件的
方案一:使用 Fine-grained Token
推荐,更安全,但需要配置
资源所有者(Resource Owner)必须选对:
在创建 Token 时,“Resource owner” 不能选你自己(你的用户名),必须从下拉菜单中选择那个组织。- 注意:如果你在下拉菜单里看不到那个组织,说明该组织禁止了非管理员创建细粒度 Token,或者你需要先在组织设置里开启。
组织管理员必须批准(Policy):
很多组织默认是禁止细粒度 Token 访问私有仓库的。- 你需要联系组织的 Owner/Admin,进入
Organization Settings->Third-party access->Personal access tokens->Settings。 - 确保选择了 “Allow access via fine-grained personal access tokens”。
- 你需要联系组织的 Owner/Admin,进入
权限设置(Permissions):
在Repository permissions中,你必须显式开启:- Contents:
Read and write(这是修改文件必须的) - Metadata:
Read-only(默认必选)
- Contents:
方案二:使用 Personal Access Token (Classic)(最简单,成功率高)
如果方案一太麻烦(比如你不是管理员,且不想麻烦管理员去改设置),最直接的方法是换回 Classic Token。
操作步骤:
- 进入 GitHub Settings -> Developer settings。
- 选择 Personal access tokens -> Tokens (classic)。
- 点击 Generate new token (classic)。
- 关键步骤:
- Scopes (权限范围):勾选整个
repo复选框(包含repo:status,public_repo等)。这将赋予该 Token 对你拥有权限的所有仓库(包括组织仓库)的读写权限。 - SSO 授权 (如果组织开启了 SAML):Token 创建后,如果你的组织开启了单点登录 (SSO),你需要点击 Token 旁边的 “Configure SSO” 按钮,并对该组织进行授权(Authorize)。如果不做这一步,Token 即使有权限也无法读写组织资源。
- Scopes (权限范围):勾选整个