Est-il possible de demander une racine pw sans stocker dans ma mémoire de script et d'exécuter certaines des commandes os. * En tant que root?Comment exécuter les méthodes os. * En tant que root?
Mon script
- scanne certains dossiers et fichiers pour vérifier si elle peut faire le travail
- fait quelques changements dans/etc/...
- crée un dossier et les fichiers qui doivent être la propriété par l'utilisateur qui a exécuté le script
(1) peut être effectué en tant qu'utilisateur normal. Je peux faire (2) par le sudoing le script, mais alors le dossier et les fichiers dans (3) seront root. Le problème est que j'utilise beaucoup de os.makedirs, os.symlink, etc, ce qui m'empêche de le rendre exécutable par un utilisateur normal.
Réservoirs 2 toutes les suggestions
La solution à ce jour est la suivante:
# do all in sudo
os.chown(folder, int(os.getenv('SUDO_UID')), int(os.getenv('SUDO_GID')))
grâce à gnibbler pour soupçon.
Vous devrez créer les dossiers et les fichiers en tant que root, puis utiliser 'os.chown' pour changer la propriété de l'utilisateur correct –
Cela a fonctionné! os.chown (chemin, pwd.getpwnam (os.getenv ('SUDO_USER')) [2]) –