Bonjour à tous,
Alors voila, je vais esayer d'être clair... J'aimerais depuis un script python pouvoir lancer un autre script qui nécessiterait les droits d'administration pour écrire dans certains fichiers. Alors je me suis tourné vers la solution du SetUid pour que le premier script appelant prenne les droits de son propriétaire à savoir "root". Avant même de faire cela j'ai voulu tester le SetUid, sans succès. J'ai besoin de votre aide pour me dire à quel moment je me plante dans la manip ci dessous
1 ) Je crée le script python, petit script tout simple se trouvant dans /home/zesamoth/Desktop:
tutu@linux:~/Desktop> touch /home/tutu/Desktop/test.py
contenant :
1 2 3
| #! /usr/bin/python
import os
os.system("echo coucou>>/var/log/log_serveur")#Doit juste écrire une ligne dans un fichier accessible qu'à root |
2) Je change le propriétaire du script pour qu'il appartienne à Root et au groupe Root. Je donne les droits d'éxecution et lecture au groupe et au reste du monde et je donne le SetUid au script.
1 2 3 4
| chmod 755 test.py
chmod u+s test.py
tutu@linux:~/Desktop> ls -l test.py
-rwsr-xr-x 1 root root 77 mar 30 00:44 test.py |
3) Je crée le fichier /var/log/log_serveur qui va recevoir du texte. Il appartient à Root et seul root à le droit d'écrire dedans.
1 2
| zesamoth@linux:~/Desktop> ls -l /var/log/log_serveur
-rw-r--r-- 1 root root 7 mar 29 23:50 /var/log/log_serveur |
Et pourtant.......
1 2
| zesamoth@linux:~/Desktop> python test.py
sh: /var/log/log_serveur: Permission non accordée |
Une piste me vient à l'esprit: Quand je lance la commande python test.py, quels sont les droits ? En fait je pense qu'ici le SetUid du fichier ne joue pas du tout puisque c'est la commande python qui est lancée, le fichier n'étant qu'un paramètre.
Alors comment faire pour que je puisse lancer mon script python sans entrer la commande python. Un peu comme un ls ou comme un rcapache2, ici je ferais un test.py tout court.
Merci beaucoup pour votre aide.
Zesamoth
Partager