Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/01/2022, à 12:25

giovanna89

Propriétaire répertoire www [RESOLU]

Bonjour,
Je souhaiterais avoir une précision quant aux bonnes pratiques du propriétaires / groupe propriétaire du répertoire www.
Après pas mal de lecture, j'ai bien compris que la bonne pratique voulais que ce soit un utilisateur lambda nommé ici "utilisateur_1" (autre que root et www-data) qui soit propriétaire du répertoire www, ou tout du moins que cet utilisateur soit propriétaire du répertoire de l'application "www/html/application_1"
Qu'en est-il du groupe propriétaire du répertoire "www" ou du sous-répertoire de l'application "application_1".
Vaut-il mieux :
_ que le groupe "utilisateur_1" soit propriétaire et que l'utilisateur "www-data" appartiennent au groupe "utilisateur_1" (comme groupe secondaire)
ou
_ que le groupe "www-data" soit propriétaire et que "utilisateur_1" appartiennent au groupe "www-data" (comme groupe secondaire)

Cordialement

Dernière modification par giovanna89 (Le 26/01/2022, à 19:01)

Hors ligne

#2 Le 25/01/2022, à 15:18

koriP

Re : Propriétaire répertoire www [RESOLU]

Bonjour,
En ce qui me concerne voici ce que je fais:
Le propriétaire des dossiers et fichiers est le mainteneur du site. Il devrait donc avoir accès à lecture/écriture sur tous les fichiers et dossiers du site.
Le groupe appartient à www-data et a accès à lecture sauf cas où il doit avoir accès à écriture, ce qui ne devrait pas être le cas pour tous les dossiers et fichiers.
Le reste n'a accès à rien.
Exemple :

-rw-r-----  1 ton_user www-data   6184 nov.  23 12:00 fichier.php
drwxr-x---  5 ton_user www-data   4096 févr.  2  2017 dossier

Donc en gros, dossiers en 750 et fichiers en 640
Attention si tu as un .htaccess, tout le monde doit pouvoir le lire. Mes .htaccess sont en 444
Voilà un peu, ceci en dehors de toute sécurisation de apache bien sûr, à laquelle il faut également penser.
Il y a sans doute mieux, mais c'est je pense le minimum

Dernière modification par koriP (Le 25/01/2022, à 15:29)

Hors ligne

#3 Le 25/01/2022, à 17:26

giovanna89

Re : Propriétaire répertoire www [RESOLU]

Merci de ton retour.

Donc si j'ai bien compris, tu préconises que le groupe "www-data" soit propriétaire et que mon "utilisateur_1" appartienne au groupe "www-data", (soit mon cas n°2).
A partir de quel niveau l'utilisateur qui administre le serveur doit-il être propriétaire des répertoires/fichiers ? :
/var/
ou
/var/www/
ou
/var/www/html/
ou
/var/www/html/application_1/

Hors ligne

#4 Le 25/01/2022, à 17:44

koriP

Re : Propriétaire répertoire www [RESOLU]

giovanna89 a écrit :

Merci de ton retour.

Donc si j'ai bien compris, tu préconises que le groupe "www-data" soit propriétaire et que mon "utilisateur_1" appartienne au groupe "www-data", (soit mon cas n°2).
A partir de quel niveau l'utilisateur qui administre le serveur doit-il être propriétaire des répertoires/fichiers ? :
/var/
ou
/var/www/
ou
/var/www/html/
ou
/var/www/html/application_1/

Loin de mio l'idée de préconiser...
Si quelqu'un a mieux, ce qui est sans doute le cas, bienvenue, et je suis ouvert à une discussion pour éventuellement améliorer mes configurations.
Chez moi, sauf pour un cloud Nextcloud où aussi bien le propriétaire et le groupe doivent être www-data, mes sites sont configurés ainsi : le propriétaire c'est le mainteneur, donc dans mon cas, moi, et sans doute dans to cas toi, et le groupe est à www-data, le reste n'a aucun droit.

-rw-r-----  1 ton_user www-data   6184 nov.  23 12:00 fichier.php
drwxr-x---  5 ton_user www-data   4096 févr.  2  2017 dossier

Le dossier racine et tout ce qui suis récursivement doivent appartir dans mon type de configuration à propriétaire ton_user et le groupe à www-data. Donc depuis quel niveau, depuis le dossier racine.

Dernière modification par koriP (Le 25/01/2022, à 17:50)

Hors ligne

#5 Le 26/01/2022, à 07:03

bruno

Re : Propriétaire répertoire www [RESOLU]

Bonjour,

Il n'y a pas de bonne pratique en la matière ; tout dépend des cas d'usage.

Il faut éviter d'ajouter un utilisateur à un groupe sans en mesurer la portée et les conséquences. Par exemple, si toto est un utilisateur standard du système avec son shell, son répertoire personnel, voire des privilèges accordés par sudoers, alors c'est une très mauvaise idée de mettre www-data dans le groupe toto.

