n160 · /home/joehuang
场景:MacMini上让agent安全干活、又不碰到私人文件
时间:2026-05-21
三种方案:
直接把目录改属主:
# 假设只想让它操作 Materials 目录
sudo chown -R agent:staff ~/Materials
# 如果它还需要读某些文件
sudo chown -R agent:staff ~/some-shared-folder
优点:一行搞定
缺点:目录完全归 agent 了,账户反而变成"其他用户"
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 用户加进去
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
agent 有 sudo 权限意味着可以 sudo rm -rf /。
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 这种高危命令不在白名单里。
# 打开 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