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
相关产品推荐
相关产品推荐