Il faut également éviter d'avoir pluqieurs propriétaires (dont root) différents dans le dossier racine.

La configuration donnée par koriP me semble correcte. Je conseille de ne pas changer les droits sur /var/www et /var/www/html qui doivent appartenir à root.

Hors ligne

#6 Le 26/01/2022, à 12:09

giovanna89

Re : Propriétaire répertoire www [RESOLU]

Bonjour,

Il faut éviter d'ajouter un utilisateur à un groupe sans en mesurer la portée et les conséquences. Par exemple, si toto est un utilisateur standard du système avec son shell, son répertoire personnel, voire des privilèges accordés par sudoers, alors c'est une très mauvaise idée de mettre www-data dans le groupe toto.

Oui, c'est comme rendre l'utilisateur "nobody" propriétaire de plein de répertoires/fichiers revient à lui donner tous les droits.

1]

voire des privilèges accordés par sudoers

Sauf erreur de ma part, l'utilisateur qui est propriétaire de /var/www/html/Application_1 (et des répertoires/fichiers à l'intérieur) ne devrait pas être dans le fichier sudoers ?

2]

Je conseille de ne pas changer les droits sur /var/www et /var/www/html qui doivent appartenir à root.

Par simple curiosité, y-a-t-il une raison technique à cela ?

3] Imaginons que j'ai deux applications dans /var/www/html/ donc :
/var/www/html/Application_1
/var/www/html/Application_2

