Je sais que les autorisations de fichiers ont déjà été abordées ici, mais je ne parviens pas à comprendre le concept de mon scénario.
- J'ai créé les fichiers sur une ancienne installation d'ubuntu.
- J'ai copié les fichiers dans ma nouvelle installation d'ubuntu et les ai placés dans ma racine Web.
- Lorsque j'essaie d'exécuter les fichiers (fichiers PHP), j'obtiens une erreur relative aux autorisations.
pour tenter de résoudre ce problème, j’ai supposé qu’ils devaient toujours appartenir à l’ancien propriétaire; j’ai donc exécuté chown -R
le répertoire, avec mon nom d’utilisateur comme argument, afin de prendre possession de tous les fichiers du répertoire. Il convient de noter que les noms d'utilisateur entre les nouvelles et les anciennes installations d'ubuntu étaient les mêmes.
Lorsque je tente d'exécuter à nouveau les fichiers, le même problème: erreur 500 due à des problèmes d'autorisations. Quelqu'un peut-il me dire quelles autres mesures je devrais prendre?
La racine Web de mon installation d’apache se trouve dans mon dossier personnel. Si je crée de nouveaux fichiers dans ma racine Web, ils fonctionnent également comme prévu. Ce ne sont que les anciens fichiers à l'origine du problème.
la source
chmod -R 777 dir
sur le répertoire en question. Je ne peux pas m'empêcher de penser qu'il existe une meilleure façon de le faireRéponses:
Dans les répertoires situés au-dessus de votre racine Web, le bit d'exécution doit être défini pour permettre à Apache de descendre dans ces répertoires.
Si vous avez votre Webroot situé à
/home/user/htdocs
, la/
,/home
,/home/user
et/home/user/htdocs
doit avoir le bit d' exécution.La solution ci-dessus "fonctionne", mais ce n'est pas idéal. Si vous avez créé un dossier, Apache ne peut pas y écrire. L'inverse se produit aussi.
Cela peut être "corrigé" en définissant umask 0007 et en vous ajoutant au groupe Apache (www-data si je ne me trompe pas), afin que les fichiers et les dossiers nouvellement créés puissent être écrits par le groupe.
Vous pouvez également installer un autre MPM Apache: Apache2 MPM ITK ( informations sur la configuration ) et ajuster la configuration pour qu'Apache s'exécute sous votre utilisateur.
la source
Si vos documents de serveur sont dans le
/home/$USER/public_html
répertoire, vous devez exécuterattribuer la propriété du dossier DocumentRoot à l'utilisateur
www-data
et au groupewww-data
.Ensuite, vous pouvez vous ajouter au groupe
www-data
Enfin, vous devez rendre le dossier DocumentRoot accessible en écriture par le propriétaire (utilisateur de www-data) et par vous-même (en tant que membre du
www-data
groupe):Pour plus de commodité, vous pouvez créer un script portant le nom suivant
public_html_fix.sh
:Enregistrez-le à l'intérieur
/home/$USER/bin
et rendez-le exécutable en utilisant:Ensuite, vous l’appelez chaque fois que vous en avez besoin, peu importe où vous vous trouvez dans le système de fichiers:
la source
www-data
groupe de lire vos fichiers ou d'écrire sur eux?chmod -R 775 /home/$USER/public_html
vraiment terrible.find /home/$USER/public_html -type d -exec chmod 775 {} \;
etfind /home/$USER/public_html -type f -exec chmod 664 {} \;
est beaucoup mieuxÀ part les fichiers chmodés et l'édition de fichiers .achef apache, je tiens à dire que rien ne fonctionnait pour moi car mes fichiers se trouvaient sur une partition que j'avais montée automatiquement via Nautilus. Cela limite la partition pour votre utilisateur uniquement.
Pour vérifier si vos fichiers sont visibles par l'
www-root
utilisateur ou quel que soit l'utilisateur qui exécute Apache (exécuterps -aux | grep apache2
pour vérifier), exécutez la commande suivante:et essayez de lire un fichier à partir de la racine de votre document.
Si le fichier n'est pas lisible, vérifiez que:
1) vous avez défini toutes les autres autorisations de fichier
2) vous avez utilisé
FollowSymlinks
dans votre.conf
fichiers si nécessaire3) vous avez configuré DocumentRoot
3) montez votre partition pour tous les utilisateurs. Je devais éditer
/etc/fstab
et spécifier ma partition via son UUID:Puis démontez votre partition via Nautilus et effectuez une
sudo mount -a
. Si tout se passe bien, vos fichiers sont maintenant sous/mnt
. Mettez à jour vos liens symboliques et vous êtes prêt à partir.la source
La meilleure façon que j'ai trouvée de toujours configurer cela est la façon dont VirtualMin le fait.
créer un utilisateur et un groupe "myhome"
Faites de l’utilisateur apache un membre du groupe "myhome". Pas l'inverse comme certaines des explications décrites ici
Alors maintenant, apache a lu et exécuté l'accès à / home / myhome en plus de / home / myhome / www
"myhome" utilisateur a un accès en écriture
la source
www-data
appartient au groupemyhome
. Tous les fichiers et répertoires ont des autorisations d'écriture de groupe et appartiennent àmyhome:myhome
. J'ai redémarré Apache. Apache ne peut toujours pas écrire de nouveaux fichiers et dossiers. (Script PHP utilisant www-data: utilisateur / groupe www-data)