[Resolu] Solutions d'upload sur un serveur Apache

quote="usinagaz"C’est quoi les 2-3 truc à faire pour verifier/configurer php ?(…)[/quote]Aucune idée :mrgreen: Vu l’usage que j’en ai, chaque fois que j’ai eu à configurer moi même un apache, j’ai suivi à la lettre un tuto (jamais le même) sans le retenir en me disant que configurer LAMP, c’etait un métier que je n’aimerais pas devoir apprendre.
Les bribes que j’en ai conservé, je te les donnes quand elles me viennent.

Pour le «tchat», je corrige donc régulièrement je regarde sur le forum (plus les copies sont pénibles, plus je regarde…), essayons ça, on verra après

[quote=“MattOTop”]… j’ai suivi à la lettre un tuto (jamais le même) sans le retenir en me disant que configurer LAMP, c’etait un métier que je n’aimerais pas devoir apprendre.
[/quote]MDR !
ok, merci pour les bribes quand même !! :smiley:
Bon, heuu … :blush: en nommant le fichier en .php, ça marche de suite mieux :unamused:
Petites remarques :

  • tu as mis tout le contenu du fichier, ya pas de balise tout ça ?
  • est en majuscule, je l'ai mis en minuscule, mais il vaut mieux en majuscule pour php ?

Okay super fran.b, on va sur l’irc debian ? je m’y connecte, si je ne te vois pas, j’envoie mon amsn en MP ok ?

usinagaz: fran.b te dit justement que ça ne l’arrange pas que ça passe ailleurs que par le forum, me semble t il…

C’est en minuscule qu’il faut les mettre.
w3c.org
Enfin… si tu veux faire ca bien quoi… et php il s’en fout des minuscules majuscules.

Pas mal ce script php jva le garder. C’est assez securisé de ce que j’en ai compris, plutot que de reinventer la roue en perl au risque de faire une erreur.

Et sinon pour finir avec webdav (non j’ai pas d’action chez crosoft), c’est une extension de http donc ca marche sur tous les serveurs web decents sans avoir à installer php ou asp ou perl,… Ca supporte les permissions, les move, les copies, les effacements,… et le dragndrop marche dans explorer.exe.
C’est probablement trop gros pour ton besoin.

[quote=“usinagaz”]

  • tu as mis tout le contenu du fichier, ya pas de balise tout ça ?
  • est en majuscule, je l'ai mis en minuscule, mais il vaut mieux en majuscule pour php ?[/quote]

Non, pas besoin de balise , pour ce qui est des majuscules ou minuscules dans les balises, ça n’a pas d’importance, je met des majuscules pour qu’elle ressorte du code, c’est tout…

Le script est à prendre avec des pincettes quand meme
(je precise que je ne ferais pas mieux probablement)

pas de limite de taille des fichiers (a part la limite de php.ini 4go il me semble)
pas de controle sur l’extension/type de fichier (risque de fichier malicieux)
pas de limite du nombre de fichiers pouvant etre telechargé à la suite (risque de saturation de /tmp)

bien pour comprendre mais à reserver à un espace proteger par mot de passe et avec des utilisateurs de confiance

enfin c’est mon avis …

Une solution un ftp bien configurer et la personne passe par web2ftp.fr

[quote=“rs4”]Le script est à prendre avec des pincettes quand meme
(je precise que je ne ferais pas mieux probablement)

pas de limite de taille des fichiers (a part la limite de php.ini 4go il me semble)
pas de controle sur l’extension/type de fichier (risque de fichier malicieux)
pas de limite du nombre de fichiers pouvant etre telechargé à la suite (risque de saturation de /tmp)

bien pour comprendre mais à reserver à un espace proteger par mot de passe et avec des utilisateurs de confiance

enfin c’est mon avis …[/quote]

Ben oui, il n’y a pas eu de demande sur ce point, le mieux est de charger dans un répertoire qui est un fichier disque virtuel monté en loopback avec aucune autorisation d’éxécution, ça garantit la sécurité. Pour le reste PHP filtre le nom donc de ce coté là ça va (un fichier nommé …/var/www/index.php ne changera pas la destination du fichier) et je crois que PHP bloque la longueur du nom donc je ne vois guère l’apport d’un controle hardu sur ce point: controler l’endroit où arrivent les fichiers me parait mieux plutôt qu’une limitation arbitraire de taille par exemple.

[quote=“rs4”]bien pour comprendre mais à reserver à un espace proteger par mot de passe et avec des utilisateurs de confiance
enfin c’est mon avis …[/quote]tout à fait … mais la racine d’apache est bien un repertoire dont l’accès est filtré …
Pour la limitation de taille, c’est bien plutôt … mais par contre, comment faire que ce soit uploader dans /var/www/updoad et non tmp ? faut le dire dans httpd.conf ?

AH ok, j’avais pas compris pour le tchat … sur le canal irc, ya nobody en plus … bon ok, j’ouvre un fil ;… mais j’y balancerai pas les noms du serveur ftp et apache et les mots de passe et login, donc ceci, par MP ok ?
ça va me rappeller étrangement un certain fil d’il y a pas longtemps, du même “auteur” mais tant pis.

[quote=“fran.b”]le mieux est de charger dans un répertoire qui est un fichier disque virtuel monté en loopback avec aucune autorisation d’éxécution[/quote]Exactement, mais comment faire, je comprend que la moitiè des mots là … :open_mouth:

  • répertoire qui est un fichier disque virtuel ?
  • monté en loopback ?
    Parfois, les commandes en disent plus long que les mots lol …

