繁体   English   中英

使用python检查文件夹/文件ntfs权限

[英]Checking folder/file ntfs permissions using python

正如问题标题所暗示的那样,我非常想知道检查给定文件或文件夹的ntfs权限的方法(提示:这些是您在“安全性”选项卡中看到的那些)。 基本上,我需要的是获取文件或目录的路径(在本地计算机上,或者,最好是在远程计算机上的共享上),并获取用户/组的列表以及此文件/文件夹的相应权限。 最终,应用程序将遍历目录树,读取每个对象的权限并相应地处理它们。

现在,我可以想到许多方法:

  • 解析cacls.exe输出 - 轻松完成,但是,除非我遗漏了什么,cacls.exe只给出了R | W | C | F(读/写/更改/完整)形式的权限,这是不够的(我需要获取“列出文件夹内容”,扩展权限等权限
  • xcacls.exe或xcacls.vbs输出 - 是的,它们给了我所需的所有权限,但它们的工作速度非常慢,需要xcacls.vbs关于ONE SECOND来获取本地系统文件的权限。 这样的速度是不可接受的
  • win32security(它包裹着winapi,对吗?) - 我确信它可以像这样处理,但我宁愿不重新发明轮子

还有什么我在这里失踪的吗?

除非你喜欢自己动手,否则win32security就是你要走的路。 这里有一个例子的开头:

http://timgolden.me.uk/python/win32_how_do_i/get-the-owner-of-a-file.html

如果你想稍微危险地生活(!)我正在进行的winsys套餐旨在完全按照你所追求的目标行事。 你可以在这里获得开发版的MSI:

http://timgolden.me.uk/python/downloads/WinSys-0.4.win32-py2.6.msi

或者你可以结帐svn trunk:

svn co http://winsys.googlecode.com/svn/trunk winsys

要做你所描述的(略微猜测确切的要求),你可以这样做:

import codecs
from winsys import fs

base = "c:/temp"
with codecs.open ("permissions.log", "wb", encoding="utf8") as log:
  for f in fs.flat (base):
  log.write ("\n" + f.filepath.relative_to (base) + "\n")
  for ace in f.security ().dacl:
    access_flags = fs.FILE_ACCESS.names_from_value (ace.access)
    log.write (u"  %s => %s\n" % (ace.trustee, ", ".join (access_flags)))

TJG

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM