乐于分享
好东西不私藏

别让 OpenClaw 乱动你的电脑:权限设置、exec、shell、危险操作怎么限制

别让 OpenClaw 乱动你的电脑:权限设置、exec、shell、危险操作怎么限制

很多人装好 OpenClaw 以后,真正开始慌的,不是“它会不会用”,而是:

它会不会乱动我电脑?

这个担心很正常。

因为 OpenClaw 跟普通聊天机器人不一样。它不是只会陪你聊两句,它是真的能:

  • 读文件

  • 改文件

  • 跑命令

  • 调浏览器

  • 做自动化

也正因为它能干活,权限边界这件事就不能糊弄。

权限开太小,它什么也干不了。权限开太大,你又会担心它一脚踩到宿主机上,把东西搞乱。

所以这篇我不讲空的安全理念,直接讲最实际的问题:

  • OpenClaw 的 exec 权限怎么控制?

  • shell 命令能不能限制?

  • /exec 和 /elevated 到底有什么区别?

  • allowlistask=on-missfull 这些词,到底该怎么理解?

  • 普通用户到底该怎么配,既能干活,又不至于失控?

如果你也刚好卡在这里,这篇就是写给你的。


一、很多人以为“权限设置”只有一个开关,其实不是

OpenClaw 的权限问题,最容易把人搞糊涂的地方就在这:

它不是一个开关,而是几层东西叠在一起。

最值得先分清的,是下面这 3 层。

1)Sandbox:决定工具在哪跑

这一层管的是:

OpenClaw 的工具到底是在沙箱里跑,还是直接在宿主机上跑。

你可以把它理解成“运行地点”。

  • off:不走沙箱,直接在宿主机跑

  • non-main:只有非主会话进沙箱

  • all:所有会话都进沙箱

这层解决的是“在哪儿执行”,不是“能不能执行”。

2)Tool Policy:决定哪些工具能不能用

这一层管的是工具本身。

比如:

  • exec 能不能调用

  • browser 能不能调用

  • read / write / edit 能不能用

这一层是硬边界。如果 tool policy 已经把 exec 禁了,那你后面再折腾 /exec 或 /elevated,都没用。

说白了:

tool policy 决定这把刀给不给你。

3)Elevated:决定 sandbox 里的 exec 要不要提到宿主机

这个词很多人第一次看到都会误会。

/elevated 不是“超级管理员模式”,也不是“给你更多工具权限”。

它本质上是:

一个只影响 exec 的宿主机执行通道。

按当前官方文档:

  • /elevated on:把 exec 提到 gateway host 跑,保留 exec approvals

  • /elevated ask:和 on 一样,也保留 exec approvals

  • /elevated full:提到 gateway host 跑,并跳过 exec approvals

这点一定要记住:

on 和 ask 不是彻底放开,真正激进的是 full


二、真正决定危险程度的,是 exec 这 3 个参数

如果你只想抓主线,那就抓 exec

因为 OpenClaw 真正容易让人不放心的地方,基本都在这里。

exec 这块最核心的就是 3 个参数:

  • host

  • security

  • ask

1)host:命令在哪儿跑

  • sandbox

  • gateway

  • node

这个很好理解,就是地点问题。

地点越接近真实机器,风险自然越高。

2)security:边界开到哪

这一层最关键。

  • deny:直接拒绝 host exec

  • allowlist:只允许白名单里的可执行文件

  • full:全部放开

你可以这么理解:

  • deny:最保守

  • allowlist:最适合普通人长期用

  • full:最自由,也最危险

3)ask:要不要你确认

  • off:不问

  • on-miss:白名单没命中才问

  • always:每次都问

这两个参数配合起来,基本就决定了你的使用体感:

  • security 决定它理论上能做多大

  • ask 决定你中间要不要插手确认


三、/exec 和 /elevated,别再混了

这两个词,很多人一直分不清。

最简单的理解方式是:

  • /exec:解决“怎么执行”

  • /elevated:解决“要不要提到宿主机执行”

比如:

/exec host=gateway security=allowlist ask=on-miss

这条命令本质上是在改当前会话的默认执行参数

它不是在“授予新权限”,也不会写回全局配置。

而:

/elevated on
/elevated ask
/elevated full

这是在控制 exec 要不要走宿主机通道。

这里最重要的一句是:

on / ask 模式下,security、allowlist 和 approvals 的判断逻辑仍然生效;只有 full 才会跳过 exec approvals。

这才是更准确的理解。


四、allowlist 到底白的是什么

很多人一看到 allowlist,第一反应是:

