Forum Programmation.php exec dans un environnement chrooté sans shell

Posté par  .
Étiquettes : aucune
0
25
août
2008
Bonjour,

je tombe sur un os: je pensais que la fonction exec servait justement à exécuter une commande sans passer par un shell.
Or, il semberait que, dans l'environnement chrooté sans shell sous lequel tourne mon lighttpd, exec ne veuille pas faire son boulot: il retourne -1 pour toute commande exécutée et le contenu du deuxième argument passé (un tableau recevant chaque ligne produite par la commande en question) demeure désespérément vide.

Quelqu'un aurait-il une solution pour exécuter, en php, une commande dans un environnement chrooté ne possédant pas de shell ?

merci
  • # C'est pas forcement le shell

    Posté par  (site web personnel) . Évalué à 2.

    C'est pas forcement le shell qui manque, si tu fais un chroot à partir d'une console ca marche ?
  • # re chroot

    Posté par  . Évalué à 3.

    Bah si ton daemon est dans un jail il faut que le programme que tu cherche à executer soit aussi dans le jail:
    Si tu fais un 'exec(/bin/ls)' et que ton daemon est chrooté dans /chroot/lighthttpd, alors tu devra avoir un fichier /chroot/lighthttpd/bin/ls
    Par contre je ne pense pas qu'il soit nécessaire de posséder un vrai shell, un /bin/false devrait faire l'affaire, mais par sécurité je le mettrais aussi dans le jail.
    • [^] # Re: re chroot

      Posté par  . Évalué à 1.

      mon environnement chroot est complet, avec tous les executables et bibliothèques dont ils dépendent.
      Je vais tenter d'ajouter le /bin/false et de l'associer au compte qui fait tourner lighttpd
      à suivre ...
      • [^] # Re: re chroot

        Posté par  . Évalué à 1.

        Hmm pour avoir maintes et maintes fois buté contre le même problème que toi, je jurerai que contrairement à ce que tu penses, ton chroot n'est pas complet.
        Je te conseille te copier dans ton chroot le binaire strace et ses dépendances et de stracer le lancement de ton lighttpd. Tu remarqueras certainement qu'il te manque des choses (nss/fichiers de périphériques/répertoire quelconque).
      • [^] # Re: re chroot

        Posté par  . Évalué à 1.

        non c'est pas ca !
  • # Quelques questions à 2 centimes

    Posté par  . Évalué à 1.

    Pierre Maziere

    Je ne connais pas php ni lighttpd mais sont-ils configurés pour exécuter une commande externe ?

    Faut-il activer ou désactiver une option dans leurs fichiers de configuration ?

    Faut-il leur passer une option en ligne de commande ?

    Peux-tu augmenter le niveau de "verbosité" de lighttpd et de php ?

    Que trouves-tu dans les fichiers de trace de lighttpd et de php ?

    Bon courage.
  • # exec php ou exec unix ?

    Posté par  . Évalué à 2.

    J'arrive une semaine après la bataille, mais bon :)

    L'énoncé est pas clair, pour un programmeur systeme, exec c'est celui de "man 3 exec", et lui n'a pas besoin de shell: il lance le binaire passé.

    Mais si c'est la fonction homonyme de php, là par contre c'est comme le system (de php), elle lance, en réalité, "exec(3) /bin/sh les-arguments-de-exec(php)-...".
    Donc pour php, oui, il faut un vrai bash derrière.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.