Est-il judicieux en terme de sécurité, d'avoir :
_ un "utilisateur_1" propriétaire du répertoire (et des répertoires/fichiers à l'intérieur) Application_1
et
_un "utilisateur_2" propriétaire du répertoire (et des répertoires/fichiers à l'intérieur) Application_2
=> Que chaque application soit administrée par avec son utilisateur ?

Dernière modification par giovanna89 (Le 26/01/2022, à 12:12)

Hors ligne

#7 Le 26/01/2022, à 13:39

bruno

Re : Propriétaire répertoire www [RESOLU]

giovanna89 a écrit :
bruno a écrit :

Je conseille de ne pas changer les droits sur /var/www et /var/www/html qui doivent appartenir à root.

Par simple curiosité, y-a-t-il une raison technique à cela ?

Voir la discussion à partir d'ici. Le propriétaire d'un dossier peut faire ce qu'il veut dedans, y compris sur des fichiers qui ne lui appartienne pas.


giovanna89 a écrit :

3] Imaginons que j'ai deux applications dans /var/www/html/ donc :
/var/www/html/Application_1
/var/www/html/Application_2

Est-il judicieux en terme de sécurité, d'avoir :
_ un "utilisateur_1" propriétaire du répertoire (et des répertoires/fichiers à l'intérieur) Application_1
et
_un "utilisateur_2" propriétaire du répertoire (et des répertoires/fichiers à l'intérieur) Application_2
=> Que chaque application soit administrée par avec son utilisateur ?

Oui c'est judicieux. Et cela l'est encore plus quand les scripts ne sont pas exécutés par www-data mais par utilisateur_1 et utilisateur_2 respectivement. Mais on sort du cadre d'une configuration « basique » puisqu’il va falloir utiliser PHP-FPM, ses pools et créer des utilisateurs spécifiques.

Hors ligne

#8 Le 26/01/2022, à 14:39

giovanna89

Re : Propriétaire répertoire www [RESOLU]

Le propriétaire d'un dossier peut faire ce qu'il veut dedans, y compris sur des fichiers qui ne lui appartienne pas.

Étonnant, ça veut dire que si je mets un utilisateur lambda comme étant le propriétaire de tous les répertoires racines de l'OS (/etc, /dev, /bin, /lib, /var, /opt, /boot,...), il aura des droits sur tous les sous-répertoires et fichiers de l'arborescence. Finalement cet utilisateur aura les mêmes droits que root !?

Dans le post que tu cites, tu dis :

Effectivement le mieux est d'avoir un utilisateur différent , sans login, bloqué dans son dossier et qui n'est pas www-data, pour chaque site web.

Qu'entends-tu par "sans login", ça veut dire sans mot de passe ?

Hors ligne

#9 Le 26/01/2022, à 15:20

bruno

Re : Propriétaire répertoire www [RESOLU]

Non cet utilisateur n'aura pas les mes droits que root. Et personne ne s'amuse à changer le propriétaire des répertoire du système, enfin j'espère…
C'est plus subtil que cela. Il faut consulter les liens donnés et les explications.

Je donne un exemple succinct ;
/var/www/html appartient à www-data
Dedans j'ai laissé traîner un script truc.sh qui est exécuté de temps en temps par l'administrateur système pour une tâche de maintenance quelconque.
Un intrus à réussi à obtenir un shell en tant qu'utilisateur www-data grâce à une faille dans l'application web hébergée.
Il ne peut ni lancer, ni modifier truc.sh qui est en mode lecture / écriture uniquement pour root.
Par contre, le dossier parent lui appartient il peut donc y faire ce qu'il veut, comme renommer truc.sh et créer un nouveau fichier truc.sh avec un code de son cru.
La prochaine fois que l'administrateur système lancera truc.sh croyant exécuter sa tâche de maintenance, c'est le code de l'intrus qui sera exécuté.


Un utilisateur sans login c'est un utilisateur qui a pour shell (/usr/)/bin/false ou (usr)/sbin/nologin. Un tel utilisateur ne peut pas ouvrir de session sur la machine concernée (mais il peut obtenir un shell).
De nombreux utilisateur système n'ont pas de login. Par exemple www-data :

$ getent passwd www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Hors ligne

#10 Le 26/01/2022, à 16:39

giovanna89

Re : Propriétaire répertoire www [RESOLU]

Non cet utilisateur n'aura pas les mes droits que root. Et personne ne s'amuse à changer le propriétaire des répertoire du système, enfin j'espère…

Oui c'était pour la symbolique.:)

J'ai compris ton exemple. C'est plus clair.
Les configurations des propriétaires, droits et permissions attribués... c'est un casse-tête !! . Même quand on croit avoir compris ... Il y a des subtilités.

Un utilisateur sans login c'est un utilisateur qui a pour shell (/usr/)/bin/false ou (usr)/sbin/nologin. Un tel utilisateur ne peut pas ouvrir de session sur la machine concernée (mais il peut obtenir un shell).

Donc si un utilisateur "nologin" ne peux pas ouvrir de session, il n'a donc par exemple pas de répertoire /home ?

Dsl encore une question...

(mais il peut obtenir un shell)

Dites-moi si je me trompe :
Je peux donc administrer mon Application_2 avec mon "utilisateur_2" nologin.
On est bien d'accord que "nologin" ne veut pas dire "pas de mot de passe". Car j'imagine que l'utilisateur "www-data" n'a pas de mot de passe.
Si je me connecte en ssh avec "utilisateur_2", il faudra que je rentre un mot de passe que j'aurais défini pour cet utilisateur et je ne pourrais modifier que les répertoires/fichiers contenus dans /var/www/html/Application_2.

ps : le serveur n'est pas encore installé, je ne peux pas encore tester tout ça en direct.

Hors ligne

#11 Le 26/01/2022, à 17:02

bruno

Re : Propriétaire répertoire www [RESOLU]

Un utilisateur peut ne pas pouvoir ouvrir de session (nolgin) et avoir un dossier personnel c'est la cas de l'utilisateur www-data que j'ai donné en exemple. Il a pour shell /sbin/nolgin et pour dossier personnel /var/www
Il peut également avoir un mot de passe. C'est utile, par exemple, s'il est autorisé à se connecter en SFTP.

Hors ligne

#12 Le 26/01/2022, à 18:19

mazarini

Re : Propriétaire répertoire www [RESOLU]

je crée un répertoire par site dans /srv et je met le site dans un sous-répertoire qui appartient à www-data.
- /srv (root)
- /srv/www.exemple.com (utilisateur), j'y mets des scripts, des sauvegardes et des fichiers que je peux sortir du sous-répertoire html
- /srv/www.exemple.com/html (www-data)

j'utilise setfacl pour autoriser l'utilisateur à modifier les fichiers de www-data. C'est la seule partie de la machine ou j'évite de rester root.


S'il existait une école de la politique, les locaux devraient être édifiés rue de la Santé. Les élèves pourraient s'habituer. (Pierre Dac)

Hors ligne

#13 Le 26/01/2022, à 18:22

giovanna89

Re : Propriétaire répertoire www [RESOLU]

Un grand merci à vous deux et pour toutes ces explications.
Je pense avoir un peu mieux compris les "bonnes pratiques" concernant la propriété des répertoires/fichiers sur les serveur web (non-complexes).

Pour résumer :
/var/www/html/Application_1 :
propriétaire = utilisateur_1 (défini avec un shell "nologin" et permissions en lecture - écriture sur tous les répertoires/fichiers sous-jacents)
groupe propriétaire = www-data (défini en lecture uniquement)
ajouter utilisateur_1 au groupe "www-data"

/var/www/html/Application_2 :
propriétaire = utilisateur_2 (défini avec un shell "nologin" et permissions en lecture - écriture sur tous les répertoires/fichiers sous-jacents)
groupe propriétaire = www-data (défini en lecture uniquement)
ajouter utilisateur_2 au groupe "www-data"

A éviter :
_laisser la propriété de /var/, /var/www/ et /var/www/html/ à root
_éviter de mettre utilisateur_1 et utilisateur_2 dans le sudoers (donc avec une possibilité d'élévation des privilèges)

Encore merci.

Hors ligne