You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac系统如何用Python创建仅system/admin拥有写入权限的文件

Mac下Python创建仅管理员/系统可编辑文件的实现方案

Mac属于类Unix系统,文件权限遵循POSIX标准,你可以通过以下两种方式实现需求:


方式1:创建文件时直接指定权限(推荐)

直接使用os.open创建文件并指定权限,不受系统默认umask影响,一步完成配置:

import os

target_path = "/your/target/file/path"
# 配置创建参数,对应原生open的"w+"模式行为
open_flags = os.O_RDWR | os.O_CREAT | os.O_TRUNC
# 权限设置为八进制0o644:所有者(系统/root)可读写,其他所有用户仅可读、无编辑权限
# 如需完全禁止普通用户访问,可改为0o600,仅所有者有读写权限
file_mode = 0o644

# 创建文件获取文件描述符,转成Python文件对象操作
fd = os.open(target_path, open_flags, file_mode)
with os.fdopen(fd, "w+") as f:
    # 执行你的文件读写操作
    f.write("test content")

方式2:修改已创建文件的权限

如果文件已经创建,可以通过修改权限+所有者的方式完成配置:

import os
import pwd
import grp

target_path = "/your/target/file/path"

# 1. 设置文件所有者为root(系统角色),所属组为admin(管理员组)
root_uid = pwd.getpwnam("root").pw_uid
admin_gid = grp.getgrnam("admin").gr_gid
os.chown(target_path, root_uid, admin_gid)

# 2. 设置权限:root、admin组成员可编辑,普通用户仅可读
# 如需禁止普通用户读,改为0o660即可
os.chmod(target_path, 0o664)

注意事项

  • 上述操作需要你的Python进程以root身份运行,否则修改文件所有者、系统路径下的文件权限会报错
  • 权限值必须用0o开头的八进制格式书写,不要直接写十进制的644,否则权限会完全不符合预期
  • 如果需要仅系统角色可编辑,管理员也无权限,直接把权限值设置为0o600即可

内容的提问来源于stack exchange,提问作者Rushikesh Korde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:54:03