Quels CHMOD utiliser sur les dossiers / fichiers ?

Le problème exposé dans ce sujet a été résolu.

Hello :)

Je suis un peu perdu face aux CHMODs que l’on doit appliquer sur les dossiers / fichiers.

Ce que je fais :

 CHMOD 404 sur : les .htaccess / .htpasswd , mon fichier config.php / connexion_bdd.php

– CHMOD 704 sur les dossiers où j’upload des fichiers (comme les avatars)

  1. Est-ce que c’est sécurisé comme cela ?

  2. Si mon dossier /avatars et dans le dossier /imgs, donc /imgs/avatars, je dois mettre le CHMOD 704 sur le dossier /avatars & /imgs ou sur /imgs ou /avatars ? je ne comprends pas trop les parents / enfants.

  3. À chaque fois que quelqu’un upload à avatar, je dois faire un chown www-data:www-data /var/www -R pour pouvoir ensuite modifier l’avatar directement en ligne. Sinon j’ai une erreur PHP. Je ne comprends pas trop, comment faire autrement ?

Cordialement

+0 -0

Salut,

Je dirais que le plus important c’est de comprendre ce que tu fais. Les 3 chiffres du chmod se divisent en permission de l’utilisateur (www-data ici), groupe (www-data aussi) et autres. Et ils se composent par addition entre 4 (accès en lecture), 2 (en écriture) et 1 (exécution, nécessaire pour accéder à un répertoire). Cette notation n’est pas la plus intuitive.

  1. Déjà qu’appelles-tu sécurisé, qui d’autre que toi a accès aux serveurs et quelles applications y sont exécutées ?
  2. Tout dépend de ce que tu veux faire. Pour que l’utilisateur www-data ait accès en lecture au dossier, il te faudra au minimum du 500, c’est à dire r-x------. 700 (rwx------) pour une accès en lecture/écriture (pouvoir créer des fichiers dans le répertoire). Pour les permissions du groupe et des autres, à voir ce dont tu as besoin.
    Et il n’y a pas de relations parents/enfants ou presque : le seul pré-requis pour accéder à un fichier est que les répertoires parents soient accessibles en exécution.
  3. De ce que je comprends, les fichiers créés lors de l'upload ne le sont pas sous l’utilisateur www-data, c’est donc ça que tu dois corriger lorsque tu crées le fichier.

Alors. Tu comprends le principe de chmod ? Le premier chiffre, c’est pour l’utilisateur qui possède le fichier.
Le deuxième s’applique au utilisateur du même groupe que le fichier.
Le troisième chiffre s’applique à tous les utilisateurs.

  • 1: Éxecute
  • 2: Write
  • 4: Read

7 signifie donc 1+2+41 + 2 + 41+2+4, c’est à dire tous les droits. Alors que 4 signifie, seulement le droit de lecture.

Pour les dossiers, 1 autorise l’accès, alors que 4 autorises de lister les éléments du dossier. 2 est plus intuitif et correspond au droit d’écrire dans le dossier.

Il existe une autre méthode basée sur l’utilisation de lettre parfois plus claire. chmod u+rx,u-w,g-rwx,o-rwx file (ajoute le droit d’exécution et de lecture, mais retire le droit d’écriture pour l'utilisateur du fichier. Retirer tous les droits pour les utilisateurs du groupes du fichiers, idem pour les autres (others) utilisateurs).


Bon ceci mis au claire. Tu comprends bien que tout dépends de l’utilisateur qui possède le fichier, idem pour le groupe du fichier.

Une deuxième notion importante est l’utilisateur qui exécute le serveur web/php/mysql. Il est important que ce ne soit pas root ni un autre utilisateur privilégié. Les serveurs Web ont besoin d’être lancé par un utilisateur privilégié pour pouvoir écouter sur le port 80 et 443 mais ensuite, ils n’en ont plus besoin et propose généralement de changer pour un autre utilisateur. PHP n’a à priori pas besoin de droit spéciaux.

+1 -0

D’accord.

Mais du coup, lorsque j’upload un fichier, à qui appartient le fichier ? à www-data ?

Quand je demandais si c’était sécurisé, c’est rapport aux CHMODs, si 704 c’est bien pour écrire et lire dans les dossiers où j’upload mes avatars, et 404 pour lire uniquement les fichiers de config par exemple.

Il y a que moi qui ai accès au serveur.

ps : je suis sous Apache 2 & PHP 7

+0 -0

D’accord.

Mais du coup, lorsque j’upload un fichier, à qui appartient le fichier ? à www-data ?

Ça dépends de qui upload le fichier. Si c’est Apache et que Apache est lancé par www-data. Alors le fichier appartient à www-data.

Dans tous les cas, tu peux vérifier ça avec la commande ls -ld file qui te donnera quelque chose comme : -rw------- 1 ache user. Qui signifie que seul l’utilisateur ache a accès à ce fichier (en lecture écriture). Qu’il y a un seul lien vers ce fichier (tu te fiches de cette notion). Et que le groupe du fichier est user.

Quand je demandais si c’était sécurisé, c’est rapport aux CHMODs, si 704 c’est bien pour écrire et lire dans les dossiers où j’upload mes avatars, et 404 pour lire uniquement les fichiers de config par exemple.

Comme je te l’ai dis, ça dépend de beaucoup de paramètres. 704 en soit, c’est sécurisé dans le sens qu’un utilisateur n’ayant pas de droit particulier ne peut que lire le fichier. Après si Apache est exécuter en root alors si un utilisateur arrive à exploiter Apache, il l’exploitera en tant que root, donc 704, 777, ou 000, il s’en fichera.

Tu vois ce que je veux dire ? Le mode d’un fichier va de paire avec une liste d’utilisateurs/groupes.

Il y a que moi qui ai accès au serveur.

Et qui a accès aux applications exécutées sur le serveur (et surtout quelles sont ces applications ?) S’il n’y a que toi qui aie accès aux applications. Alors peu importe la sécurité. Si ce ne sont que des utilisateurs de confiances (application disponible sur un réseau interne). Ou si au contraire les applications sont disponibles sur le Web, ce sont 3 cas assez différents.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte