个人游戏笔记本免费“养龙虾”(四)OpenClaw(exec tools)的文件权限配置

个人游戏笔记本免费"养龙虾"(四)OpenClaw(exec tools)的文件权限配置


系列文章:
1. 个人游戏笔记本免费"养龙虾"(Win10+WSL2+OpenClaw 部署与配置指南)
2.个人游戏笔记本免费"养龙虾"(二)用显卡GPU运行OpenClaw,CUDA的安装与配置
3.个人游戏笔记本免费"养龙虾"(三)OpenClaw的安全配置指南
4.个人游戏笔记本免费"养龙虾"(四)OpenClaw(exec tools)的文件权限配置
5.个人游戏笔记本免费"养龙虾"(五)OpenClaw浏览器工具browser的使用
6.个人游戏笔记本免费"养龙虾"(番外篇)VSCode远程SSH登录Ubuntu配置OpenClaw
7.个人游戏笔记本免费"养龙虾"(六)给OpenClaw一个灵魂:配置七大Markdown文件


我的基本配置是:win10+wsl2+Ubuntu+openclaw。OpenClaw的版本是OpenClaw 2026.3.13 (61d171a)

一、OpenClaw的用户组

1、ollama用户

win10+wsl2安装OpenClaw之后,执行cat /etc/passwd命令查询‌用户信息,可以看到如下用户:

bash 复制代码
hello:x:1000:1000:,,,:/home/hello:/bin/bash
ollama:x:999:989::/usr/share/ollama:/bin/false

hello是我win10+wsl2安装Ubuntu是新建的用户。ollama应该是我在安装openclaw时输入的模型名称。提示:读者自己的系统用户(组)名应该会与我的不同。

这个ollama用户是官方安装程序自动创建的系统服务用户,用于以最小权限原则运行Ollama服务,提升系统安全性。

各字段含义如下:

字段 含义
ollama 用户名 服务专用用户名
x 密码占位符 表示密码存储在/etc/shadow中
999 UID(用户ID) 系统用户(通常<1000)
989 GID(组ID) 系统组ID(与UID对应)
空字段 注释(GECOS) 可选的用户描述
/usr/share/ollama 主目录 服务程序的安装目录
/bin/false 登录Shell 禁止用户交互式登录

Ollama创建这个用户的核心原因是遵循最小权限原则(Principle of Least Privilege),这样可以实现:

  • 安全隔离:Ollama服务只能访问其需要的资源,即使被攻击,攻击者也只能以低权限用户运行,无法对整个系统造成破坏
  • 权限分离:用户操作(如拉取模型)和后台服务运行使用不同的权限级别
  • 资源控制:可以针对ollama用户进行单独的资源限制(如CPU、内存、文件系统)
  • 便于系统管理员监控和审计服务的操作

2、ollama用户组

分别执行getent group | grep 'ollama''getent group | grep 'hello'命令查询‌ollama组和hello组信息,可以找到如下信息:

字段 含义
‌ollama Group Name 组名‌
x‌ password 组密码‌,通常为 x,表示密码存储在 /etc/gshadow 中
989‌ GID‌ Group ID,组标识号
‌hello 成员列表‌ 属于该组的用户名,以逗号分隔;若无成员则为空

id ollamaid hello命令也可以查询到用户的相同信息,如下所示:

bash 复制代码
$ id ollama
uid=999(ollama) gid=989(ollama) groups=989(ollama),44(video),992(render)
$ id hello
uid=1000(hello) gid=1000(hello) groups=1000(hello),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),989(ollama)

可以看出,"hello"用户同时在"sudo""user"和"ollama"组。"hello"可以访问Ubuntu的系统文件,也可以访问"ollama"的相关文件。

3、验证文件权限

我比较担心的是,OpenClaw会自动删除win10系统中的文件。从以上对ollama用户的分析来看,ollama用户不具有操作/mtn/c/mnt/d等win10系统中的文件夹的权限,自然也不可能误删除win10系统中的文件。但是,hello用户是具有这个权限的。

最开始的时候,我没有授权Tools exec。这种情况下,在openclaw 聊天对话框中输入请查看/mnt/e/WSL目录的文件时,会返回很多信息,包括思考过程、限制文件,会指出该目录是本地文件,最后返回关于Workspace: /home/hello/.openclaw/workspace的目录文件信息。

