Maison >développement back-end >Tutoriel Python >Python affiche les groupes d'autorisations de dossiers et utilise les modules du système d'exploitation pour gérer les dossiers

Python affiche les groupes d'autorisations de dossiers et utilise les modules du système d'exploitation pour gérer les dossiers

高洛峰
高洛峰original
2017-03-27 16:26:312416parcourir

@Il est recommandé de mapper le lecteur réseau lors de l'utilisation du dossier du serveur

import win32security
import ntsecuritycon as con

FILENAME = r'D:tmpacc_test' #Folder path

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

ace_count = dacl.GetAceCount() #Afficher les utilisateurs (groupes) avec des autorisations de dossier Quantité
print('Ace count:', ace_count)

for i in range(0, ace_count):
rev, access, usersid = dacl.GetAce(i)
user, group , tapez = win32security.LookupAccountSid('', userid)
print('User: {}/{}'.format(group, user), rev, access)
User: user (0, 0) 1179817 #Uniquement ce dossier, affichage des autorisations
Utilisateur : admin (0, 0) 1245631 #Uniquement ce dossier, modification des autorisations
Utilisateur : administrateur (0, 3) 2032127 #Ce dossier, sous-dossiers Toutes les autorisations

#Supprimer les autorisations du dossier
Vous pouvez désormais lire les anciens ACE et supprimer les anciens est assez simple :
pour i in range(0, ace_count) :
dacl.DeleteAce (0)

#Utilisez add pour ajouter des autorisations
Et après cela, vous pouvez simplement ajouter des privilèges en appelant AddAccessAllowedAceEx() [MSDN]:
userx, domain, type = win32security.LookupAccountName ("", "your.user")
usery, domain, type = win32security.LookupAccountName ("", "other.user")

dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, 3 , 2032127, userx) # Full control @middle 3 signifie que les autorisations seront héritées par les dossiers suivants 0 : Non
dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, 3, 1179785, usery) # Autorisations en lecture seule

sd.SetSecurityDescriptorDacl(1, dacl, 0) #Peut ne pas être nécessaire
win32security.SetFileSecurity(FILENAME, win32security.DACL_SECURITY_INFORMATION, sd)
J'ai pris les numéros 3, 2032127 et 1179785 de la liste dans la première moitié du script (avant d'exécuter le script J'ai configuré des privilèges dans l'Explorateur->Clic droit->Propriétés->Sécurité->Avancé) :
#

#
#Exemple
# essayez :
# permit = '1179817'
# acegroup = 'Users'
# dossier = 'Z:\50.Test Folder\01.2'
# sd = win32security.GetFileSecurity (dossier, win32security.DACL_SECURITY_INFORMATION )
# dacl = sd.GetSecurityDescriptorDacl()
# user1, domain, type = win32security.LookupAccountName('', acegroup)
#
# permisson = int(permit )
# dacl .AddAccessAllowedAceEx(win32security.ACL_REVISION, 0, permisson, user1) #Le 0 au milieu signifie que seul le dossier 3 représente ce dossier, le sous-fichier
# sd.SetSecurityDescriptorDacl(1, dacl, 0) # peut ne pas être nécessaire
# win32security.SetFileSecurity(folder, win32security.DACL_SECURITY_INFORMATION, sd)
# except Exception as e:
# print(e)

#Dossier de contrôle du module OS de Python
#import os
#importshuil

# try:
# os.mkdir(r'Z:50. Dossier de test

 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn