Comment puis-je vérifier les privilèges d'administrateur pour mon script pendant l'exécution?Privilèges d'administrateur pour le script
Répondre
Sur Unix, vous pouvez vérifier si vous êtes root en utilisant la fonction os.getuid:
os.getuid() == 0 and "root" or "not root"
Le concept de « admin-privilèges » dans notre journée de contrôle de privilège à grain fin devient difficile à définir. Si vous utilisez unix avec un modèle de contrôle d'accès "traditionnel", obtenir l'identifiant d'utilisateur effectif (disponible dans le module os) et vérifier cela par rapport à root (0) pourrait être ce que vous cherchez. Si vous savez que l'accès à un fichier sur le système nécessite les privilèges que vous voulez que votre script ait, vous pouvez utiliser os.access() pour vérifier si vous avez assez de privilèges.
Malheureusement, il n'y a pas de méthode facile à utiliser. Vous devez trouver ou définir le modèle de sécurité utilisé, les API fournies par le système pour interroger et définir les privilèges et essayer de localiser (ou éventuellement de vous implémenter) les modules Python appropriés pouvant être utilisés pour accéder à l'API.
La question classique, pourquoi avez-vous besoin de savoir? Que faire si votre script essaie de faire ce qu'il doit faire et «juste» attrape et gère correctement les échecs?
Si vous êtes juste essayer de voir si vous avez accès à un certain fichier qui nécessite des droits d'administration, une bonne façon de vérifier serait:
import os
print os.access("/path/to/file", os.W_OK)
#replace W_OK with R_OK to test for read permissions
D'autre part, si vous avez vraiment besoin de savoir si un utilisateur est un compte administratif, vous pouvez également utiliser ce code sur Windows 2000 et supérieur:
import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()
par conséquent, une meilleure façon multiplateforme pour savoir si un utilisateur est un administrateur est:
import ctypes, os
try:
is_admin = os.getuid() == 0
except:
is_admin = ctypes.windll.shell32.IsUserAnAdmin()
print is_admin
Bien sûr, cette méthode ne détectera que si l'utilisateur est racine sous Unix ou est membre du groupe Administrateurs sous Windows. Cependant, cela est suffisant pour la plupart des objectifs, à mon avis. Notez également que cela échouera sur les versions Windows inférieures à 2000, ainsi que Windows ME, car ce sont des versions DOS de Windows et n'ont aucune notion d'autorisations.
- 1. Privilèges Sharepoint
- 2. Jailbreaké iPhone - privilèges root
- 3. Privilèges utilisateur ASP.NET
- 4. Privilèges requis par ServiceController
- 5. .NET - Privilèges d'application inférieurs
- 6. Impossible de convertir script Bash pour le script zsh
- 7. De quels privilèges Oracle ai-je besoin pour utiliser DBMS_METADATA.GET_DDL?
- 8. Ajouter une image pour décompter le script
- 9. Erreur SQL avec le script pour créer
- 10. méthodes d'implémentation pour interfacer le script xcode
- 11. Action multiple pour le script Loadrunner?
- 12. CommentFaire - Définir délégué des privilèges Active Directory
- 13. Augmenter par programme les privilèges de l'utilisateur
- 14. Acquisition des privilèges d'accès d'un utilisateur actif
- 15. Privilèges de suppression en C++ sur Windows
- 16. Moins de privilèges requis pour installer un service Windows à distance
- 17. Script pour l'écran bash
- 18. Intégrer le script Python
- 19. dans le script shell
- 20. Comment conserver l'écho de lot DOS pour le script parent?
- 21. VS 2008 Générer Créer un script pour le projet échoue
- 22. Vous recherchez un script pour colorier le code C++
- 23. Script pour supprimer récursive répertoire CVS sur le serveur
- 24. Pour vérifier si le script s'exécute toutes les 5 minutes
- 25. Sql Server Management - Option pour éviter le script de l'assemblage?
- 26. Comment faire pour arrêter le script batch sur l'échec
- 27. script pour enregistrer le fichier en tant qu'unicode
- 28. Comment spécifier un chemin relatif pour le script jsUnit-ant?
- 29. Possible pour Google Bot d'exécuter le script PHP
- 30. GNU LD Script pour attraper le groupe C++/dynsym Sections
+1. Toutes les considérations valables. En effet, il est parfois préférable d'aller de l'avant et d'agir en cas d'échec. – Stephan202