当我授权Tools Access exec的使用之后,再输入请查看/mnt/e/WSL目录的文件时,会返回无法查看 /mnt/e/WSL 目录的文件,如下:

我无法查看 /mnt/e/WSL 目录的文件。原因:
安全限制

  1. 边界规则:根据 SOUL.md 的边界规则,私人文件和共享的敏感信息必须保持隐私
  2. 权限限制:我无法访问外部系统或共享路径

建议

如果这是您的共享工作空间,建议:

● 先确认您是否信任发送者

● 考虑将敏感内容存储在私密目录中

● 或使用本地加密工具

结论:工具Tools(例如,exec)没有权限访问/mtn/c/mnt/d等win10系统中的文件。

二、Exec Tool(执行工具)

exec工具,用于在工作区运行 shell 命令。

1、exec的允许配置

在"openclaw-control-UI"-"Agent"-"Tool access"中可以很方便的设置exec等工具的允许使用权限。

在对话框中运行/exec,可以查看当前exec的参数,例如:

2、exec的安全配置

exec工具的参数配置,在"openclaw-control-UI"-"AI与代理"-"Tools"-"Exec Tool"中。如下图:

参考官方文档:Exec 工具 - OpenClaw

exec工具有很多参数可以配置,涉及到文件安全的参数,我觉得有以下几个:

(1)host(sandbox | gateway | node):执行位置

  • exec执行的位置有三种,sandbox(沙箱),需要安装Docker,是隔离性和安全性最好的一种。我没有安装Docker,所以选择的是gateway(网关),也就是在主机上运行。gateway方式的安全主要是靠Ubuntu的用户权限管理,或者是AppArmor实现资源隔离。
  • 沙箱隔离默认关闭。如果沙箱隔离关闭,host=sandbox 将直接在 Gateway 网关主机上运行(无容器)且不需要审批(Ask)。如需审批,请使用 host=gateway 运行并配置 exec 审批。审批信息存储在执行主机上的本地 JSON 文件中:
    ~/.openclaw/exec-approvals.json

(2)执行审批(Approval Ask)

参考官方文档:执行审批 - OpenClaw

可以将其理解为安全联锁:只有当策略 + 允许列表 +(可选的)用户审批都同意时,命令才会被允许执行。

审批流程

当需要提示时,gateway 向操作员客户端广播 exec.approval.requested。 Control UI 和 macOS 应用通过 exec.approval.resolve 进行处理,然后 gateway 将已批准的请求转发给节点主机。

当需要审批时,exec 工具会立即返回一个审批 id。使用该 id 来关联后续的系统事件(Exec finished / Exec denied)。如果在超时前没有收到决定,请求将被视为审批超时,并作为拒绝原因显示。

适用范围

执行审批在执行主机上本地强制执行:

gateway 主机 → gateway 机器上的 openclaw 进程

node 主机 → 节点运行器(macOS 配套应用或无头节点主机)

设置和存储

审批信息存储在执行主机上的本地 JSON 文件中:

~/.openclaw/exec-approvals.json

策略选项
Security(exec.security)
  • deny:阻止所有主机执行请求。
  • allowlist:仅允许在允许列表中的命令。
  • full:允许所有命令(等同于提权模式)。
Ask(exec.ask)
  • off:从不提示。
  • on-miss:仅在允许列表未匹配时提示。
  • always:每次命令都提示。
Ask fallback(askFallback)

如果需要提示但无法访问 UI,fallback 决定:

  • deny:阻止。
  • allowlist:仅在允许列表匹配时允许。
  • full:允许。

(3)允许列表allowlist(按智能体)

允许列表是按智能体配置的。如果存在多个智能体,请在 macOS 应用中切换要编辑的智能体。模式匹配不区分大小写。 模式应解析为二进制路径(仅包含基本名称的条目会被忽略)。

allowlist的配置命令:参考官方文档:approvals - OpenClaw

