📚 渡口文档库

n160 · /home/joehuang

🏠 首页

MacMini 权限配置方案

场景:MacMini上让agent安全干活、又不碰到私人文件
时间:2026-05-21


核心逻辑

三种方案:


方案一:chown(最简单)

直接把目录改属主:

# 假设只想让它操作 Materials 目录
sudo chown -R agent:staff ~/Materials

# 如果它还需要读某些文件
sudo chown -R agent:staff ~/some-shared-folder

优点:一行搞定
缺点:目录完全归 agent 了,账户反而变成"其他用户"


方案二:ACL 精细控制(推荐 ⭐)

macOS 支持 ACL,可以做更细的权限切分:

# agent 用户可读写 Materials
sudo chmod +a "agent:allow:read,write" ~/Materials

# 但你的私人目录 agent 完全没权限
sudo chmod +a "agent:deny:read,write" ~/Documents
sudo chmod +a "agent:deny:read,write" ~/Desktop

更细粒度的例子:

# 只让读,不让写(只读参考)
sudo chmod +a "agent:allow:read" ~/reference-folder

# 只让进特定子目录
sudo chmod +a "agent:allow:list,read" ~/Materials/nina

方案三:组权限(适合多人多 agent)

# 创建一个 agent 组,把 agent 用户加进去
sudo dseditgroup -o create -r "Hermes Agents" -n /Local/Default hermes-agents
sudo dseditgroup -o edit -a agent -t user hermes-agents

# 共享的目录设组权限
chgrp hermes-agents ~/Materials
chmod -R g+rw ~/Materials

推荐配置(方案二)

现有架构清晰分层:

~/Materials/
├── 浩元渡口/        → 只读,不要写进去
├── 东方之珠/        → Mimi 产出目录
├── nina/            → nina 的内容
└── ...其他精灵目录

~/.hermes/           → agent 自己用的

具体命令:

# 1. Materials 全部给 agent 读写
sudo chmod -R +a "agent:allow:read,write,execute" ~/Materials

# 2. 浩元渡口设为只读(规则里它本来就禁止写入)
sudo chmod +a "agent:allow:read" ~/Materials/浩元渡口

# 3. 你的私人目录 deny 掉
sudo chmod +a "agent:deny:read,write" ~/Documents
sudo chmod +a "agent:deny:read,write" ~/Desktop

# 4. 验证权限
ls -le ~/Materials

sudo 权限怎么管

agent 有 sudo 权限意味着可以 sudo rm -rf /。

思路 A:sudoers 限制只能特定命令

sudo visudo -f /etc/sudoers.d/hermes-agent

添加:

agent ALL=(ALL) NOPASSWD: /usr/bin/rsync, /usr/bin/ssh, /usr/bin/git
agent ALL=(ALL) NOPASSWD: NOEXEC: /usr/bin/python3 *

这样 agent sudo 时只能执行这几个命令,rm、dd 这种高危命令不在白名单里。

思路 B:用 audit 日志盯着

# 打开 sudo 日志
sudo visudo
# 添加: Defaults logfile=/var/log/sudo.log

# 查看 agent 每次 sudo 做了什么
tail -f /var/log/sudo.log

下一步

需要确认:
1. agent 装在哪个用户名下
2. 当前权限状态

id
ls -la ~
ls -la ~/Materials