别让 AI 越权!OpenClaw 权限配置完全指南

别让 AI 越权!OpenClaw 权限配置完全指南

一、限制只能聊天(纯对话模式)

适用场景:只想让 AI 帮你思考、写文案、做分析,不需要它执行任何文件操作或命令。

从 2026.3.2 版本开始,OpenClaw 默认已经收紧了权限,但如果你想确保它彻底无法调用工具,可以这样配置:

核心配置命令:

bash

openclaw config set tools.profile messaging 

tools.profile 的四种模式对比

表格

模式能力范围适用场景
messaging纯对话,禁用所有工具(文件读写、命令执行、技能调用等)只想聊天、咨询的场景
minimal极简工具集(如只允许网页搜索)需要查信息但不执行操作
default基础工具集(文件读写、部分命令)日常轻度使用
full完整工具集(包括高风险操作)开发、自动化等场景

验证配置:

bash

openclaw config get tools.profile # 应该输出:messaging 

效果:AI 会说“我没有权限执行此操作”,任何尝试调用工具的行为都会被阻止。

二、限制只能操作 workspace(安全执行模式)

适用场景:需要 AI 帮你处理文件、执行命令,但必须限制在指定目录,防止误删或越权操作。

这是更细粒度的配置,核心是文件系统围栏 + 工具权限白名单

核心配置三步走:

1. 限制文件系统访问范围

编辑 ~/.openclaw/openclaw.json(或使用 CLI 命令):

json

{ "tools": { "fs": { "workspaceOnly": true } } } 

workspaceOnly: true 的作用

  • ✅ AI 只能读写 ~/.openclaw/workspace 目录及其子目录
  • ❌ 禁止访问 /etc//home/user/ 等其他系统路径
  • ❌ 即使尝试用绝对路径(如 /home/user/data)也会被拦截

2. 禁用高危工具(可选但强烈建议)

json

