Impossible d’écrire dans /var/www/html/

Bonjour,

impossible d’écrire dans /var/www/html/

j’essai de faire:

echo '<?php phpinfo(); ?>' >/var/www/html/phpinfo.php

la console me répond :

-bash: /var/www/html/phpinfo.php: Permission non accordée

j’essai avec sudo :

sudo echo '<?php phpinfo(); ?>' >/var/www/html/phpinfo.php

la console me répond :

-bash: /var/www/html/phpinfo.php: Permission non accordée

Pourtant root a les droits non ?

ls -al /var/www/html
total 20
drwxr-xr-x 2 root root  4096 mars   5 23:26 .
drwxr-xr-x 3 root root  4096 mars   5 12:07 ..
-rw-r--r-- 1 root root 10701 mars   5 12:07 index.html

Quel sont les règles d’usage pour écrire dans /var/www/html/ ?

Mauvais usage de sudo causé par une méconnaissance du fonctionnement du shell. sudo est un programme comme une autre, il n’affecte pas les redirections du shell. Dans ta commande la redirection est faite par le shell utilisateur, donc avec les droits de l’utilisateur.

sudo echo "blabla" > fichier

s’interprête de la façon suivante :

  1. Le shell courant ouvre « fichier » en écriture.
  2. Le shell courant exécute le programme « sudo » avec les arguments « echo » et « blabla » et envoie sa sortie standard dans « fichier ».
  3. Le programme sudo exécute la commande « echo » avec l’argument « blabla ».

Ici, l’étape 1) échoue parce que l’utilisateur courant n’a pas la permission d’écrire dans le fichier de destination ou de le créer.

Les règles pour écrire dans /var/www/html sont les mêmes que dans n’importe quel autre répertoire, via les permissions Unix ou les ACL.

Merci @PascalHambourg , cela va améliorer mon apprentissage,

En faite je voulais dire: Quel sont les règles d’usage de permissions pour /var/www/html/ ?

Mettre mon user propriétaire et donner les permissions au propriétaire de lire et écrire ?

La « bonne pratique » souvent coneillée est de passer par un groupe dédié, qui a les droits d’écriture sur ce répertoire et dont ton utilisateur fait partie.

Pour ma part je n’utilise pas du tout ce répertoire, qui n’est plus approprié dès qu’on veut présenter plus d’un site Web à partir d’un même système. Pour chaque site Web proposé par mon système j’ai créé une arborescence distincte sous /srv, chacune avec ses propres règles et permissions.

1 J'aime

Merci @anon96191775,
Pour l’instant je suis en période d’apprentissage, je me contenterais d’un seul site,

Ais-je bon si ? :

Edit: mon user devient propriétaire et le groupe www-data devient groupe propriétaire

sudo chown -R USER:www-data /var/www/html

Et que le propriétaire peut lire et écrire, le groupe peut lire, le reste ne rien faire

sudo chmod -R u=rwX,g=rx,o= /var/www/html

Presque :

sudo chown -R $USER:www-data /var/www/html

ainsi tu seras propriétaire de tout ce qui est sous /var/www/html et le groupe sera www-data

sudo chmod -R u=rwX,g=rX,o= /var/www/html

X (en majuscule) donne le droit d’entrer dans les dossiers, il n’ya aucun besoin de rendre les fichiers exécutables avec x (en minuscule).

Tu auras les droits en lecture et en écriture et www-data pourra lire les fichiers (ce qui est indispensable.

Merci @anon70622873
Ok pour $USER
Mais je peux aussi bien écrire le nom de mon user directement on est bien d’accord ?

Merci pour le X majuscule qui a toute son importance

Une petite question, si je ne me trompe pas, ce que je demandais en nodal s’écrit :750 ?
Avec le X en majuscule c’est pareil ?