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 :

[Système] gestion des processus linux [Fait]


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut [Système] gestion des processus linux
    Salut,
    j'essaie de faire une interface à partir de laquelle les utilisateurs peuvent lancer des programmes sur le serveur.
    Ma question porte plus précisement sur la gestion des processus, de manière à ce que les utilisateurs puissent savoir si leur analyse tourne toujours ou si elle est finie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo exec('ps aux | grep utilisateurx');
    qui me donne sur ma page web:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data 22998 0.0 0.0 2480 856 ? R 10:33 0:00 ps aux
    Visiblement, ce n'est pas la totalité des processus surement du à une restriction des droits de www-data (?). Peut être faudrait-il changer d'utilisateur pour lancer cette commande? Mais comment faire par rapport au mot de passe si j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('su utilisateurx');
    ?

    Merci d'avance pour vos conseils

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    sudo est beaucoup plus intéressant car il est configurable : demande du mot de passe ou non, définition des commandes exécutables, ... Je vous laisse le soin de faire une recherche sur ce sujet.


    Julp.

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    merci pour ta réponse la commande sudo semble en effet apropriée.
    mais même en donnant les droits d'administrateur pour la commande ps (j'en suis encore qu'aux tests), il ne me sort tous les processus.
    Voici mon sudoers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Host alias specification
     
    # User alias specification
    User_Alias BIOUSER=bellemaine,www-data
     
    # Cmnd alias specification
    Cmnd_Alias BIOCMD=/bin/ps
     
    # User privilege specification
    root    ALL=(ALL) ALL
    BIOUSER ALL=NOPASSWD:BIOCMD
    ma commande php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo exec('sudo ps aux');
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    root 23223 0.0 0.0 2480 856 ? R 13:28 0:00 ps aux
    on voit bien que la commande est exécuté en tant que root, mais pourquoi n'y a t-il que celle là?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    cette commande devrait afficher tous les processus quelque soit l'utilisateur sauf limitations précises

  5. #5
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    ps -ef
    Je viens d'essayer et ça ne marche pas non plus.
    Sur le terminal, ça fonctionne bien, j'ai la liste entière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    map:/etc$ whoami
    www-data
    map:/etc$ sudo ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 Nov01 ?        00:00:00 init [2]  
    root         2     1  0 Nov01 ?        00:00:00 [keventd]
    root         3     1  0 Nov01 ?        00:00:00 [ksoftirqd_CPU0]
    root         4     1  0 Nov01 ?        00:00:00 [kswapd]
    root         5     1  0 Nov01 ?        00:00:00 [bdflush]
    root         6     1  0 Nov01 ?        00:00:00 [kupdated]
    ...
    mais à partir de la page php... ça ne marche pas.


    je me pose également une autre question. Est ce qu'un utilisateur peut (après s'être identifié) utiliser des pages web en tant que lui même non www-data?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    ok ca m'intriguait, alors j'ai cherché un peu, et j'ai résolu le problème en utilisant la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo shell_exec ("ps -ef");
    je crois que exec lance un nouveau shell dans un mode protégé ou quelque chose du genre et que c'est pour ça qu'il n'a pas la vision des autres processus

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Non.
    Si tu lis la doc de exec : http://php.net/manual/fr/function.exec.php
    il est dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Valeurs de retour
     
    La dernière ligne du résultat de la commande. Pour exécuter une commande et obtenir le résultat sans aucun traitement, il faut utiliser la fonction passthru().
     
    Pour récupérer la sortie de la commande exécutée, assurez-vous de définir et d'utiliser le paramètre output.
    Donc il faut que tu utilises exec de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec('ps -ef', $output);
    print_r($output);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Linux et gestion des processus
    Par Invité dans le forum Linux
    Réponses: 3
    Dernier message: 28/01/2013, 10h16
  2. Gestion des Processus sur Linux
    Par 3logy dans le forum Débuter
    Réponses: 4
    Dernier message: 11/11/2010, 16h45
  3. Linux gestion des processus
    Par nonix dans le forum Linux
    Réponses: 6
    Dernier message: 10/06/2010, 12h16
  4. Gestion des processus sous Linux
    Par progdevlop dans le forum C
    Réponses: 18
    Dernier message: 27/06/2009, 15h45
  5. [DB400][Débutant]comprendre la gestion des processus actif
    Par horalass dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 12/12/2006, 10h26

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