#1 Le 06/12/2017, à 03:21
- Couin
[RESOLU] Droit réseau et dossiers créés php/apache
Bonjour à tous,
Je suis confronté à un souci sur ma config. Merci d'avance à ceux qui auront le courage de lire car j'avoue c'est un peu long , mais j'essaye d'être précis.
Le pc est en Ubuntu 12.04 LTS (les versions d'après m'obligeant à mettre des versions apache, php etc etc plus récentes, certains de mes scripts ne seront plus supportés donc pour le moment il ne m'est pas envisageable de mettre à jour vers plus récent), avec Apache 2.2.22, PHP 5.3.10-1ubuntu3 , MySQL 5.5.22.
Mon répertoire www est sur un volume raid.
Il est partagé sur le réseau (comme d'autres répertoires étant aussi sur le même volume raid) via Samba.
Il y a cependant une subtilité (appliquée à tous les partages) afin que je puisse y accéder depuis mon réseau local, sans nécessité d'authentification depuis n'importe quel machine.
Voici une partie du fichier smb.conf :
map to guest = bad user
# map to guest = bad password
usershare allow guests = yes
[www]
path=/media/raid/www
read onyl=no
writable=yes
force create mode = 0777
force directory mode = 0777
guest ok = Yes
Je peux ainsi depuis un autre poste sur le réseau, ajouter, modifier, supprimer les répertoires de mon www (et pareil pour les autres tels que mon répertoire "Public", "Utilitaires" et "Mails" dans lequel je stock mon fichier pst de ma messagerie outlook.
Jusque là tout va bien.
J'ai un script (basé sur https://blueimp.github.io/jQuery-File-Upload/ ) me permettant d'uploader des fichiers vers mon serveur, depuis un lien web. Dans les option blueimp, j'ai choisi que chaque session d'upload ait un dossier créé avec un nom aléatoire (afin que les autres ne voient pas ce qui a déjà été uploadé).
A noter que pour que le script fonctionne (au même titr eque les autres script où php crée des fichiers ou répertoires), j'ai été obligé de modifier www-data en super (nom d'utilisateur de la machine faisant office de server), dans envvars :
# export APACHE_RUN_USER=www-data
export APACHE_RUN_USER=super
Je me suis aperçu il y a peu, en voulant faire le ménage, via le partage, sur les fichiers déjà uploadés, que je ne pouvais pas (accès refusé). Dans un dossier créé par le script lors d'un upload, je ne peux non plus ajouter de fichier ou modifier des existants.
En gros, je n'ai que la lecture de possible sur le dossier et par conséquent, son contenu.
Si je regarde les droits d'un répertoire créé par php/apache, j'ai ceci :
drwxr-xr-x
Si je fais un chmod 777 sur le répertoire, j'obtiens cela :
drwxrwxrwx
et je peux supprimer le répertoire et son contenu sans problème, depuis le réseau.
Je voudrais que les répertoires que crée apache hérite des droits 777 pour que je puisse les supprimer depuis n'importe où.
En revanche, je n'ai totalement aucune idée de ce que je pourrais faire pour résoudre le problème
Si quelqu'un a une astuce, je suis preneur
Merci de m'avoir lu
Couin
Dernière modification par Couin (Le 06/12/2017, à 18:27)
Installation en cours : Ubuntu 20.04 avec PHP MySQL PhpMyAdmin
Retrouvez-moi tous les dimanches à 22H sur Eurodance 90 pour une heure de mix live au vinyle
Hors ligne
#2 Le 06/12/2017, à 05:18
- krodelabestiole
Re : [RESOLU] Droit réseau et dossiers créés php/apache
c'est ton script qui définit les permissions.
en l'occurrence comme tu utilises PHP tu utilises sans doute le fichier jQuery-File-Upload/server/php/UploadHandler.php :
https://github.com/blueimp/jQuery-File- … andler.php
tu peux chmod en php dans le script
de la ligne 1090 à 1108
remplace
if ($uploaded_file && is_uploaded_file($uploaded_file)) {
// multipart/formdata uploads (POST method uploads)
if ($append_file) {
file_put_contents(
$file_path,
fopen($uploaded_file, 'r'),
FILE_APPEND
);
} else {
move_uploaded_file($uploaded_file, $file_path);
}
} else {
// Non-multipart uploads (PUT method support)
file_put_contents(
$file_path,
fopen($this->options['input_stream'], 'r'),
$append_file ? FILE_APPEND : 0
);
}
par
if ($uploaded_file && is_uploaded_file($uploaded_file)) {
// multipart/formdata uploads (POST method uploads)
if ($append_file) {
file_put_contents(
$file_path,
fopen($uploaded_file, 'r'),
FILE_APPEND
);
chmod($uploaded_file, 0777);
} else {
move_uploaded_file($uploaded_file, $file_path);
chmod($file_path, 0777);
}
} else {
// Non-multipart uploads (PUT method support)
file_put_contents(
$file_path,
fopen($this->options['input_stream'], 'r'),
$append_file ? FILE_APPEND : 0
);
chmod($this->options['input_stream'], 0777);
}
j'ai pas test mais je pense que ça devrait fonctionner pour changer les permissions des fichiers.
ligne 51 tu peux aussi remplacer le
'mkdir_mode' => 0755,
par
'mkdir_mode' => 0777,
pour changer les permissions des répertoires.
//
Le pc est en Ubuntu 12.04 LTS (les versions d'après m'obligeant à mettre des versions apache, php etc etc plus récentes, certains de mes scripts ne seront plus supportés donc pour le moment il ne m'est pas envisageable de mettre à jour vers plus récent), avec Apache 2.2.22, PHP 5.3.10-1ubuntu3 , MySQL 5.5.22.
je te conseille d'utiliser docker plutôt que de rester sur un os préhistorique :
https://doc.ubuntu-fr.org/docker_lamp
Dernière modification par krodelabestiole (Le 06/12/2017, à 05:55)
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents
En ligne
#3 Le 06/12/2017, à 05:21
- krodelabestiole
Re : [RESOLU] Droit réseau et dossiers créés php/apache
et si je peux me permettre ton setup me parait très exotique et bancal...
est-ce qu'une solution comme nextcloud (qui permet un partage en WebDAV) ne conviendrait pas mieux à ton usage ?
Dernière modification par krodelabestiole (Le 06/12/2017, à 05:29)
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents
En ligne
#4 Le 06/12/2017, à 15:47
- Couin
Re : [RESOLU] Droit réseau et dossiers créés php/apache
Hellooo
Merci d'avoir répondu
Je ne pensais pas que c'était le script php qui faisait les droits mais l'utilisateur/groupe du serveur sur lequel il tourne.
J'ai testé tes indications sur le handler (c’est effectivement ce que j'utilise) mais cela n'a pas marché, mais je chercherais dans ce sens, d'autant plus que j'ai testé le chmod sur un autre script php et cela a marché du premier coup donc au moins je sais que la fonctionnalité est valide
Pour ce qui est du setup exotique, bah disons qu'avant j'utilisais un XP avec WAMP et partage du répertoire www (et aussi les mêmes autres, Public, Utilitaires... ) mais pour une raison dont je n'ai jamais eu la réponse, WAMP était très lent sur le réseau local mais pas depuis l’extérieur ni depuis le poste "serveur" même. J'en ai tenté des trucs , même d'installer sur une autre machine fraichement masterisée, c'était pareil. J'ai donc cherché coté linux pour testé et là aussi, pas mal d'essais, sachant que je n'y connaissais totalement rien en linux (bon c'est pas tellement mieux aujourd'hui mais plus qu'au début). A ce jour, il remplit totalement le rôle que j'attends : Partage de fichiers (donc via Samba) sur réseau local (je ne veux pas faire un cloud pour le moment), serveur HTTP.
Quel(s) point(s) trouves tu exotique et bancal ? Le fait d'avoir fait en sorte que je puisse parcourir les partages en tant qu'invité ?
L'OS est effectivement maintenant ancien mais même si je le mis à jour, mais après, mettre sans cesse à jour (jusqu'au jour où le matériel n'est plus éligible aux mises à jour), je me demande si ca ne sera pas des risques à ce que "ah bah tiens, tel truc marche plus" et devoir passer des heures à chercher pourquoi
Merci en tout cas pour le coup de palme
Installation en cours : Ubuntu 20.04 avec PHP MySQL PhpMyAdmin
Retrouvez-moi tous les dimanches à 22H sur Eurodance 90 pour une heure de mix live au vinyle
Hors ligne
#5 Le 06/12/2017, à 16:18
- krodelabestiole
Re : [RESOLU] Droit réseau et dossiers créés php/apache
Je ne pensais pas que c'était le script php qui faisait les droits mais l'utilisateur/groupe du serveur sur lequel il tourne.
l'utilisateur et le groupe sont www-data par défaut sur ubuntu pour apache (et j'imagine que tu utilises PHP en module d'Apache donc c'est le même utilisateur).
tu peux éventuellement changer le umask de Apache pour changer les permissions par défaut des fichiers créés
en ajoutant
umask 000
dans /etc/apache2/envvars
J'ai testé tes indications sur le handler (c’est effectivement ce que j'utilise) mais cela n'a pas marché
bizarre...
essaie p-e le chmod avant le move_uploaded_file :
chmod($uploaded_file, 0777);
move_uploaded_file($uploaded_file, $file_path);
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents
En ligne
#6 Le 06/12/2017, à 18:26
- Couin
Re : [RESOLU] Droit réseau et dossiers créés php/apache
Re
Merci pour les infos.
Entre temps j'ai rajouté un chmod après les 2 mkdir du script :
mkdir($version_dir, $this->options['mkdir_mode'], true);
chmod($version_dir, 0777);
et
mkdir($upload_dir, $this->options['mkdir_mode'], true);
chmod($upload_dir, 0777);
Et cela marche
Par curiosité, j'ai testé (en retirant la modif ci dessus), en ajoutant le umask 000 à envvars mais cela n'a pas marché non plus. Ceci dit, le principal étant d'avoir au moins une solution qui fonctionne
Merci encore pour ton aide
Installation en cours : Ubuntu 20.04 avec PHP MySQL PhpMyAdmin
Retrouvez-moi tous les dimanches à 22H sur Eurodance 90 pour une heure de mix live au vinyle
Hors ligne