j'ai quelques problèmes à relier mon /var/www/
à un nouveau répertoire Webroot
dans mon dossier personnel. Je pense que ceux-ci proviennent de mon manque de compréhension des autorisations sous Linux.
Pour autant que je sache, les liens symboliques doivent prendre la forme du répertoire que vous souhaitez lier et du répertoire auquel vous souhaitez être lié. C'est pourquoi, dans mon cas, j'ai exécuté:
Sudo ln -s ~/Webroot/* /var/www/
cela a en quelque sorte fonctionné. Si je lance ls
sur /var/www/
, je peux voir tous les fichiers de mon répertoire Webroot
name__.
Chaque fois que j'essaie d'exécuter un fichier qui se trouve dans mon dossier Webroot
name__, j'obtiens une erreur d'autorisation 403. Cela s'explique-t-il par le fait que les fichiers de mon répertoire Webroot sont créés par moi et que l'instance Apache est exécutée en tant que www-data?
si tel est le cas, cela signifie-t-il que je dois modifier les autorisations sur chaque fichier que je crée pour pouvoir l'exécuter?
J'ai déjà exécuté une instance locale d'Apache en pointant la racine du répertoire de mon hôte virtuel par défaut sur le dossier Webroot
name__. Dans ce cas, je n'ai pas eu besoin de modifier les autorisations. Toute aide serait appréciée.
Ce n'est pas une bonne pratique, je suis d'accord avec Weboide. Mais il existe un moyen simple d'atteindre cet objectif.
1). activer le module Apache userdir.
Sudo a2enmod userdir
cela activera le module Apache userdir. Maintenant, vous pouvez mettre le contenu du site Web dans ~/Webroot/
ou quoi que ce soit dans votre répertoire personnel.
Remarque: le dossier par défaut est ~/public_html
2) Apportez les modifications nécessaires à /etc/Apache2/mods-enabled/userdir.conf
.
3) Redémarrer Apache
Sudo /etc/init.d/Apache2 restart
Vous pouvez maintenant accéder au site en naviguant sur votre navigateur jusqu'à http: // adresse IP/~ nom d'utilisateur . Vous pouvez également définir un hôte virtuel pour ce site.
Si vous souhaitez exécuter des fichiers php, vous devez effectuer une étape supplémentaire.
éditez le /etc/Apache2/mods-enabled/php5.conf
et commentez les lignes suivantes:
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_value engine Off
</Directory>
</IfModule>
</IfModule>
Puis redémarrez Apache.
C'est tout. Vous avez terminé.
Réf.: Https: //wiki.ubuntu.com/UserDirectoryPHP
J'espère que cela t'aides. Si vous rencontrez des difficultés, n'hésitez pas à les poster ici.
Ce n'est pas une bonne pratique pour réaliser ce que vous voulez.
Si vous utilisez PHP, vous pouvez jeter un oeil à suexec, suphp ou php-fpm et fastcgi =.
Vous avez raison en ce qui concerne votre problème. Il s’agit d’un problème d’autorisation du fait que vos fichiers Webroot
appartiennent à un utilisateur différent de www-data
.
Voici une solution pas si mauvaise pour contourner votre problème. Notez que vous devrez probablement utiliser Sudo ou vous connecter en tant que root. Assurez-vous de bien comprendre toutes les commandes que vous allez exécuter!
Modifiez votre dossier Webroot
ainsi que vos sous-dossiers et fichiers pour que la propriété du groupe soit définie sur www-data
et définissez les autorisations appropriées:
# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x
Edit: Notez que vous devrez certainement réexécuter ces commandes si vous ajoutez des fichiers/dossiers à l'aide de votre compte d'utilisateur habituel.
J'ai fait presque la même chose avec Lenny, mais j'ai changé en mode non-hax, j'ai correctement configuré Apache. Mais avec un lien symbolique:
$ ll /home
drwxr-xr-x 8 root root 4,0K nov 14 14.59 .
drwxrwxrwx 7 root root 4,0K nov 14 21.24 www -> /var/www
Je pense que vous devriez vérifier la permisson du ~ et du ~/Webroot, je pense que votre répertoire (~) est protégé en lecture, je veux dire , vous devez exécuter ceci:
$ ls -la /home
Pour définir les bonnes permissinons, utilisez:
# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot
Je pense que cela devrait aider, mais donnez-moi plus d'informations à ce sujet. Je vous suggère, pour sortir le Webroot de votre dir, ex. à / home comme moi , car cela peut poser un problème de sécurité.
"#" signifie permisson racine, ex. write Sudo avant les commandes; "$" signifie un utilisateur unique
J'ai été confronté à ce problème. Mais je n’ai pas aimé l’idée de changer le groupe de mon répertoire personnel en www-data. Ce problème peut être simplement résolu en modifiant le fichier de configuration du virtualHost. Configurez simplement la balise Directory pour les inclure
<Directory "your directory here">
Order allow,deny
Allow from all
Require all granted
</Directory>
Le Require all granted
est une nouvelle fonctionnalité, je suppose; ayant une valeur par défaut de denied
name__.
Voir cette page pour référence: http://httpd.Apache.org/docs/current/mod/core.html#directory
Vous devez vérifier les autorisations non seulement de votre destination, mais également de ses parents.