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 :

impersonation / run as ?


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut impersonation / run as ?
    Bonjour à tous
    je cherche à faire une impersonation (un runas) dans mon code, en fonction de la personne qui est loguée sur la page.

    En effet, par défaut le code de l'utilisateur se déroule avec les droits du serveur web Apache, mais je souhaiterais ici qu'il prenne les droits de la personne connectée au serveur, dont j'ai l'identifiant et le mot de passe.

    Comment faire ? Est-ce possible ?
    (c'est opur se loguer et faire des actions sur le serveur, comme des mkdir et autres fonctions d'admin...)

    bye
    Nico
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

  2. #2
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Bonjour,

    Il y a une solution que j'avais utilisé lors de mon BTS : tu rajoutes un champ dans ta base de données avec différentes valeurs ( par exemple 1 pour user, 2 pour admin ) et sur tes pages, en plus de récupérer login/mot de passe tu récupères ce champ, et tu affiches ce que tu veux en fonction de sa valeur.
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  3. #3
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Hello

    merci pour la réponse, mais ce n'est pas ce que je cherche.

    mon problème est une question de droit pour effectuer des actions sur le serveur et eviter les "action denied" quand les actions en questo nécessitent des droits d'admin (root).

    d'autres suggestions ?

    bye
    Nico
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    C'est forcement Apache qui va exécuter les actions. Sinon faudrait redémarrer le serveur web à chaque connexion avec un nouvel user, t'imagines pas le bordel ?

    Faut partir sur ce que propose FirePrawn, couplé à des appels système pour obtenir les droits de l'utilisateur en question avant d'exécuter l'action ça doit être possible, bien qu'un poil chiant.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par Nicopilami Voir le message
    d'autres suggestions ?
    Bonjour,

    ce que vous essayez de faire est éminemment dangereux du point de vue de la sécurité, mais maintenant si vous savez minimiser les risques vous pourriez essayer la solution suivante (sous linux/unix, parce que sous windows, la solution ne fonctionnera pas) :
    - donner un shell au user apache (qui normalement ne devrait pas en avoir)
    - inscrire le user apache dans la liste des sudoers
    - lancer vos commandes systèmes via la fonction exec de PHP en construisant vos actions avec la commande sudo du système sous-jacent (non testé, juste une idée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $user = 'user'; // utilisateur que vous avez identifié dans votre application
    $cmd = 'sudo -u '.$user.' whoami';
    echo exec($cmd);
    ?>
    je n'ai pas testé cette solution, mais il me semble qu'elle devrait fonctionner (au delta des points de configuration que j'ai certainement oublié).

    HTH.

  6. #6
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Citation Envoyé par Agnello Fabrice Voir le message
    Bonjour,

    ce que vous essayez de faire est éminemment dangereux du point de vue de la sécurité, mais maintenant si vous savez minimiser les risques vous pourriez essayer la solution suivante
    Je suis conscient de ce problème de sécurité et j'ai normalement mis en place un système d'authentification efficace (en tout cas j'espère), en utilisant le SDK de mon serveur (fonctions d'authent "built in", donc pas du bidouillage).

    J'ai essayé d'utiliser AjaxTerm mais je "subis" de gros temps de latence que je ne souhaiterais pas avoir.

    Citation Envoyé par Agnello Fabrice Voir le message
    (sous linux/unix, parce que sous windows, la solution ne fonctionnera pas) :
    Le serveur est sous Unix

    Citation Envoyé par Agnello Fabrice Voir le message
    - donner un shell au user apache (qui normalement ne devrait pas en avoir)
    - inscrire le user apache dans la liste des sudoers
    euh... comment faire cela ?
    (vous l'aurez compris, je suis novice en linux)

    Citation Envoyé par Agnello Fabrice Voir le message
    - lancer vos commandes systèmes via la fonction exec de PHP en construisant vos actions avec la commande sudo du système sous-jacent (non testé, juste une idée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $user = 'user'; // utilisateur que vous avez identifié dans votre application
    $cmd = 'sudo -u '.$user.' whoami';
    echo exec($cmd);
    ?>
    c'est ce que je pensais faire.

    Citation Envoyé par Agnello Fabrice Voir le message
    je n'ai pas testé cette solution, mais il me semble qu'elle devrait fonctionner (au delta des points de configuration que j'ai certainement oublié).
    HTH.
    Merci, je testerai ca ce soir

    bye
    Nicolas
    si ton travail est difficile et tes résultats sont minces
    n’oublie pas qu’un jour, le grand chêne a été un gland comme toi.

Discussions similaires

  1. [Securité] Différence entre Impersonation et Authentication?
    Par Laurent Dardenne dans le forum Windows
    Réponses: 6
    Dernier message: 13/08/2009, 12h32
  2. [petites questions][debutant]run et mise en forme
    Par kurgan dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 22/10/2005, 18h40
  3. [C#] [User] Simulation d'un "Run as"
    Par Vessaz dans le forum Windows Forms
    Réponses: 9
    Dernier message: 16/07/2004, 11h29
  4. [Thread]Faut-il boucler la méthode run ?
    Par Pill_S dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 17/06/2004, 23h53
  5. Réponses: 2
    Dernier message: 05/03/2003, 00h24

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