{ "tools": { "deny": [ "group:runtime", // 禁用 exec、bash 等命令执行 "sys_shutdown", // 禁用关机等系统操作 "elevated:*" // 禁用提权(绕过沙箱在宿主机执行) ], "allow": [ "group:fs", // 允许文件读写(已受 workspaceOnly 限制) "web_search" // 允许网页搜索 ] } } 

为什么这样配?

  • group:runtime 包含 exec 和 bash,风险极高——允许 AI 执行任意 Shell 命令
  • elevated:* 禁止提权,防止 AI 绕过沙箱直接操作宿主机
  • group:fs 允许文件操作,但已被 workspaceOnly: true 限制在 workspace 内

3. 启用执行审批(双保险)

对于允许的命令执行,增加人工确认机制:

json

{ "tools": { "executionApproval": { "enabled": true, "autoApprove": ["Read", "Glob"], // 只读操作自动通过 "autoReject": ["Bash(sudo:*)", "Bash(*rm -rf*)"] // 高危命令自动拒绝 } } } 

效果

  • ✅ 读取文件、搜索文件:自动执行
  • ⚠️ 删除文件、修改配置:会问你要不要执行
  • ❌ sudo、rm -rf:直接拒绝

配置生效:

修改 openclaw.json 后,需要重启网关:

bash

# 如果是系统服务 sudo systemctl restart openclaw # 或者通过控制面板重启 

三、快速验证命令

配置完成后,可以用以下命令验证是否生效:

bash

# 检查当前权限配置 openclaw config get tools.profile # 深度安全审计(检查文件权限、沙箱状态、高危工具等) openclaw security audit --deep # 自动修复常见安全问题 openclaw security audit --fix 

四、配置建议总结

表格

场景推荐配置核心要点
纯聊天tools.profile: "messaging"禁用所有工具
安全执行fs.workspaceOnly: true + 禁用 group:runtime限制在 workspace,禁止高危命令
生产环境沙箱 mode: "all" + workspaceAccess: "none" + dmPolicy: "allowlist"最高隔离,仅允许授权用户

Read more

嵌入式知识点学习篇五(C\C++)

嵌入式知识点学习篇五(C\C++)

变量/函数 * 全局变量和静态变量的区别是什么? * 全局变量可不可以定义在可被多个.c文件包含的头文件中?为什么? * 局部变量能否和全局变量重名? * 为什么析构函数必须是虚函数? * 为什么C++默认的析构函数不是虚函数? * C++中析构函数的作用? * 静态函数和虚函数的区别? * 重载和覆盖有什么区别? * 虚函数表具体是怎样实现运行时多态的? * C语言是怎么进行函数调用? * 请你说一说select * 请你说说fork,wait,exec函数 全局变量和静态变量的区别是什么? 1. 全局变量的作用域为程序块,而局部变量的作用域为当前函数。 2. 内存存储方式不同,全局变量(静态全局变量,静态局部变量)分配在全局数据区(静态存储空间),后者分配在栈区。 3. 生命周期不同。全局变量随主程序创建而创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在了。 4. 使用方式不同。通过声明为全局变量,程序的各个部分都可以用到,而局部变量只能在局部使用。 全局变量可不可以定义在可被多个.c文件包含的

By Ne0inhk

JD-GUI实战指南:轻松破解Java字节码的终极武器

JD-GUI实战指南:轻松破解Java字节码的终极武器 【免费下载链接】jd-guiA standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 你是否曾经面对一堆.class文件感到束手无策?想要窥探第三方库的内部实现却无从下手?JD-GUI正是为这样的困境而生。作为一款专业的Java反编译工具,它能将晦涩的字节码文件转化为清晰可读的Java源代码,让代码分析变得如此简单。 🛠️ 工具安装全流程详解 Windows环境快速部署 从官方仓库克隆项目到本地:git clone https://gitcode.com/gh_mirrors/jd/jd-gui。项目采用Gradle构建系统,执行./gradlew build即可完成编译打包。生成的可执行文件支持双击运行,无需额外配置。 跨平台兼容性配置 JD-GUI基于Java开发,确保系统已安装Java 8或更高版本。对于不同操作系统,项目提供了对应的启动脚本和配置文件,确保一致的运行体验。 🔍 界面功能深度解析

By Ne0inhk

JavaScript结合Three.js展示Sonic生成的数字人三维效果

JavaScript结合Three.js展示Sonic生成的数字人三维效果 在虚拟内容爆发式增长的今天,用户对“看得见、能互动”的数字形象需求日益强烈。无论是直播间的虚拟主播,还是网页端的智能客服,一个会说话、有表情、可交互的数字人,早已不再是影视特效的专属,而是正在成为各类Web应用的标准配置。 但问题也随之而来:如何以最低成本、最快速度构建一个真实自然、支持多角度观看的数字人?传统方案依赖3D建模、骨骼绑定和动作捕捉,不仅流程复杂,还需要专业团队支撑。而如今,一条全新的技术路径正悄然成型——用AI生成动态口型视频,再通过WebGL在浏览器中实现3D化呈现。 这正是本文要深入探讨的方向:借助腾讯与浙大联合研发的轻量级口型同步模型 Sonic,仅需一张人脸照片和一段音频,即可生成高质量说话视频;再利用 Three.js 将这段2D视频“贴”到3D空间中,实现实时交互与立体展示。整套流程无需高性能服务器、不依赖Unity/Unreal等重型引擎,普通开发者也能轻松上手。 Sonic是如何让静态照片“开口说话”的? Sonic的核心使命很明确:把声音“映射”到脸上,尤其是嘴部动

By Ne0inhk
为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义

为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义

文章目录 * 引言 * 一、什么是匿名内部类? * 二、final限制的历史与现状 * 1、Java 8之前的严格final要求 * 2、Java 8的等效final(effectively final) * 三、为什么不能修改外部局部变量 ? * 1、变量生命周期不一致 * 2、数据一致性保证 * 3、解决方案 * 四、底层实现机制 * 五、常见问题与误区 * 1、为什么实例变量没有这个限制? * 2、等效final的实际含义 引言 在Java编程中,尤其是在使用匿名内部类时,许多开发者都会遇到这样一个限制:从匿名内部类中访问的外部变量必须声明为final或是"等效final"。这个看似简单的语法规则背后,其实蕴含着Java语言设计的深层考量。本文将深入探讨这一限制的原因、实现机制以及在实际开发中的应用。 一、什么是匿名内部类? 在深入讨论之前,我们先简单回顾一下匿名内部类的概念。匿名内部类是没有显式名称的内部类,通常用于创建只使用一次的类实例。 button.addActionListener(

By Ne0inhk