Version haut débit de: Forum du site Lebrikabrak
Aide - Rechercher - Membres

Problème de droits à  la création d'un rép par un rédacteur

ZebulonT (18 Janvier 2008, 10:26)
Bonjour jchouix,

J'ai un souci avec la création de répertoire par les rédacteurs.
Lorsqu'un rédacteur créé un rép, celui-ci obtient les droit 700.
Les fichiers que le rédacteur place dans ce rép obtiennent bien des droit 644.
Mais comme le rép à les droit à 700, les fichiers placé dans le rép ne sont pas utilisables...
Sauf à faire un chmod par ailleurs... :fsb2_goutte:

Il faut bien évidement que les droits attribués au répertoire lors de sa création soient à 755 ! Mais j'ai jeté un oeil dans les scripts PHP et je n'ai pas trouvé ce qui régit l'attribution des droits...

Je précise que mon compte sur le serveur apache est en suPHP et que je travaille tjs avec le fichier "upload.inc" original et non celui de ton fork qui permet la suppression des fichiers.

Merci d'avance pour ton aide. :fsb2_smyle:

Bien cordialement.
jchouix (18 Janvier 2008, 18:43)
bonjour,
Citation (ZebulonT)
J'ai un souci avec la création de répertoire par les rédacteurs.
Lorsqu'un rédacteur créé un rép, celui-ci obtient les droit 700.
Les fichiers que le rédacteur place dans ce rép obtiennent bien des droit 644.
Mais comme le rép à les droit à 700, les fichiers placé dans le rép ne sont pas utilisables...
Sauf à faire un chmod par ailleurs...

Je ne comprends pas pourquoi tu as un chmod à 700 sur le répertoire créé car je mets les droits à 755 lors de sa création.
Vérifie que le chmod du répertoire parent au répertoire créé soit à 755 et non à 700.
Tiens moi au courant.
Citation (ZebulonT)
Il faut bien évidement que les droits attribués au répertoire lors de sa création soient à 755 ! Mais j'ai jeté un oeil dans les scripts PHP et je n'ai pas trouvé ce qui régit l'attribution des droits...

C'est dans le fichier functionredac.inc situé dans le répertoire plugins/adm_redacteurs/inc/ à la ligne 611.
A+
ZebulonT (18 Janvier 2008, 19:42)
Re,

Citation (jchouix)
Vérifie que le chmod du répertoire parent au répertoire créé soit à 755 et non à 700.
Tiens moi au courant.

Oui, à§à j'ai vérifié et je suis certain que le répertoire parent est bien à 755...
Citation (jchouix)
C'est dans le fichier functionredac.inc situé dans le répertoire plugins/adm_redacteurs/inc/ à la ligne 611.

à‡a je vais aller voir de plus près... :fsb2_smyle:
Je te tiens au courant...

A+
ZebulonT (19 Janvier 2008, 11:00)
Bonjour jchouix,
Citation (jchouix)
Je ne comprends pas pourquoi tu as un chmod à 700 sur le répertoire créé car je mets les droits à 755 lors de sa création.
...
C'est dans le fichier functionredac.inc situé dans le répertoire plugins/adm_redacteurs/inc/ à la ligne 611.

Et bien moi non plus je ne comprend pas car j'ai vérifié tout les @mkdir dans tous les scripts de mon installation de GuppY et ils attribuent tous des droits à 755 voir à 777 pour certains...
Je vais donc aller me renseigner du cà´te de mon hébergeur et d'une éventuelle config de suPHP...
Je te donne des nouvelles dès que j'en ai.
A+
ZebulonT (19 Janvier 2008, 21:46)
Re,

