使用Python为文件夹添加权限

1 投票
1 回答
1936 浏览
提问于 2025-04-16 05:54

我想给任何人完全访问一个特定文件夹(包括子文件夹和里面的文件)的权限。

我试过这个代码:

f = "c:\test" #... which is the folder

#vars
sidWorld = win32security.CreateWellKnownSid(win32security.WinWorldSid, None)
worldRights = win32file.FILE_ALL_ACCESS

#get DACL
fileSecDesc = win32security.GetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION)
fileDacl = fileSecDesc.GetSecurityDescriptorDacl()

#add rights
fileDacl.AddAccessAllowedAce( win32security.ACL_REVISION, worldRights, sidWorld )

win32security.SetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION, \
    None, None, fileDacl, None )

问题是,这个文件夹的权限并没有显示为完全访问,我觉得可能是因为缺少继承权限(我也需要这个继承)。我不知道该怎么解决这个问题。

有没有人知道我漏掉了什么?谢谢,祝好,
Florian Lagg。

1 个回答

4

我休息了一下后明白了:其实很简单:

#vars
sidWorld = win32security.CreateWellKnownSid(win32security.WinWorldSid, None)
worldRights = win32file.FILE_ALL_ACCESS
flags = win32security.OBJECT_INHERIT_ACE| \
    win32security.CONTAINER_INHERIT_ACE

#get DACL
fileSecDesc = win32security.GetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION)
fileDacl = fileSecDesc.GetSecurityDescriptorDacl()

#add rights
fileDacl.AddAccessAllowedAceEx( \
    win32security.ACL_REVISION_DS, \
    flags, \
    worldRights, \
    sidWorld)

win32security.SetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION, \
    None, None, fileDacl, None )

所以:问题解决了!无论如何,谢谢!

撰写回答