J'ai eu du mal avec les autorisations jusqu'à présent, et j'ai posté une autre question, mais j'ai identifié le problème, sans aucun moyen de le résoudre pour le moment.
Ma configuration:
- Bureau Ubuntu avec pile LAMP
- 5 "utilisateurs" J'ai créé des utilisateurs que j'ai créés sur le serveur ubuntu en utilisant
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 pour que les ordinateurs de mon réseau se connectent au dossier / var / www, partagé en utilisant Samba. - EDIT: Le but est de créer une sorte de "maître local" 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 donc le serveur n'est pas accessible depuis ailleurs) .
Mon problème:
Actuellement, lorsque je crée un nouveau dossier sur /var/www/html
(ex: 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 administrateur principal de mon installation de bureau ubuntu , et cela montre en effet boris: www-data lors de l'exécution ls -l
sur le dossier nouvellement créé), ce qui pose des problèmes avec ma configuration actuelle (en utilisant Duplicator Plugin pour wordpress par LifeInTheGrid principalement). Cependant, mon /var/www
et mon /var/www/html
sont la propriété dewww-data:www-data
Je voudrais donc savoir comment je peux:
Changez la propriété en www-data: www-data de tous les fichiers ET répertoires sous / var / www et / var / www / html
Assurez-vous que tout fichier ou dossier que je vais créer avec l'un des utilisateurs de mon réseau appartiendra automatiquement à www-data: www-data (cela inclut les fichiers créés automatiquement par les scripts php car c'est ce que fait le plugin Duplicator si je suis pas faux).
Y-a-t-il un moyen de faire ça?
Remarque: Je suis un super débutant avec des choses liées à Linux et aux lignes de commande, mais je rattrape rapidement.
Remarque 2: umask est déjà défini comme 0002
ÉDITER:
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 locale, pas statique).
J'ai couru
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, elle est déjà définie 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 appartiendra à boris: www-data et en configurant ma config apache envvars sur boris: www-data. ÇA A MARCHÉ!
Voici ce que j'ai fait:
Envvars modifiés en
export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data
Ran
sudo chown -R boris:www-data /var/www/
Redémarré Apachem, créé un nouveau dossier, ajouté mes fichiers, exécuté le plugin, dit maintenant que c'est bon !!!
la source
Réponses:
Réponse à la question n ° 1: récursive
chown
Un récursif
chown
vous permettra de définir la propriété et le groupe selon vos besoins/var/www/...
. Voici la commande que vous devez utiliser: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 n ° 2:
setgid
bitSi vous souhaitez que le groupe soit propriétaire par défaut des fichiers, définissez le
setgid
bit sur le/var/www/html
dossier. De nouveaux fichiers doivent ensuite être créés avec ce groupe comme indiqué sur le dossier.Vous devrez cependant définir des autorisations d'écriture si un utilisateur AUTRE que celui qui
www-data
écrit dans les répertoires, et cela peut vous ouvrir un trou de sécurité ou deux si vous ne faites pas attention.Vous vous retrouvez avec des autorisations étant
$USER:www-data
; pour changer le propriétaire, vous utilisez ensuite unchown
comme 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 de l'utilisateur, pour accéder aux fichiers Web).Problème avec PHP Wordpress Duplicator
Le problème avec les autorisations est que l'utilisateur / groupe PHP s'exécute selon les besoins d'écriture et de lecture et probablement
+x
sur le répertoire pour modifier la structure dir et autres.PHP fonctionne comme
www-data
par défaut dans les installations Ubuntu qui utilisent les configurations par défaut. Idéalement, vos étapes ci-dessus devraient résoudre le problème, car vous êtes coincé avec le plugin Duplicator étant un plugin PHP.Idéalement, vous devriez également consulter la documentation du plug-in Duplicator pour vérifier les autorisations dont il a besoin pour fonctionner et fonctionner.
la source
Pour vous assurer que tout fichier ou dossier dans lequel vous créez
/var/www/html
est automatiquement détenu par www-data que vous pouvez utiliserinotify
, c'est comme cron mais surveille les dossiers / fichiers pour les changements d'attributs, les créations de fichiers, les modifications et bien plus encore.Installez-le d'abord avec:
Autoriser root à utiliser
incron
en ouvrant/etc/incron.allow
avec:et ajouter
root
au fichier, puis enregistrez et quittez.Modifiez votre incrontab avec:
et ajoutez-y la ligne suivante:
sauvegarder et quitter.
Désormais, dès qu'un fichier est créé dans le
/var/www/html
répertoire, il sera automatiquement défini surwww-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.la source
./html
est impliqué ici (comme faisant partie de / var / www /)-R
le rend récursif (il traversera donc tous les répertoires/var/www/
).Définissez votre configuration apache sur www-data. Voir
/etc/apache2/envvars
Vous devez redémarrer apache après avoir édité ceci (
sudo service apache restart
).Le problème ici n'est probablement pas le plugin mais le php. L'utilisateur doit être le même processus sous lequel PHP s'exécute. Donc, vous devez probablement définir cela sur www-data aussi si c'est votre utilisateur et votre groupe (
/etc/php5/apache2/php.ini
).la source
www-data
, comme le fait Debian, je crois./var/www/html
est également la propriété du groupe et les privilèges de lecture / écriture. L'autre problème est qu'ils veulent que tout fichier créé par un utilisateur aitwww-data:www-data
, et je suppose que ce sont des utilisateurs du réseau , pas les utilisateurs de Wordpress, vous devez donc rechercher les autorisations de fichiers Linux.Je l'ai résolu! Je pense toujours que c'était un problème lié à Apache, mais je ne sais pas si c'est la chose particulière qui a résolu le problème ... Quoi qu'il en soit, voici ce que j'ai fait:
Envvars modifiés en
Ran
Maintenant, cela fonctionne jusqu'à présent. Testera plus loin ...
la source