Comme promis, voici quelques infos... :fsb2_smyle:
Après discussion sur le forum de mon hébergeur, il s'avère qu'il s'agit d'un problème d'umask qui est à 077 dans la config de suPHP.
J'ai néanmoins trouvé une parade qui consiste à faire un appel à la fonction umask() avant les appels à la fonction mkdir()... J'ai donc modifié le code des trois fichiers suivants :
function createNewRep($newrep) {
	@umask(0022);
	@mkdir(CHEMIN.$newrep,0755);
	@copy(CHEMIN."data/index.php", CHEMIN.$newrep."/index.php");
	@chmod(CHEMIN.$newrep."/index.php", 0644);

J'ai également essayé avec les modifs suivantes mais cela ne fonctionne pas... :fsb2_cry:
function createNewRep($newrep) {
	@mkdir(CHEMIN.$newrep,0755);
	@chmod(CHEMIN.$rep,0755);
	@copy(CHEMIN."data/index.php", CHEMIN.$newrep."/index.php");
	@chmod(CHEMIN.$newrep."/index.php", 0644);

Là , j'avoue que je ne comprend pas pourquoi le chmod n'a aucun effet ! :fsb2_mad:

Un des admins chez mon hébergeur va voir si il peu configurer le umask sur suPHP...

Bref, je pense que le problème est résolu puisque màªme en l'absence de modif de l'umask sur suPHP, les modifs que j'ai apportée aux fichiers sont satisfaisantes. :fsb2_smyle:

Merci beaucoup pour toute l'attention portée à ce sujet. :wink:

A+
ZebulonT (20 Janvier 2008, 13:33)
Bonjour,
Un des modos du forum de mon hébergeur m'a suggéré une autre faà§on de résoudre le problème...
	$old = umask(0);
	@mkdir(CHEMIN.$newrep,0755);
	umask($old);
Je l'ai testée et cela fonctionne aussi ! :fsb2_smyle:
Comme quoi on peut résoudre un màªme problème de différentes faà§ons... :wink:
Bonne journée à tous.
jchouix (21 Janvier 2008, 18:11)
bonsoir ZebulonT,
merci pour ces infos qui serviront à dépanner ceux qui seront confrontés au màªme problème.
A+
ZebulonT (21 Janvier 2008, 18:15)
Bonsoir jchouix,

Citation (jchouix)
merci pour ces infos qui serviront à dépanner ceux qui seront confrontés au màªme problème.
A+
De rien... :wink: C'est bien dans cet esprit d'entraide future que j'ai laissé ces messages ! :fsb2_smyle:

A+
ZebulonT (24 Février 2008, 1:33)
Bonsoir,

Dans le màªme ordre d'idée (problème de chmod avec un serveur Apache sous suPHP), j'ai également corrigé deux fichiers qui concernent le plugin diaporama.

Le premier est le fichier /plugins/adm_redacteurs/plugins/diaporama/inc/upload.inc
D'abord à partir de la ligne 42 :
function MakeDir($dir) {
$tmp1 = explode('/', $dir);
$tmp2 = CHEMIN;
for($t = 0; $t < count($tmp1); $t++)
{
$tmp2 .= $tmp1[$t];
if(!is_dir($tmp2))
//ligne modifiée par ZebulonT
//if (@mkdir($tmp2, 0777)) {
if (@mkdir($tmp2, 0755)) {
@chmod($tmp2, 0755); //Ajout par ZebulonT => pour que le chmod sur le répertoire créé soit effectif avec le serveur apache sous suPHP
@umask(0022); //Ajout par ZebulonT => pour que le chmod sur le fichier index.php soit effectif avec le serveur apache sous suPHP
@copy(CHEMIN."data/index.php", $tmp2."/index.php");
@chmod(CHEMIN.$tmp2."/index.php", 0644);
} else {
if (!is_file($tmp2."/index.php")) {
@umask(0022); //Ajout par ZebulonT => idem ci-dessus
@copy(CHEMIN."data/index.php", $tmp2."/index.php");
@chmod(CHEMIN.$dir."/index.php", 0644);

Ensuite à partir de la ligne 200 :
for($i=0; $i<$nb_upload; $i++) {
$fic = $_FILES["img$i"]['name'];
$tmp = $_FILES["img$i"]['tmp_name'];
@umask(0022); //Ajout par ZebulonT => Afin de corriger un problème de chmod 600 sur les images chargées pour le diaporama => serveur Apache sous suPHP

Ensuite à la ligne 232 :
//Ligne modifiée par ZebulonT => Modification du chmod pour le seveur Apache sous suPHP => Question de sécurité
//@chmod(CHEMIN.$dp_dir_vig.'/'.$fic, 0666);
@chmod(CHEMIN.$dp_dir_vig.'/'.$fic, 0644);

Et enfin à la ligne 255, il faut faire la màªme modification que la précédente...

Le deuxième fichier à modifier est le fichier /admin/plugins/diaporama/inc/upload.inc et les modification sont identiques si ce n'est que les numéros des lignes diffèrent légèrement...

Voilà , cela peut toujours servir à d'autres webmasters qui travaillent avec un serveur sous suPHP. :fsb2_smyle:

A+
jchouix (25 Février 2008, 19:33)
Bonsoir ZebulonT,
merci pour ton boulot et tes renseignements très précis qui vont rendre service à beaucoup de monde.
Cordialement.
a+