权限配置

权限配置

权限配置

功能

BT 默认保持兼容行为,允许脚本使用全部标准库能力。生产环境可以通过环境变量收紧权限,在标准库边界拒绝文件、进程、网络、HTTP、MySQL、设备、环境变量和桌面能力。

权限检查只发生在标准库构造或方法调用边界,不进入 VM 普通指令循环。

语法

运行时查看当前配置:

参数

环境变量类型必填默认值说明
BT_PERMISSION_ALLOWString未配置允许能力列表。配置后只允许列表内能力;支持逗号、分号或空白分隔。
BT_PERMISSION_DENYString未配置拒绝能力列表。拒绝列表优先级高于允许列表。

能力名称:

名称能力
fsfs() 文件读写、目录操作。
processprocess() 子进程能力。
netnet()net.listen()net.connect()、DNS 和接口信息。
httpreqwest() HTTP 客户端能力,也支持别名 reqwest
mysqlmysql() 数据库能力。
devicedevice()、串口扫描和串口读写。
envBT.env()BT.set_env()BT.envs() 和 PATH 覆盖层。
desktopbt_app 桌面桥接命令,包括窗口、系统对话框、托盘、剪贴板、通知、拖入文件事件和应用级桌面操作。

特殊值:

说明
all表示全部能力。
none表示空能力列表。

返回值

BT.stats().permission 返回对象:

字段类型说明
deniedInt当前进程内权限拒绝次数。
configObject当前权限配置快照。

config 字段:

字段类型说明
allow_configuredBool是否显式配置了 BT_PERMISSION_ALLOW
allowArray允许列表中的能力名称。未配置时返回全部能力。
denyArray拒绝列表中的能力名称。
allowedArray当前实际允许的能力名称。
config_errorString / Empty权限配置错误;没有错误时为 empty

代码示例

注意事项

  • 默认不设置 BT_PERMISSION_ALLOWBT_PERMISSION_DENY 时,BT 允许全部能力,兼容现有脚本。
  • 如果同时配置允许和拒绝,拒绝列表优先生效。例如 BT_PERMISSION_ALLOW=allBT_PERMISSION_DENY=process 时,process() 会被拒绝。
  • 权限拒绝会抛出中文运行时错误,不会返回 empty 或静默失败。
  • 权限配置在进程内首次读取后缓存;常驻进程修改环境变量后需要重启进程才会生效。
  • desktop 控制 window.bt.windowwindow.bt.dialogwindow.bt.traywindow.bt.clipboardwindow.bt.notifywindow.bt.dragwindow.bt.app 和初始化项目命令;window.bt.call() 仍是长期 VM 业务通道,被调用 BT 函数内部使用的 fsprocessnet 等能力继续按各自权限检查。
  • 权限配置回归示例位于 examples/permission-stats.bt,会验证 allow/deny 组合和 BT.stats().permission 配置快照。