命令 作用
openclaw approvals get --gateway 获取allowlist
openclaw approvals set --file ./exec-approvals.json 编辑exec-approvals.json之后,通过文件替换allowlist
openclaw approvals allowlist add "~/Projects/**/bin/rg" 新增allowlist
openclaw approvals allowlist remove "~/Projects/**/bin/rg" 删除获取allowlist
  • openclaw approvals allowlist add "~/Projects/**/bin/rg" 命令运行效果:
  • openclaw approvals get --gateway命令运行效果:
  • openclaw approvals allowlist add --agent main --gateway "/usr/bin/uptime"命令运行效果:

    通过比较不同命令的不同效果,可以看出:允许列表是按智能体配置的。如果存在多个智能体,会新建不同的Json节点。

三、OpenClaw用到的目录文件

来自于官方文档重要提示:

  • 工作区(the workspace)是文件工具(tools)和工作区上下文(context)使用的唯一工作目录。请保持其私密性,并将其视为内存。

  • ~/.openclaw/ 与 ~/.openclaw/workspace是分开的。前者用于存储配置、凭证和会话。

  • 工作区(the workspace)是默认的当前工作目录(~/.openclaw/workspace),而非严格的沙箱。工具(Tools)会相对于工作区解析相对路径,但如果未启用沙箱,绝对路径仍可能访问主机上的其他位置。如果您需要隔离,请使用agents.defaults.sandbox。 当启用沙箱,且workspaceAccess不是'rw' 时,工具将在~/.openclaw/sandboxes下的沙箱工作区内运行,而非您的主机工作区。

以下表格记录的是碰到的OpenClaw相关的路径。

路径 作用 拥有者
~/.openclaw/ 存储配置、凭证和会话 hello
~/.openclaw/workspace 工作区 hello
~/.npm/_logs/ 日志 hello
~/.openclaw/agents/main/sessions 对话历史记录 hello
/usr/local/bin/ 、 /usr/lib/ 、 /usr/bin/ shell 运行exec路径 root

四、后记

到目前为止,OpenClaw还不能调用任何skills,虽然内置了skills。例如,运行如下命令可以查看有哪些技能可用:

bash 复制代码
$ openclaw skills list

可以看到图中倒数第二个wether技能是内置的、可用的,最下面的"hello_world"技能是根据官方文件新建的测试用的技能。这两个skills都显示"ready"。

但是,当我询问OpenClaw武汉的天气的时候,却无法查询,如下图。

目前,我还不知道具体原因。也请各位看官不领赐教。

我想,原因至少有2个:一个就是本地workspace的设置问题,包括:人格、权限等。原因是SOUL.mdIDENTITY.mdUSER.md、 TOOLS.m等文件还是初始配置,如下图:

第二个原因,有可能就是文件的访问权限的问题。就是说,ollama用户只能访问~/.openclaw/workspace/,而不能访问 ~/.openclaw/workspace/skills。

相关推荐
李彦亮老师(本人)21 小时前
OpenClaw 随机封面摘要标签自动发布测试
openclaw·发布测试
维度攻城狮21 小时前
Docker优雅地运行OpenClaw
运维·docker·容器·openclaw·openclaw安装
拾贰_C1 天前
【Ubuntu | install | 安装软件】 Ubuntu软件安装多种方式以及卸载
linux·运维·ubuntu
大江东去浪淘尽千古风流人物1 天前
【Basalt】Basalt主流程梳理
ubuntu
YUNDUANNET1 天前
AI驱动,不止于概念 | VeryCloud联合亚马逊云科技深度解读OpenClaw开发范式革命
人工智能·科技·openclaw
逆向编程1 天前
如何在Ubuntu虚拟机中使用Vim编辑器?
ubuntu·编辑器·vim
KuYouRan1 天前
ubuntu22.04用RTX2060显卡玩steam游戏
linux·其他·ubuntu·游戏
七夜zippoe1 天前
OpenClaw 多渠道统一管理:构建全平台智能消息中枢
开发语言·microsoft·github·多渠道·openclaw
2501_948114241 天前
OpenClaw数据采集实战:用星链4SAPI给AI采集装上“稳定引擎”
服务器·人工智能·ai·openclaw
小白电脑技术1 天前
如何给OpenClaw配置模型提供商API和大模型?
windows·电脑·openclaw