权限管理
介绍
Oui 将权限分为权限组,每个权限组里面又分为权限类,每个权限类由多个匹配项构成。每个用户需要为其分配一个权限组。
Oui 默认具有一个名为 admin 的权限组,其配置文件为:/usr/share/oui/acl/admin.json
{
"rpc": {
"matchs": [".+"]
},
"menu": {
"matchs": [".+"]
},
"ubus": {
"matchs": [".+"]
},
"uci": {
"matchs": [".+"]
}
}
目前共有 4 个权限类:
- rpc -
rpc接口调用权限 - menu - 菜单隐藏或显示
- ubus -
ubus调用权限 - uci -
uci操作权限
匹配项为一个数组,admin 权限组中全部的匹配项均为 .+,表示匹配任意,即每一类都拥有所有权限。
提示
这里的匹配项事实上为一个正则表达式。可以是任意的 Lua 正则表达式。
反向匹配
{
"rpc": {
"matchs": ["^uci.get$"],
"reverse": true
}
}
给权限类的 reverse 属性设置为 true 即可反向匹配。
匹配项示例
rpc
{
"rpc": {
"matchs": [".+"]
}
}
匹配所有 rpc 接口
{
"rpc": {
"matchs": ["^uci%..+"]
}
}
匹配 uci 模块里面所有的方法
{
"rpc": {
"matchs": ["^uci%..+", "^system%..+"]
}
}
匹配 uci 和 system 模块里面所有的方法
{
"rpc": {
"matchs": ["^uci%.get$"]
}
}
匹配 uci 模块里面的 get 方法
{
"rpc": {
"matchs": ["^uci%.get$"],
"reverse": true
}
}
不匹配 uci 模块的 get 方法,即除了 uci 模块的 get 方法不能调用,其余所有接口均能调用。
menu
{
"menu": {
"matchs": ["^/system/"]
}
}
匹配 /system/ 开头的菜单
{
"menu": {
"matchs": ["^/system/upgrade$"]
}
}
匹配 /system/upgrade 菜单
{
"menu": {
"matchs": ["^/system/upgrade$"],
"reverse": true
}
}
隐藏 /system/upgrade 菜单
uci
{
"uci": {
"matchs": ["^system$"]
}
}
只允许操作 /etc/config/system