shenchangjiang

python 查看文件夹权限组和用OS模块操作文件夹

@建议操作server服务器文件夹时可以映射网络驱动盘

import win32security
import ntsecuritycon as con

FILENAME = r\'D:\tmp\acc_test\'  #文件夹路径

sd = win32security.GetFileSecurity(FILENAME, win32security.DACL_SECURITY_INFORMATION)
dacl = sd.GetSecurityDescriptorDacl()

ace_count = dacl.GetAceCount() #显示具有文件夹权限用户(组)数量
print(\'Ace count:\', ace_count)

for i in range(0, ace_count):
rev, access, usersid = dacl.GetAce(i)
user, group, type = win32security.LookupAccountSid(\'\', usersid)
print(\'User: {}/{}\'.format(group, user), rev, access)
User: user (0, 0) 1179817 #只有该文件夹,查看权限
User: admin (0, 0) 1245631 #只有该文件夹,修改权限
User: administrator (0, 3) 2032127 #此文件夹,子文件夹 全部权限

#删除文件夹权限
Now you are able to read old ACEs and deleting old ones is quite simple:
for i in range(0, ace_count):
dacl.DeleteAce(0)

#掉用add增加权限
And after that you can just add privileges by calling AddAccessAllowedAceEx() [MSDN]:
userx, domain, type = win32security.LookupAccountName ("", "your.user")
usery, domain, type = win32security.LookupAccountName ("", "other.user")

 

dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, 3, 2032127, userx) # 完全控制 @中间3代表权限会被后面文件夹继承 0:不会
dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, 3, 1179785, usery) # 只读权限

sd.SetSecurityDescriptorDacl(1, dacl, 0) #可能没有必要
win32security.SetFileSecurity(FILENAME, win32security.DACL_SECURITY_INFORMATION, sd)
I\'ve taken numbers 3, 2032127 and 1179785 from the listing in first half of the script (before running the script I\'ve set up privileges in Explorer->Right Click->Properties->Security->Advanced):
#

#
#例子
# try:
# permit = \'1179817\'
# acegroup = \'Users\'
# folder = \'Z:\\50.测试文件夹\\01.2\'
# sd = win32security.GetFileSecurity(folder, win32security.DACL_SECURITY_INFORMATION)
# dacl = sd.GetSecurityDescriptorDacl()
# user1, domain, type = win32security.LookupAccountName(\'\', acegroup)
#
# permisson = int(permit)
# dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, 0, permisson, user1) #中间的0 表示只有该文件夹 3表示此文件夹,子文件
# sd.SetSecurityDescriptorDacl(1, dacl, 0) # may not be necessary
# win32security.SetFileSecurity(folder, win32security.DACL_SECURITY_INFORMATION, sd)
# except Exception as e:
# print(e)

#python 的os模块操控文件夹
#import os
#import shutil

# try:
# os.mkdir(r\'Z:\50.测试文件夹\01.2\') #新建文件夹
# except Exception as e:
# print(e)

# try:
# os.rename(r\'Z:\50.测试文件夹\01.2\',r\'Z:\50.测试文件夹\01.3\') #重命名文件夹
# except Exception as e:
# print(e)

# try:
# shutil.rmtree(r\'Z:/50.测试文件夹/01.3\') ##删除名文件夹
# except Exception as e:
# print(e)
PS.调用cmd操控文件夹
http://jingyan.baidu.com/article/d3b74d64c853081f77e60929.html 下载安装pywin32
#创建文件夹
def createfolder(request):
folder=r\'Z:/50.测试文件夹/01.3\'
result={}
try:
#用wmi连接到远程服务器
pythoncom.CoInitialize()
conn = wmi.WMI(computer=‘192.168.0.1’, user=\'user\', password=\'user\')
cmd_callbat=r"cmd.exe /c mkdir %s" % folder
conn.Win32_Process.Create(CommandLine=cmd_callbat) #执行bat文件
result[\'isSuccess\']=True
result[\'message\']=\' 添加成功\'
except Exception as e:
print(e)
result[\'isSuccess\'] = False
result[\'message\'] = \' 添加失败\'+e
response = HttpResponse()
response[\'Content-Type\'] = "text/javascript"
response.write(json.dumps(result))
return response

 

来源http://jingyan.baidu.com/article/f3ad7d0ffe8b1409c2345b43.html
http://www.programcreek.com/python/index/478/win32security

 

发表于 2017-01-09 23:25  shenchangjiang  阅读(4768)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2021-11-23
  • 2022-02-09
  • 2021-11-06
  • 2022-01-21
  • 2021-11-29
  • 2021-07-25
  • 2021-11-29
猜你喜欢
  • 2021-10-07
  • 2022-02-06
  • 2021-12-12
  • 2021-09-17
  • 2022-01-07
  • 2021-11-29
相关资源
相似解决方案