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 Ph Husson (site web personnel) . Évalué à 2.
[^] # Re: C'est pas forcement le shell
Posté par Anonyme . Évalué à 1.
# re chroot
Posté par Chapellon Alexandre . Évalué à 3.
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 Anonyme . Évalué à 1.
Je vais tenter d'ajouter le /bin/false et de l'associer au compte qui fait tourner lighttpd
à suivre ...
[^] # Re: re chroot
Posté par LaBienPensanceMaTuer . Évalué à 1.
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 Anonyme . Évalué à 1.
# Quelques questions à 2 centimes
Posté par slack . Évalué à 1.
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 daggett . Évalué à 2.
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.