使用 python 添加文件夹权限

发布于 2024-09-28 07:45:02 字数 774 浏览 3 评论 0原文

我想授予任何人对特定文件夹(+子文件夹+其中的文件)的完全访问权限。 我尝试了该代码:

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 )

问题是,它没有显示为完全访问权限,我认为是因为缺少继承(我也需要继承)。我不知道如何解决这个问题。

知道我缺少什么吗? 谢谢,最诚挚的问候, 弗洛里安·拉格。

I want to give anyone full access to a specific folder (+sub-folders +files in it).
I tried that code:

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 )

Problem is, it isn't shown as full access, i think because of the missing inheritance (I also need inheritance). I cannot figure out how to solve this.

Any idea what I'm missing?
Thanks, best regards,
Florian Lagg.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

早乙女 2024-10-05 07:45:02

休息后得到它:这很容易:

#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 )

因此:解决了!
无论如何,谢谢!

Got it after a break: it's so easy:

#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 )

Therefore: SOLVED!
Thanks anyway!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文