Saloute,
voici un script qui permet de changer les permissions récursivement de tous les fichiers, inclus ceux du répertoire en cours selon les règles suivantes :
- d’abord tous les répertoires sont mis en rwx rwx –x (771) (rappel : les trois données dans l’ordre concernent : l’utilisateur, le groupe, les autres (ugo en anglais) )
- ensuite tous les fichiers sans distinction en 664 (rw rw w)
- enfin, tous les fichiers *.php* en 770 (rwx rwx —)
Ces trucs remplissent exactement les besoins de tous les fichiers et répertoires de votre site pour que ceux-ci soient visibles et exécutables lorsqu’on tente de les visiter. Il a été rédigé selon les recommendations de l’Equipe Système (ES).
Ce script tourne normalement sur une session UNIX de l’ECE. Il ne prend aucun paramètre, je le montre ci-dessous, vous pouvez le télécharger ici. Aussi, il y a un mode d’emploi plus bas pour faire un alias de console pour ne pas avoir à taper le chemin complet du fichier de script à chaque fois.
Le script (autochmod.sh):
#directories first
find -type d | xargs chmod 771
#all files first
find -type f | xargs chmod 664
#php files then
find -type f -name "*.php*" | xargs chmod 770
echo "done changing permissions for folders below that one"
echo "you now should have a working web page"
Bon on voit que c’est tout con.
Pour exécuter le script s’il est dans un fichier autochmod.sh dans le répertoire en cours, on peut faire :
. autochmod.sh
ou bien :
sh autochmod.sh
Le fichier .bashrc qui se trouve dans votre répertoire home (faites cd sans rien après et tapez entrer, vous êtes mis dedans) est exécuté à chaque fois que vous vous loggez (je crois). C’est donc là qu’il est intéressant de préciser un alias. Si vous faites ls, il y a des chances que vous ne voyiez pas ce fichier .bashrc parce qu’il commence par un point. Pour le faire faites : ls -l ou encore… si vous avez trop de fichier : ls -l | grep bash par exemple.
Vous pouvez directement copier le script ci-dessus dans le fichier .bashrc dans le cadre d’une fonction. Autrement, toujours dans le cadre d’une fonction vous pouvez faire exécuter le contenu d’un fichier externe (ex: autochmod.sh) contenant le script.
Ici, on appelle notre fonction/alias autochmod.
Premier cas :
ajouter (par exemple à la fin fichier) dans .bashrc :
autochmod()
{
#directories first
find -type d | xargs chmod 771
#all files first
find -type f | xargs chmod 664
#php files then
find -type f -name "*.php*" | xargs chmod 770
echo "done changing permissions for folders below that one"
echo "you now should have a working web page"
}
ou dans le second cas (fichier externe) toujours dans le .bashrc:
autochmod()
{
. ~/autochmod.sh
}
avec autochmod.sh le script contenant le fichier du script situé dans ~/ (~ signifie la même chose que “mon répertoire home”).
Je mets un lien vers mon .bashrc : ici.
Voili voilou.
Jonathan