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

Langage PHP Discussion :

Donner les droits root à PHP (ww w-data)


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut Donner les droits root à PHP (ww w-data)
    Bonjour à tous, ça fait plusieurs jours que j'essaye d'exécuter des commandes root via PHP mais je n'y arrive pas. J'ai essayer de donner les droits root à www-data mais ça ne fonctionne pas.
    J'ai essayé ensuite de les donner les droits pour la commandes rm mais ça n'a pas fonctionner.
    Voici ce que j'ai essayer dans mon fichier sudoers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    # Faux www-data        ALL(ALL:ALL) NOPASSWD:/var/lib/transmission-daemon/downloads python script1.py
    #fonctionne pas %www-data       ALL=(ALL) NOPASSWD:/bin/rm
    www-data  ALL=(ALL:ALL) ALL
    www-data ALL=NOPASSWD: ALL
    Et voici mon code PHP qui s'exécute bien mais qui se stoppe sur rm.
    (la fonction retourne le résultat de la commande si le paramètre $sortie == True)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function commande($commande, $sortie = False){
    	$com = shell_exec($commande);
    	if ($sortie == True){
    		print($com);
    	}
    }
     
    commande("cd /var/lib/transmission-daemon/downloads && ls && rm test && ls", True);
    Merci pour votre aide.

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Bonjour,

    à quoi correspond test ? C'est un fichier ou un dossier ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Geoffrey74 Voir le message
    Bonjour,

    à quoi correspond test ? C'est un fichier ou un dossier ?
    Test est un fichier que j'essaye de supprimer avec la commande. C'est pour vérifier que j'ai bien les droits Root.

  4. #4
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Avec un ls -al tu as la possibilité de voir les droits des fichiers, ainsi tu pourra voir si tu as les droits sur ton fichier test.

    Que remonte le print ?

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Geoffrey74 Voir le message
    Avec un ls -al tu as la possibilité de voir les droits des fichiers, ainsi tu pourra voir si tu as les droits sur ton fichier test.

    Que remonte le print ?
    Le print me montre une seule fois le contenue du dossier "/var/lib/transmission-daemon/downloads" et s'arrête avant .
    Résultat de ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ Torrent9.ws ] Dosseh - Yuri 2016 script1.py test

    Je viens d'essayer avec "ls -al" et les fichiers appartiennent à l'utilisateur Root :
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    total 80 drwxr-xr-x 12 www-data www-data 4096 Dec 21 13:11 . drwxr-xr-x 7 root root 4096 Aug 26 12:48 .. drwxr-xr-x 3 root root 4096 Sep 27 12:46 LaPouki drwxr-xr-x 9 root root 4096 Aug 26 15:50 bootstrap -rw-r--r-- 1 root root 17 Aug 26 15:50 bootstrap 3.3.7 .txt drwxr-xr-x 3 root root 4096 Aug 26 15:50 images -rw-r--r-- 1 root root 485 Aug 26 15:50 images.html drwxr-xr-x 2 root root 4096 Aug 26 15:50 img -rw-r--r-- 1 root root 10338 Nov 8 00:20 index.html drwxr-xr-x 2 root root 4096 Aug 26 15:50 js drwxr-xr-x 5 root root 4096 Nov 20 18:37 open-eshop-2.6.0 -rw-r--r-- 1 root root 1311 Aug 31 17:01 recherche.php drwxr-xr-x 3 root root 4096 Aug 26 15:50 save drwxr-xr-x 3 root root 4096 Dec 5 13:12 streaming drwxr-xr-x 2 root root 4096 Aug 26 15:50 style -rw-r--r-- 1 root root 511 Aug 26 15:50 style.css drwxr-xr-x 3 root root 4096 Nov 21 18:45 tests -rw-r--r-- 1 root root 905 Dec 21 16:38 torrent2.php
    Merci pour tes réponses.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,

    donner les droits root à PHP ne me semble pas une bonne idée au niveau sécurité. Il doit y avoir une autre façon de faire (un chown sur le dossier concerné par exemple). Que voulez-vous que PHP fasse exactement ?
    Christophe

    Pensez à mettre quand c'est le cas.

  7. #7
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Niveau sécurité c'est très dangereux de pouvoir faire cela, aussi, je me demande si c'est tout simplement possible...

    Si ton fichier est créé avec php, là tu peux lui mettre des droits comme tu le souhaite et d'ailleurs tu peux le supprimer directement en php sans passer par shell_exec, en revanche, si ce n'est pas le cas, c'est peut être normal que tu ne puisse pas.

    Je viens de trouver une librairie php qui semble offire cette possibilité (http://phpseclib.sourceforge.net/)

    et qui fonctionnerai comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    include('Net/SSH2.php');
     
    $ssh = new Net_SSH2('www.domain.tld');
    $ssh->login('username', 'password');
     
    $ssh->read('[prompt]');
    $ssh->write("sudo command\n");
    $ssh->read('Password:');
    $ssh->write("Password\n");
    echo $ssh->read('[prompt]');
    ?>

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Christophe P. Voir le message
    Bonjour,

    donner les droits root à PHP ne me semble pas une bonne idée au niveau sécurité. Il doit y avoir une autre façon de faire (un chown sur le dossier concerné par exemple). Que voulez-vous que PHP fasse exactement ?
    Je voudrai que que quand l'utilisateur du site rentre un lien, le téléchargement d'un torrent débute sur mon serveur. Et pour ce faire il faut exécuter une commande root. Commande qui ne veux pas s'exécuter par php (www-data) n'est pas un utilisateur root.
    C'est à dire un "chown" ?
    Merci pour ta réponse.

    Citation Envoyé par Geoffrey74 Voir le message
    Niveau sécurité c'est très dangereux de pouvoir faire cela, aussi, je me demande si c'est tout simplement possible...

    Si ton fichier est créé avec php, là tu peux lui mettre des droits comme tu le souhaite et d'ailleurs tu peux le supprimer directement en php sans passer par shell_exec, en revanche, si ce n'est pas le cas, c'est peut être normal que tu ne puisse pas.

    Je viens de trouver une librairie php qui semble offire cette possibilité (http://phpseclib.sourceforge.net/)

    et qui fonctionnerai comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    include('Net/SSH2.php');
     
    $ssh = new Net_SSH2('www.domain.tld');
    $ssh->login('username', 'password');
     
    $ssh->read('[prompt]');
    $ssh->write("sudo command\n");
    $ssh->read('Password:');
    $ssh->write("Password\n");
    echo $ssh->read('[prompt]');
    ?>
    Effectivement mon fichier n'est pas créer par PHP donc ça ne marche pas. J'avais déjà essayer de me connecter en SSH via SSH2 (http://php.net/manual/fr/function.ssh2-connect.php) mais j'avais abandonné l'idée car je ne connais pas la POO et je trouve que l'utilisation est compliqué. Mais je vais essayer la librairie que tu m'as proposé.
    Merci pour ta réponse.

  9. #9
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    SI je comprend bien, l'utilisateur rentre un lien, le torrent est téléchargé sur ton serveur et le téléchargement démarre ? Quel fichier est à supprimer, le torrent ou le fichier télécharger via le torrent ?

    Si c'est le torrent, il est bien téléchargé via php ? Donc facilement supprimable ?

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Geoffrey74 Voir le message
    SI je comprend bien, l'utilisateur rentre un lien, le torrent est téléchargé sur ton serveur et le téléchargement démarre ?
    C'est exactement ça.
    Le problème c'est que la commande pour ajouter un fichier ne s'exécute qu'en root.

    Quel fichier est à supprimer, le torrent ou le fichier télécharger via le torrent ?
    Les 2 fichiers seront supprimer au bout d'un certains temps.

  11. #11
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Pourquoi ne pas créer ton fichier torrent depuis le contenu du fichier sur le serveur distant via un file_get_content ?

    Comme ça, pas besoin d'exécuter de commande shell.

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Geoffrey74 Voir le message
    Pourquoi ne pas créer ton fichier torrent depuis le contenu du fichier sur le serveur distant via un file_get_content ?

    Comme ça, pas besoin d'exécuter de commande shell.
    Ah ouais c'est une bonne idée j'y avais pas pensé. Mais il reste toujours le problème pour ajouter le torrent. Il faut l'accès root pour exécuter cette commande.
    Pour résoudre totalement le problème j'ai pensé à enregistrer le lien de l'utilisateur dans une base de donnée. Je le récupère dans un programme python qui tourne en permanence pour scruter les nouvelles entrées utilisateurs (dans la BDD). Mon programme python exécute ensuite la commande.
    Même si c'est un peu lourd comme solution et que je voulais l'éviter le pense que c'est la solution la plus facile qui s'offre à moi

    EDITE : Je viens de penser que je pourrai simplement enregistrer le lien dans un fichier texte créer par PHP et supprimer à la fin de son utilisation. Surtout que j'ai déjà créer un script du genre. En plus ça économiserai la bande passante plutôt que de répéter toutes les secondes la même requête pour voir si un utilisateur n'as pas saisi un nouveau lien.
    Je pense que je vais faire comme ça en plus c'est beaucoup plus sécurisé. Merci beaucoup pour ton aide Geoffrey.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    chown (pour "change owner") est une commande Unix permettant de changer le propriétaire d'un dossier ou d'un fichier.
    Christophe

    Pensez à mettre quand c'est le cas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2011, 00h54
  2. Obtenir les droit root en mode graphique sous ubuntu
    Par maximenet dans le forum Administration système
    Réponses: 5
    Dernier message: 14/10/2006, 15h56
  3. [Apache] donner les droits d'écriture pour PHP
    Par Torpedox dans le forum Apache
    Réponses: 4
    Dernier message: 07/01/2006, 15h01
  4. Comment donner les droits sysdba à un autre user ?
    Par willone dans le forum Débuter
    Réponses: 3
    Dernier message: 24/09/2004, 11h15

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