Re: Executer des scripts root via http/php

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: Liste Guilde
Subject: Re: Executer des scripts root via http/php
Le mercredi 8 septembre, Jean-Marc Coursimault a écrit :
> Comment exécuter, à partir d'une page php un script qui doit tourner sous
> root ? A part le mettre suid ?


Je ne pense pas que ça marche : le script est interprété, ce n'est pas
vraiment un exécutable. J'essayerais plutôt de faire un vrai exécutable
suid root en C, aussi petit que possible, et l'appeler par la fonction
PHP system(). Ou alors tu fais ton script en Perl et tu utilises le
mécanisme suidperl et le « taint mode ».

Mais suis d'abord le conseil de Nooks et assure-toi que tu es bien
obligé d'être root.

> Est-ce que le mécanisme de suexec s'applique aussi aux scripts PHP ?


Il me semble que non : le scrip suivant

    <?php
        header("Content-Type: text/plain");
        system("id");
    ?>


produit chez moi

    uid=48(apache) gid=48(apache) groups=48(apache)


alors que celui-ci :

    #!/bin/sh
    echo "Content-Type: text/plain"
    echo
    id


me donne

    uid=501(edgar) gid=501(edgar) groups=501(edgar),5(tty)[...]


La différence à mes yeux est que le script shell est exécuté (au sens de
l'appel système execve()) alors que le script PHP est interprété par le
processus Apache lui-même (l'interpréteur PHP est en module).

D'ailleurs suexec ne t'aidera pas si tu dois vraiment être root :

    Presently, suEXEC does not allow 'root' to execute CGI/SSI
    programs.


dixit http://httpd.apache.org/docs/suexec.html .

-- 
Edgar Bonet           Maison : 04 76 21 29 16    Bureau : 04 76 88 10 96
3 rue Jean Prévost    Mobile : 06 77 19 79 39    Fax    : 04 76 88 11 91
38000 Grenoble        guilde@???     www.edgar-bonet.org