*Redis ACL GETUSER 命令
ACL GETUSER 返回指定 ACL 用户的完整配置信息。
*语法
ACL GETUSER username
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| username | String | 是 | 要查询的 ACL 用户名 |
*返回值
- Array of key-value pairs:用户配置信息
flags— 用户标志(on, off, nopass 等)passwords— 密码哈希列表commands— 允许的命令规则keys— 允许的 key 模式channels— 允许的 pub/sub 频道模式selectors— 附加选择器(Redis 7.0+)
- Nil:用户不存在
*时间复杂度
O(1)
*
*示例
*查询默认用户
> ACL GETUSER default
1) "flags"
2) 1) "on"
2) "allkeys"
3) "allcommands"
4) "nopass"
3) "passwords"
4) (empty array)
5) "commands"
6) "+@all"
7) "keys"
8) "~*"
9) "channels"
10) "&*"
11) "selectors"
12) (empty array)
*查询受限用户
> ACL SETUSER appuser +get +set ~app:* on >secret123
OK
> ACL GETUSER appuser
1) "flags"
2) 1) "on"
3) "passwords"
4) 1) "cbaed5f5b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0"
5) "commands"
6) "+@all -@all +get +set"
7) "keys"
8) "~app:*"
9) "channels"
10) (empty array)
11) "selectors"
12) (empty array)
*查询不存在的用户
> ACL GETUSER nonexist
(nil)
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 缺少 username 参数 | 提供用户名 |
*最佳实践
- 定期审计用户权限:ACL USERS 列出所有用户,然后逐个 ACL GETUSER 检查
- 编写配置迁移脚本时,用 GETUSER 导出用户配置
- 对比不同环境的权限差异时,GETUSER 的输出可直接用于 diff
- 密码以 SHA256 哈希形式返回,不会泄露明文
*FAQ
Q1: GETUSER 能看到明文密码吗? A: 不能。返回的是 SHA256 哈希值,出于安全考虑不返回明文。
Q2: 如何导出所有用户配置? A: 使用 ACL LIST 返回所有用户的纯文本配置格式,更适合备份和迁移。
Q3: flags 中的 allkeys 和 allcommands 是什么意思?
A: 表示该用户被授予了所有 key 和所有命令的访问权限,等同于 ~* 和 +@all。