IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python + fichiers Root + SetUid


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Par défaut Python + fichiers Root + SetUid
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tutu@linux:~/Desktop> touch /home/tutu/Desktop/test.py
    contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.......
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Deux points :

    - M'est d'avis que le problème de vient des droits de /var/log/log_serveur zesamoth n'as probablement pas le droit d'y ecrire (et c'est voulu les logs c'est pour les processus et les admins)

    - Il est fortement déconseillé d'utiliser le SetUid ! Si le script venait â être "corrompu" il aurait le droit de tout faire ou presque. Un simple droit d'exécution par root devrait suffire.

    - pour les logs je vous conseille l'usage du module logging directement depuis votre premier script (pourquoi un deuxième scrip special logs ?)

    - Si les logs doivent être "privés" alors il est plus probable que le premier script doit aussi appartenir à root et qu'il soit "seulement" executable par root et le groupe admin (sans SetUid et sans droit d'exécution pour les autres users). Et c'est alors à un processus root de le lancer (cron par exemple ou via /etc/init.d si c'est un serveur)

    - Au pire, logging permet d'enregistrer les logs ailleurs que sous /var/log

Discussions similaires

  1. Exemple Webservice Python + fichier WSDL
    Par Enthau dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 26/05/2017, 16h52
  2. [AppleScript] modification de fichiers root
    Par MrSoul dans le forum AppleScript
    Réponses: 3
    Dernier message: 24/02/2012, 11h27
  3. Fichiers root dans mon home
    Par Skyounet dans le forum Debian
    Réponses: 5
    Dernier message: 10/03/2007, 18h45
  4. [swig] python->C->python, pointeur de fichier
    Par PyBio dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 10/11/2005, 15h50
  5. Les 128 derniers bits d'un fichier en ligne avec Python ?
    Par ecocentric dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 26/09/2005, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo