macos中删除文件的权限由父文件夹的写入权限决定,而非文件自身;要实现“仅创建者可删”,需通过acl严格管控父文件夹的delete_child权限,或在文件共享设置中启用“可写入但不可删除”选项。
macos 默认不提供“仅创建者可删除”这种细粒度的单文件权限控制——因为删除操作实际由父文件夹的写入权限决定,而非文件自身。要实现“只有创建者能删”,关键不是改文件权限,而是严格管控它所在文件夹的写入与删除权限。
核心逻辑:删除权在父文件夹,不在文件本身
在 macOS(和 Unix 类系统)中,删除一个文件,本质是修改其所在文件夹的目录项(即从文件夹里“划掉”这个文件名)。因此: - 文件自身的“读/写/执行”权限,只影响能否打开、编辑或运行它; - 能否删除它,取决于你对它上一级文件夹是否拥有“写入”权限(尤其是 delete_child 权限)。
推荐做法:用 ACL 实现“创建者可删,他人不可删”
图形界面的“只读/读与写”无法区分“新建”和“删除”,必须用终端 ACL(访问控制列表)精确控制。以目标文件夹 /Shared/Reports 为例:
- 先确保该文件夹本身权限收紧:右键 → “显示简介” → 解锁 → 将
everyone和staff设为“无访问权限” - 添加当前用户(创建者)的完整权限:
sudo chmod +a "yourusername allow list,add_file,search,delete,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Shared/Reports - 若需允许其他用户仅能创建文件但不能删,用 deny 规则禁用删除:
sudo chmod +a "otheruser deny delete,delete_child" /Shared/Reports - 验证效果:
ls -le /Shared/Reports,确认输出中 yourusername 有delete_child,而 otheruser 明确标有deny delete_child
更稳妥的替代方案:启用“可写入但不可删除”共享权限
如果你通过“系统设置 → 共享 → 文件共享”对外提供该文件夹,macOS 共享界面有一个隐藏但有效的选项:
macOS 微信消息自动化工具。通过 GUI 自动化实现:发送消息给指定联系人、读取聊天内容、监控新消息。适用于需要自动化微信操作的场景,如定时发送、批量回复、消息备份等。依赖 peekaboo 进行屏幕截图和 UI 交互。仅支持 macOS。开源地址:https://github.com/chairmanmia...
- 在共享设置中为特定用户选择权限时,下拉菜单里有“可写入但不可删除”
- 选中后,该用户可在文件夹内新建、编辑、保存,但无法删除或重命名任何已有项目
- 此选项会自动在底层 ACL 中添加对应
deny delete_child规则,且对 SMB/AFP 网络访问也生效 - 注意:必须同时在“访达简介”中清除
everyone权限,否则本地登录用户仍可能绕过
不推荐的做法:chmod 777 或简单改文件所有者
这些操作无法达成目标,还可能引入风险:
-
chmod 777让所有人可删,完全相反 - 把文件所有者改成别人,不影响删除权——只要对方对父文件夹有写权限,照样能删
- 仅设文件为“只读”,别人仍可删除它(只要父文件夹允许)










