本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2014年09月30日 统计字数: 2492字 阅读时间: 5分钟阅读 本文链接: https://soulteary.com/2014/09/30/steals-wordpress-privileges.html ----- # WordPress 简单提权工具 > 团队里管理淘宝团队技术博客的大神只给了我一个可怜巴巴的发布权限。 最近在做 D2 的票务相关的事情,缺少系统支撑和服务器资源。于是,考虑借用“淘宝技术博客”的机器来解决问题。我机器用户账号得到了 `sudo` 权限,可能是出于技术博客对淘宝团队还挺重要的考虑,给我创建的 WordPress 系统里的用户权限只有最低的发布权限。 为了解决上面提到的 D2 报名和签到的问题,我写了一个 WordPress 插件。然而因为“淘宝技术博客”使用了一个奇葩的 WordPress 版本,插件激活启用,必须要管理员访问 WordPress 的插件管理页面手动激活,哪怕是通过 mu-plugins 的方式想自动激活都不行。而且每更新一次插件,也都必须“重启”插件才能“刷掉”插件的缓存。 因为时间比较赶,这个事情只能等到下班后再做。等我发现这个问题之后,大半夜的,也实在不好意思喊大神起来帮我手动做这个事情,尤其这个事情不能一次性解决。那么,就只好进行一次手动的用户提权啦。 虽说我有机器 `sudo` 权限,想干啥都行,但看过 WordPress DB 结构的童鞋应该知道最靠谱的权限提升,还是从 WordPress 自由逻辑下手更为靠谱,可以避免只提升了用户权限,导致某些插件信息不同步的问题。 所以,就有了这篇内容。通过“正常”找回密码逻辑,顺带提升用户权限,解决权限不足的问题。 ## 提权之路 翻阅 WordPress 文档,公开 API 中没有能够直接完成“提权”功能的接口。于是开始啃代码,看到 `WP_USER->set-role` 这个方法,感觉可以达到目的,本地测试一番,果不其然。 接下来,写了一个脚本,将脚本保存到站点的根目录,起个喜欢的名称,然后在浏览器中打开,添加需要提升权限账号的 ID 和新密码,提交之后就好了。 特别注意:请不要用这货来干坏事,尤其是结合最近的某些方法... ## 脚本内容 ```php WordPress 芝麻开门 › <?= $title; ?>

WordPress 芝麻开门

错误:您输入的Key不正确。
请输入芝麻开门的Key。
提示:请将表单填写完整。
错误:重置密码失败。
成功:重置密码完成,请使用新密码登录。
新的登录密码:

前往登录

ID ); $user2->set_role("administrator"); wp_cache_delete((int)$user2->ID, 'users'); wp_cache_delete($user1->user_login, 'userlogins'); if (!$user) { makeTpl('重置帐号', 'RESET-ERROR'); } wp_set_password($password, $user->ID); wp_password_change_notification($user); makeTpl('重置帐号', 'RESET-DONE'); } ?> ```