python查看檔案夾許可權組和用OS模組操作檔案夾

來源:互聯網
上載者:User
@建議操作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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.