remplacer:
move_uploaded_file($_FILES[‘fichier_charge’][‘tmp_name’],’/tmp/’.$_FILES[‘fichier_charge’][‘name’]);
par
move_uploaded_file($_FILES[‘fichier_charge’][‘tmp_name’],’/var/www/upload’.$_FILES[‘fichier_charge’][‘name’]);

je ne veux pas dire de betise mais je crois qu’il faut que /var/www/upload ait les droit en ecriture de l’utilisateur sous lequel tourne apache pour pouvoir ecrire dans le repertoire

là on est d’accord plus de probleme de taille , plus de probleme d’execution, et effectivement php limite la taille du nom par defaut

[quote=“usinagaz”][quote=“fran.b”]le mieux est de charger dans un répertoire qui est un fichier disque virtuel monté en loopback avec aucune autorisation d’éxécution[/quote]Exactement, mais comment faire, je comprend que la moitiè des mots là … :open_mouth: (…)[/quote]et surtout, quel interet par rapport à una partoche ? Tu perds de la vitesse de lecture sur un loop.

[quote=“usinagaz”]… comment faire que ce soit uploader dans /var/www/updoad et non tmp ? faut le dire dans httpd.conf ?[/quote]Facile, suffisait de remplacer ‘/tmp/’ par le répertoire voulu dans le script php …
Mais pour les droits d’executions, si je fais un chmod a-x lerep on peut plus y acceder alors ?

Edit : Ah oui rs4, je t’avais pas encore lu … c’est bien ça oui …

ça me fait me demander comment je vais déplacer la racine d’Apache dans /home … je dois être le seul à l’avoir dans /var non ? Et si on m’upload un 300 mo dans /var, ça va faire tout drôle …

je te donne l’adresse d’une doc pour que tu saches quand meme de quoi il est question quand il parle de disque virtuel

http://ftp.traduc.org/doc-vf/gazette-linux/html/2004/109/lg109-A.html

En gros t’as un fichier qui est consideré comme une partition et que tu montes (presque) comme s’il s’agissait d’une partition.

Oui mais tu peux limiter la taille et la changer au fur et à mesure de tes besoins…

Sinon c’est en gros

dd if=/dev/zero of=Disque_upload bs=1M count=100

soit 100M d’upload

mke2fs Disque_upload

mkdir -p /var/www/upload

mount -o loop Disque_upload /var/www/upload -o noexec

chown www-data.www-data /var/www/upload

et voilà.

question tu peux l’etendre à chaud ou meme demonté, tout ca sans perdre le contenu ?

[quote=“rs4”][quote=“fran.b”]
Oui mais tu peux limiter la taille et la changer au fur et à mesure de tes besoins…
[/quote]

question tu peux l’etendre à chaud ou meme demonté, tout ca sans perdre le contenu ?[/quote]

Tu crée un autre disque, tu transfère, tu montes à la place, tu supprimes le vieux disque:

dd if=/dev/zero of=Disque_plus_gros bs=1M count=200

mke2fs Disque_upload

mkdir -p /tmp/gregre

mount -o loop Disque_plusgros /tmp/gregre

cp -dpRf /var/www/upload/* /tmp/gregre

umount /tmp/gregre

umount /var/www/upload ; mount -o loop Disque_plusgros /var/www/upload -o noexec

chown www-data.www-data /var/www/upload

rm Disque_upload

et voilà

oui, merci, je sais ce qu’est un loopback, mais je ne comprends pas l’interet par rapport à une vraie partition montée en noexec avec des quotas.
Par ailleurs, quitte à faire un filesystem de taille limitée, je le ferais avec qemu-img, pour qu’il ne prenne pas forcément toute sa taille tout de suite.

[quote=“MattOTop”]oui, merci, je sais ce qu’est un loopback, mais je ne comprends pas l’interet par rapport à une vraie partition montée en noexec avec des quotas.
Par ailleurs, quitte à faire un filesystem de taille limitée, je le ferais avec qemu-img, pour qu’il ne prenne pas forcément toute sa taille tout de suite.[/quote]

Le problème est qu’il faut avoir prévu la partition avant d’installer la machine, et qu’il faut installer les quotas et maitriser qemu-img (que je e connais pas) alors que cette méthode peut s’improviser sur une machine immédiatement et simplement. Je n’ai jamais dit que c’était la meilleure, j’ai juste dit qu’elle marchait, qu’elle était simple et souple et pouvait être mise en oeuvre en deux minutes. C’est tout…

PS: ma réponse voulait faire coup double: te répondre sur l’intérêt (pas de partition à prévoir à l’avance) et expliquer à usineagaz comment mettre ça en oeuvre…

trés interessant … ces fichiers virtuels, et merci pour le lien rs4 je bookmark …
bon ben je crois que je vais mettre en résolu et lancer le fil sur ftp et apache maintenant … que vous êtes bien chauds :smiling_imp:
Heu, j’ai tout simplement fait un lien uploads --> /home/apache/depot, un chgrp -R www-data /home/apache et fermer les droits pour other en tout
Comme par enchantement, si j’upload un exécutable là dedans, il se met en -rw-r–r-- donc c’est bon … enfin … c’est bon ?
Je me demandais où ça se régle déjà ça … et est-ce que la personne n’a aucun moyen de changer les droits de ce fichier ? normalement non, vu que c’est un user avec un shell /bin/false mais quand même …

Merci fran.b, super ce script :stuck_out_tongue: