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

如何在Windows系统中用Python添加文件夹的用户/组权限

解决Windows下Python复制文件夹后缺失用户/组权限的问题

shutil.copytree在Windows环境下默认不会完整复制原文件夹的所有ACL(访问控制列表)权限,这就是你手动复制时权限保留,但用代码复制后丢失特定用户/组的原因。要手动添加缺失的用户/组,得借助Windows原生API,这里可以用pywin32库实现。

步骤1:安装依赖库

先安装操作Windows安全权限的工具库:

pip install pywin32

步骤2:编写权限添加代码

以下是可直接复用的示例代码,你只需替换目标文件夹路径和缺失的用户/组名称:

import win32security
import win32api
import win32con

def add_user_to_folder_acl(folder_path, user_name):
    # 获取目标文件夹的安全描述符
    sd = win32security.GetFileSecurity(folder_path, win32security.DACL_SECURITY_INFORMATION)
    dacl = sd.GetSecurityDescriptorDacl()

    # 解析目标用户/组的SID(安全标识符)
    try:
        sid, _, _ = win32security.LookupAccountName(None, user_name)
    except win32api.error as e:
        print(f"找不到指定用户/组 {user_name}: {e}")
        return

    # 定义要赋予的权限(示例为读取、执行、列出内容权限,可按需修改)
    access_mask = win32con.FILE_GENERIC_READ | win32con.FILE_GENERIC_EXECUTE

    # 创建访问控制项(ACE),设置权限继承规则(同步到子文件和子文件夹)
    dacl.AddAccessAllowedAce(
        win32security.ACL_REVISION,
        access_mask,
        sid
    )
    # 开启权限继承标识
    dacl.SetAce(
        dacl.GetAceCount() - 1,
        (
            win32security.ACCESS_ALLOWED_ACE_TYPE,
            win32security.ACE_FLAG_OBJECT_INHERIT | win32security.ACE_FLAG_CONTAINER_INHERIT,
            access_mask,
            sid
        )
    )

    # 更新文件夹的安全描述符并应用
    sd.SetSecurityDescriptorDacl(1, dacl, 0)
    win32security.SetFileSecurity(folder_path, win32security.DACL_SECURITY_INFORMATION, sd)

# 示例调用:替换为你的实际路径和用户/组名称
target_folder = r"C:\Your\Copied\Folder\Path"
missing_user = "BUILTIN\Users"  # 本地组格式,域用户/组用"DOMAIN\GroupName"
add_user_to_folder_acl(target_folder, missing_user)

关键细节说明

  • 用户/组名称格式:本地用户/组需用BUILTIN\名称格式,域用户/组用域名\名称格式,确保能正确解析SID。
  • 权限自定义:如果需要写入、修改等权限,可组合win32con中的常量,比如FILE_GENERIC_WRITE、FILE_ALL_ACCESS(谨慎使用全权限)。
  • 继承规则:ACE_FLAG_OBJECT_INHERIT和ACE_FLAG_CONTAINER_INHERIT确保权限会同步到文件夹内的所有子项,和手动复制的权限继承行为一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:25:17