Question ardue de chmod par FTP

WRInaute passionné
Bonsoir

J'ai un site dont je voudrais changer les droits des fichiers et répertoires d'une façon un peu particulière.

Je veux que tous les répertoires à partir de la racine soient en 0755
et que tous les fichiers à partir de la racine soient en 0644

si je me connecte en ftp par ligne de commande, chmod ne fait pas la différence entre fichiers et répertoires. Donc dans ce cas, chmod -Rf XXX n'est pas possible.

J'ai aussi accès au répertoire du site par l'explorateur de KDE de mon ordinateur, avec KbearFTP mais idem, il ne fait pas la différence entre les deux...

Comment faire ???
est ce qu'avec un find et des pipes ? ça je saurais le faire sous le shell unix mais pas sous le shell ftp

merci de votre aide
 
WRInaute passionné
que veux tu dire par 'programmer un shell' tu veux dire un fichier genre écrit en bash et fonctionnant sous shell FTP ?
 
WRInaute impliqué
ou alors le faire en php, tiens trouvé sur php.net en placant ce script dans la racine des tes sites et en le modifiant un poil pour setter des droits différents selon si rép ou pas :

Code:
function chmod_R($path, $filemode) {
    if (!is_dir($path))
       return chmod($path, $filemode);

    $dh = opendir($path);
    while ($file = readdir($dh)) {
        if($file != '.' && $file != '..') {
            $fullpath = $path.'/'.$file;
            if(!is_dir($fullpath)) {
              if (!chmod($fullpath, $filemode))
                 return FALSE;
            } else {
              if (!chmod_R($fullpath, $filemode))
                 return FALSE;
            }
        }
    }
 
    closedir($dh);
   
    if(chmod($path, $filemode))
      return TRUE;
    else
      return FALSE;
}
ca doit le faire :)
 
WRInaute occasionnel
Edit : Pas assez rapide :wink:

Il faut commencer par tout mettre en 755 :

chmod -R 755 ledossier/

Ensuite agir par type de fichier (c'est tout ce que j'ai)

chmod -R 644 ledossier/*.html

chmod -R 644 ledossier/*/*.html

chmod -R 644 ledossier/*/*/*.html

chmod -R 644 ledossier/*/*/*/*.html

Etc..

chmod -R 644 ledossier/*.php

chmod -R 644 ledossier/*/*.php

chmod -R 644 ledossier/*/*/*.php

chmod -R 644 ledossier/*/*/*/*.php

Etc...

Ou si on veut du global, alors on met tout en chmod 755 :

chmod -R 755 ledossier/

Et on fait pour les fichiers de tous les sous-dossiers uniquement (Ne pas lancer la commande pour les fichiers racines; donc surtout pas de chmod -R 644 ledossier/*.* car tous les dossiers vont repasser en mode 644 sinon ^^ )

chmod -R 644 ledossier/*/*.*

chmod -R 644 ledossier/*/*/*.*

chmod -R 644 ledossier/*/*/*/*.*

Etc...


Y a peut-être plus simple, mais je connais pas.
 
Discussions similaires
Haut