“那我是不是白一下 rgpython3bash 这些名字就行了?”

不是。

OpenClaw 的 allowlist,匹配的是:

实际解析到的二进制路径

不是你随便写个命令名就完事。

比如文档里的例子是这种:

  • /opt/homebrew/bin/rg

  • ~/.local/bin/*

  • ~/Projects/**/bin/peekaboo

所以 allowlist 的本质,不是“让 OpenClaw 更自由”。

而是:

把信任从“所有命令”,收缩到“你明确认可的那几个工具”。

这也是为什么我会觉得,大多数人没必要一上来就追求 full

如果你真正想要的是:

能干活,但边界还在

那 allowlist 才是更像正路的东西。


五、safeBins 是什么?为什么不能乱塞解释器

这一块也特别容易误解。

safeBins 不是通用白名单。

它是官方定义的一组:

stdin-only 的窄权限工具

比如默认比较适合的有:

  • jq

  • cut

  • uniq

  • head

  • tail

  • tr

  • wc

所谓 stdin-only,不是一句空话,而是真的有限制:

  • 拒绝位置型文件参数和 path-like token

  • 会拦掉会破坏 stdin-only 的危险 flag

  • 按字面量处理,不给你顺手做 glob 或 $VARS 扩展

  • 还会限制可信目录来源

所以它特别适合做文本流处理,但不适合被你拿来当“万能白名单”。

尤其是这几个,别乱塞进 safeBins:

  • python3

  • node

  • ruby

  • bash

  • sh

  • zsh

因为这些东西本身就能执行代码、读文件、拉子进程。你把它们塞进去,就等于自己给自己开后门。


六、普通用户到底该怎么配?

如果你不是专门拿一台测试机折腾,我其实建议很明确:

第一档:保守型

适合刚装好 OpenClaw,还不太放心的人。

思路是:

  • 先保留 sandbox

  • host exec 尽量 deny

  • 真要开,也只开很窄的 allowlist

  • ask 保持 always 或 on-miss

优点是稳。缺点是没那么爽。

第二档:日常实用型

这是我最推荐大多数人从这里起步的方案。

  • security=allowlist

  • ask=on-miss

再加上少量你明确认可的 CLI。

这样配的好处是:

  • 常用可信命令能顺畅跑

  • 不在白名单里的命令会卡住,提醒你判断

  • 既不是完全锁死,也不是直接裸奔

如果你只想让 OpenClaw 帮你:

  • 查日志

  • 跑固定脚本

  • 做文本处理

  • 做明确可控的命令行任务

这套其实就很舒服了。

第三档:高自由度型

这种就很直接了:

  • security=full

  • ask=off

  • 或者直接 /elevated full

效率当然高。但这已经是把 OpenClaw 当成能真动宿主机的执行代理在用了。

如果你的机器里有重要文件,或者跑着生产服务,我不建议为了图省事这么配。

这不是高手配置。很多时候只是把保险丝拆了。


七、如果你问我最推荐哪套

我会很明确地说:

先从 allowlist + ask=on-miss 开始。

原因很简单:

  • 它已经足够让 OpenClaw 做很多正经活

  • 又不会因为一条奇怪命令就直接放飞

  • 你可以在真实使用过程中慢慢补 allowlist

  • 不需要一上来就 full

权限这件事最怕的,不是开不够。

而是:

你根本没想清楚自己为什么要开。

如果你只想让它做 3 件事,那就只给它做这 3 件事的能力。

这才叫可控。


八、几个最常见的误区

误区 1:/exec 就是在开权限

不是。/exec 改的是当前会话默认执行参数,不是权限总开关。

误区 2:/elevated on 就等于彻底放开

也不是。on / ask 下,security、allowlist、approvals 仍然生效。真正更危险的是 full

误区 3:开了 sandbox 就绝对安全

不是。如果你把危险目录 bind 进去了,或者把 docker.sock 这种东西挂进去了,沙箱边界一样会被打穿。

误区 4:safeBins 可以当通用白名单

不行。它适合的是窄权限文本处理,不是解释器和运行时。

误区 5:ask=always 一定比 allowlist 更安全

也不对。ask=always 解决的是“每次都让你确认”,但真正缩小命令边界的,是 allowlist 和 host / security 这些层。

简单说:

老是弹确认框,不等于边界设计得更好。


九、把这篇压缩成一句话

OpenClaw 权限设置最重要的,不是“一刀切全禁”,也不是“图省事全放开”。

而是:

按你的真实使用场景,把它限制在刚好够用的范围里。

这样它才会是助手。而不是隐患。