Définition des autorisations de dossier dans Windows à l'aide de Python
Je suis à l'aide de Python pour créer un nouveau dossier personnel lorsqu'un utilisateur AD compte est créé. Le dossier est en cours de création, mais les autorisations ne sont pas correctes. Peut-Python ajouter l'utilisateur dans le dossier nouvellement créé et modifier leurs autorisations? Je ne suis pas sûr de l'endroit où pour commencer le codage.
source d'informationauteur ren | 2012-08-28
Vous devez vous connecter pour publier un commentaire.
Vous voulez le
win32security
module, qui est une partie de pywin32. Voici un exemple de faire le genre de chose que vous voulez faire.Cet exemple crée une nouvelle liste DACL pour le fichier et remplace l'ancien, mais il est facile de modifier l'existant; tout ce que vous devez faire est d'obtenir la DACL existante à partir du descripteur de sécurité au lieu de créer un vide, comme suit:
Pour ceux qui sont intéressés dans la "liste" de les descripteurs de sécurité pour les As, ce qui-ont-ya utiliser les structures de données suivantes. J'ai eu un peu d'aide de temps de retour avec ce et ont utilisé ce depuis toujours.
Passer le masque à partir d'une donnée de la liste DACL /chemin d'accès:
Voici une version de kindall réponse qui utilise
EXPLICIT_ACCESS
entrées avecSetEntriesInAcl
ce qui crée une bonne ACL avec l'As dans l'ordre canonique (par exemple, accès refusé As sont répertoriés en premier). Aussi, cette version jeux de la liste à l'aide deSetNamedSecurityInfo
qui prend en charge la propagation Ace pouvant être héritées, à la différence de la fonction obsolèteSetFileSecurity
.utiliser os.chmod
http://docs.python.org/library/os.html#os.chmod
vous pouvez définir les autorisations avec le système d'exploitation.chmod
Le mod est écrit en base 8, si vous le convertir en binaire, il serait
000 111 111 000
rwx rwx rwx
La première rwx est pour le propriétaire, le deuxième est pour le groupe et le troisième est pour le monde
r=read,w=écriture,x=execute
Les autorisations que vous consultez le plus souvent sont
7 lecture/écriture/exécution - que vous devez exécuter pour les répertoires pour voir le contenu
6 lecture/écriture
4 readonly
Lorsque vous utilisez le système d'exploitation.chmod, il est logique d'utiliser la notation octale donc
Rappelez-vous ai-je dit que vous voulez généralement les répertoires "exécutable" de sorte que vous pouvez voir le contenu.
Remarque: La syntaxe de 0o777 est pour Python 2.6 et 3+. sinon pour la série 2, il est 0777. 2.6 accepte une syntaxe alors celui que vous choisissez dépend de si vous voulez être en avant ou en arrière compatible.
Pour commencer, le profil de l'utilisateur répertoire est créé automatiquement s'il n'existe pas, et les autorisations sont définies pour les paramètres par défaut. Sauf si vous avez un besoin spécifique pour l'utilisation de python, vous pouvez simplement le laisser à windows de créer le dossier et de tri des autorisations pour vous.
Si vous souhaitez utiliser python de toute façon, vous pourriez envisager d'utiliser simplement des os.système() pour appeler cacls ou icacls avec les bons arguments. Et au lieu d'autorisations, vous pouvez tout simplement besoin de changer de propriétaire du dossier de l'utilisateur qui sera le propriétaire du dossier.
Bonne chance avec vos projets.