web-dev-qa-db-fra.com

Désigner le propriétaire des fichiers nouvellement créés ET des dossiers www-data au lieu du superutilisateur / admin

J'ai eu du mal à obtenir des autorisations jusqu'à présent, et j'ai posté une autre question mais identifié quel était le problème, sans aucun moyen de le résoudre pour le moment.

Ma configuration:

  • Ubuntu Desktop avec pile LAMP
  • 5 "utilisateurs" J'ai créé des utilisateurs que j'ai créés sur le serveur Ubuntu à l'aide de Sudo useradd -r -s /bin/false USERNAME et qui sont utilisés pour accéder aux dossiers partagés du réseau local, c'est-à-dire aux ordinateurs de mon réseau pour se connecter au dossier/var/www, partagé à l'aide de Samba.
  • EDIT: Le but est de créer une sorte de "maître localhost" où tous les ordinateurs de mon réseau local peuvent travailler sur le même site web, localement (je n'ai PAS d'adresse IP statique et le serveur n'est donc pas accessible ailleurs) .

Mon problème:

Actuellement, lorsque je crée un nouveau dossier sur /var/www/html (par exemple: création du dossier/var/www/html/testsite1) à l'aide de n'importe quel ordinateur du réseau, ce dossier appartient automatiquement à boris:www-data ("boris" étant l'utilisateur principal de mon compte ubuntu). installer sur le bureau, et cela montre bien boris: www-data lorsqu’on exécute ls -l sur le dossier nouvellement créé), ce qui cause des problèmes avec ma configuration actuelle (en utilisant principalement Duplicator Plugin pour wordpress de LifeInTheGrid). Cependant, mon /var/www et mon /var/www/html appartiennent à www-data:www-data

Par conséquent, j'aimerais savoir comment je peux:

  • Changez de propriétaire en www-data: www-data de tous les fichiers ET répertoires situés sous/var/www et/var/www/html

  • Assurez-vous que tout fichier ou dossier que je créerai avec l’un des utilisateurs de mon réseau sera automatiquement la propriété de www-data: www-data (Cela inclut les fichiers créés automatiquement par des scripts php car c’est ce que le Duplicateur fait si je ne me trompe pas).

Y-a-t-il un moyen de faire ça?

Note: Je suis un super débutant avec des choses liées à Linux et aux lignes de commande, mais je rattrape vite mon retard.

Remarque 2: umask est déjà défini sur 0002

MODIFIER:

J'ai essayé ceci:

Sudo chown -R www-data:www-data /var/www/

Et puis définissez les bits setuid et setgid en procédant comme suit:

Sudo chmod u+s /var/www/html
Sudo chmod g+s /var/www/html

Puis déconnecté, redémarré Apache et essayé de créer un nouveau dossier en utilisant un Mac connecté à mon serveur via IP réseau (IP local et non statique).

Iran

ls -l on /var/www/html

La sortie est toujours:

drwxr-sr-x 2 boris   www-data  testsite1

Remarque:

J'ai déjà vérifié ma configuration Apache avant et envvars, il est déjà réglé sur:

export Apache_RUN_USER=www-data
export Apache_RUN_GROUP=www-data

EDIT: je l’ai essayé à l’envers, par exemple en configurant tout ce qui appartient à boris: www-data et en configurant mes envois Apache config sur boris: www-data. ÇA A MARCHÉ!

Voici ce que j'ai fait:

Changé envvars à

export Apache_RUN_USER=boris
export Apache_RUN_GROUP=www-data

Couru

Sudo chown -R boris:www-data /var/www/

Apachem redémarré, créé un nouveau dossier, ajouter mes fichiers, lancé le plugin, dit maintenant que c'est bon !!!

12
Boris Chevreau

Réponse à la question n ° 1: récursif chownname __

Un récursif chownvous permettra de définir la propriété et le groupe comme vous le souhaitez pour /var/www/.... C'est la commande que vous devriez utiliser:

Sudo chown -R www-data:www-data /var/www/

Avec cela, chaque fichier et dossier sera défini comme tel à l'intérieur avec ces autorisations de propriété.


Demi-réponse à la question 2: setgidbit

Si vous souhaitez que les fichiers appartiennent à un groupe par défaut, définissez le bit setgiddans le dossier /var/www/html. Les nouveaux fichiers doivent ensuite être créés avec ce groupe comme indiqué dans le dossier.

Sudo chmod g+s /var/www/html

Vous devrez définir des autorisations en écriture. Toutefois, si un utilisateur AUTRE que www-data est en train d'écrire dans les répertoires, vous risquez de vous exposer à une faille de sécurité si vous ne faites pas attention.

Vous vous retrouvez avec des autorisations étant $USER:www-data; pour changer de propriétaire, utilisez ensuite un chowncomme indiqué dans la méthode n ° 1 (cela dit, dans une configuration appropriée, vous devez vous fier aux autorisations de groupe, et non aux autorisations de propriétaire, pour accéder aux fichiers Web).


PHP Wordpress Problème de duplicateur

Le problème avec les autorisations est que l'utilisateur/groupe PHP s'exécute selon les besoins en écriture et en lecture et probablement +x dans le répertoire pour modifier la structure de répertoires, etc.

PHP s'exécute en tant que www-data par défaut dans les installations Ubuntu utilisant les configurations par défaut. Idéalement, la procédure ci-dessus résoudrait le problème, car le plug-in Duplicator était un plug-in PHP.

Dans l'idéal, vous devriez également consulter la documentation du plug-in Duplicator pour savoir quelles autorisations il a besoin pour s'exécuter et fonctionner.

10
Thomas Ward

Pour vous assurer que tous les fichiers ou dossiers que vous créez dans /var/www/html deviennent automatiquement la propriété de www-data, vous pouvez utiliser inotifyname__, c’est comme cron mais il surveille les dossiers/fichiers des modifications apportées aux attribets, aux créations de fichiers, aux modifications, etc.

Tout d'abord l'installer avec:

$ Sudo apt-get install incron

Autorisez la racine à utiliser incronen ouvrant /etc/incron.allow avec:

$ Sudo vim /etc/incron.allow

et ajoutez rootau fichier, puis enregistrez et quittez.

Éditez votre incrontab avec:

$ Sudo incrontab -u root -e

et ajoutez-y la ligne suivante:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

sauvegarder et quitter.

Désormais, dès qu'un fichier est créé dans le répertoire /var/www/html, il définit automatiquement onwership sur www-data:www-data.

Explication de la ligne dans incrontab:

/var/www/html est le répertoire qui sera surveillé.

IN_CREATE surveillera les fichiers créés. C'est le masque de changement de fichier.

/bin/chown -R www-data:www-data /var/www/html/ est la commande/action à exécuter.

5
krt

Changez de propriétaire en www-data: www-data de tous les fichiers ET répertoires situés sous/var/www et/var/www/html

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html est impliqué ici (comme faisant partie de/var/www /)
  • -R le rend récursif (il parcourra donc tous les répertoires de /var/www/).

Assurez-vous que tous les fichiers ou dossiers que je créerai avec l’un des utilisateurs de mon réseau seront automatiquement détenus par www-data: www-data

  • Dans/var/www/html/je suppose?

Définissez votre configuration Apache sur www-data. Voir /etc/Apache2/envvars

# envvars - default environment variables for Apache2ctl

export Apache_RUN_USER=www-data
export Apache_RUN_GROUP=www-data

Vous devez redémarrer Apache après avoir édité cela (Sudo service Apache restart).

Cela inclut les fichiers créés automatiquement par les scripts php, comme le plugin Duplicator le fait si je ne me trompe pas).

Le problème ici n'est probablement pas le plugin mais php. L'utilisateur doit être le même processus que celui utilisé par PHP. Vous devez donc probablement définir cela sur www-data également s'il s'agit de votre utilisateur et de votre groupe (/etc/php5/Apache2/php.ini).

3
Rinzwind

Je l'ai résolu! Je pense toujours que c’était un problème d’envars Apache, mais je ne savais pas vraiment si c’était le problème qui résolvait le problème ... En tout cas, voici ce que j’ai fait:

Changé envvars à

export Apache_RUN_USER=boris
export Apache_RUN_GROUP=www-data

A couru

Sudo chown -R boris:www-data /var/www/

Maintenant, ça marche jusqu'à présent. Va tester plus loin ...

1
Boris Chevreau