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:
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.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 !!!
Réponse à la question n ° 1: récursif chown
name __
Un récursif chown
vous 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: setgid
bit
Si vous souhaitez que les fichiers appartiennent à un groupe par défaut, définissez le bit setgid
dans 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 chown
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, 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.
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 inotify
name__, 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 incron
en ouvrant /etc/incron.allow
avec:
$ Sudo vim /etc/incron.allow
et ajoutez root
au 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.
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
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
).
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 ...