chmod 777 or not chmod 777 ?

Bonjour,

Depuis que j'utilise PluXml, j'ai toujours été "embêté" avec le fait de mettre des permissions aussi larges au répertoire data même si ce n'est qu'en local puisque tous les hébergeurs chez lesquels j'ai installé des PluXml ne le demandait pas.

Par hasard, en testant d'autres CMS sans base de données, je suis tombé sur la documentation de Grav (http://learn.getgrav.org/basics/requirements#permissions) qui donne la formule magique pour se passer d'un chmod 777 :
[== Indéfini ==]
chgrp -R www-data .
find . -type f | xargs chmod 664
find . -type d | xargs chmod 775
find . -type d | xargs chmod +s
umask 0002

À appliquer directement sur le répertoire principal de votre serveur localhost (public_html, /var/www/htdocs/, etc). Normalement, tout nouveau répertoire créé se voit appliquer ces directives. Du coup, pour Pluxml, hop, on dézippe, on installe et ça roule ! :)

Fonctionne bien pour Linux (testé sur Debian et openSUSE), devrait fonctionner sur Mac qui est un cousin de Linux. Aucune idée pour Windows mais il doit bien y avoir une option dans WAMP.

Voilà, c'était l'astuce-qui-sert-pas-à-grand-chose du jour. ]:D


à plus,

Gzyg


p.s : le susnommé Grav a une tripotée de plugins qui sont peut-être adaptables pour PluXml. Grav en lui-même est un peu lourd (symphony inside) mais ça fonctionne vraiment bien.

Réponses

  • Bonjour,

    Manipuler les chmod sans en connaitre le fonctionnement peut être dangereux surtout dans le cas d'un serveur en production.

    Le chmod 777 veut dire que vous donnez à tout les utilisateurs et groupes du serveur sur lequel pluxml est installer d'écrire, modifier et exécuter les fichiers. En principe sur un serveur linux en production le propriétaire des fichiers et dossiers est le même que celui qui est utilisé par le serveur web (apache ou ngix) et le chmod sur les fichiers est 644 et sur les dossiers 755.

    Plus d'info sur le chmod : https://fr.wikipedia.org/wiki/Chmod

    J'ai un string de l'array

  • C'est pour ça que je voulais un moyen de ne plus recourir au chmod 777 y compris en localhost.

    (Mais je n'ai pas dû être très clair...) ;)


    à plus,

    Gzyg
  • mais si on couple avec un fichier .htaccess on peu, peut-être être autant permissif ?
  • Salut.

    On peut même aller plus loins en modifiant les propriétaires des fichiers pour que le serveur web ne puisse écrire que dans /data/ et /plugins/.

    Ex:
    chown -R user-lambda:www-data .  # change propriétaire:groupe
    chmod -R 750 *
    chmod -R 770 data/* plugins/*
    

    Les pointes clés :

    * l'utilisateur du serveur web (entendre le service apache ou nginx par exemple, qui utilise ici le groupe www-data) peut lire les ressources PHP mais pas les modifier (ex: impossible de bidouiller le core/ à distance via le serveur web)
    * l'utilisateur du serveur web poser ou modifier des données dans data/ et plugins/, ce qui est la seule nécessité d'écriture
    * avoir un propriétaire "user-lambda" différencié de www-data évitera que le groupe www-data puisse changer les droits à sa convenance : on le restreint au maximum
    * quant aux "others", ils n'ont en réalité aucun besoin d'accéder au site, seul le serveur web et ton utilisateur SSH/SFTP/FTP ont besoin d'avoir la main

    Enfin note que les commandes en "find . -type X | xargs chmod YYY" vont te sortir des erreurs si tu as des noms de fichiers ou des chemins avec des espaces.

    Ex: "data/super images/toto en vacances.jpg" sera traité ainsi :
    chmod 664 data/super
    chmod: impossible d'accéder à « data/super »: Aucun fichier ou dossier de ce type
    chmod 664 images/toto
    chmod: impossible d'accéder à « images/toto »: Aucun fichier ou dossier de ce type
    chmod 664 vacances.jpg
    chmod: impossible d'accéder à « vacances.jpg »: Aucun fichier ou dossier de ce type
    

    Dans mon cas je ne peux faire qu'un chmod global en 75X.
  • merci pour toutes ces infos détaillées !
Connectez-vous ou Inscrivez-vous pour répondre.