Rumah >pembangunan bahagian belakang >Tutorial Python >python查看文件夹权限组和用OS模块操作文件夹

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

高洛峰
高洛峰asal
2017-03-27 16:26:312459semak imbas

@建议操作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

 

 

Atas ialah kandungan terperinci python查看文件夹权限组和用OS模块操作文件夹 . Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn