web-dev-qa-db-fra.com

Nginx 403 interdit Erreur interdite Hébergement dans le répertoire à domicile utilisateur

J'ai installé Nginx 1.1.19 sur Ubuntu 12.04 sur ma machine locale et conservé la valeur par défaut /etc/nginx/nginx.conf Sauf pour changer la directive utilisateur.

/etc/nginx/nginx.conf

user nginx www-data;
worker_processes 4;
pid /var/run/nginx.pid;
...

Je veux faire un site statique simple fonctionner avec la racine Web de mon répertoire utilisateur (disons que mon nom d'utilisateur est 'Ubuntu'). Voici la configuration de mon site de test.

/ etc/nginx/sites-disponible/site de test

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /home;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to index.html
    try_files $uri $uri/ /index.html;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
    }

}

Maintenant, met évidemment tous mes fichiers dans la racine Web, donc je ne le mettrais pas sur un serveur réel, mais cela illustre mon point. Si je crée une page Web simple à /home/index.html (pas dans mon dossier utilisateur Ubuntu), je peux accéder à la page à http://localhost/

Cela fonctionne juste bien. Maintenant, je veux simplement mettre la racine Web à l'intérieur par le dossier utilisateur. Donc, dans/etc/nginx/sites-disponible/site de test Je change la directive racine pour être `racine/home/ubuntu;. Je recrée le Symlink vers le site de test, déplacer /home/index.html sur /home/ubuntu/index.html et arrêter et démarrer le serveur Nginx. Maintenant, je reçois l'erreur 403 interdite.

Ma première suspicion était que c'était un problème des permis. Cependant, quand je cours ls -al index.html Je vois

-rw-r--r--  1 nginx   www-data   183 Aug 12 13:13 index.html

qui a l'air juste envers moi? Même exécutant chmod 777 /home/ubuntu/index.html afin que les autorisations soient

-rwxrwxrwx 1 nginx www-data 183 Aug 12 13:13 index.html

n'aide pas. /etc/init.d/nginx configtest Ne produit aucune erreur non plus non plus et je suis sûr que le symbole symbolique dans /etc/

Donc, j'ai été à cela pendant quelques heures et je me demande maintenant ce qui est si spécial à propos de mon annuaire utilisateur que je ne peux rien servir à l'intérieur de celui-ci? Ubuntu crypte les annuaires de la maison ces jours-ci? Est-ce que cela pourrait être le problème? J'ai également ce problème sur une instance EC2 Ubuntu 12.04 (ne sais pas si les répertoires d'utilisateurs sont cryptés là-bas)

8
dgh

Autorisations de répertoire de maison d'utilisateur par défaut

Il semble donc que les autorisations par défaut sur les annuaires d'utilisation de l'utilisateur à Ubuntu 12.04 sont 700. Nginx doit avoir lu la permission des fichiers à servir et avoir exécuté l'autorisation dans chacun des répertoires parent le long du chemin de la racine des fichiers desservis.

Vous pouvez donner votre annuaire à votre utilisateur ces autorisations en exécutant

chmod 701 user_home

Vous pouvez également utiliser 755, qui est le paramètre de permission par défaut sur le répertoire de base sur de nombreux systèmes.

Les répertoires/fichiers de votre racine Web peuvent appartenir à l'utilisateur de données www ou à votre utilisateur personnel régulier tant que l'utilisateur/groupe que NGinx fonctionne comme (tel que défini dans nginx.conf) a lu la permission sur tous les fichiers à servir et Exécuter la permission sur tous les annuaires de racines Web.

Je viens de définir tous les répertoires dans ma racine Web appartenant à mon compte d'utilisateur et que vous disposez des autorisations 755 et je définir tous les fichiers à servir à partir de la racine Web pour avoir des autorisations 664 car celles-ci étaient les valeurs par défaut sur ma machine.

Remarque sur la conversion des numéros de permission au représentant de chaîne.

Ex. drwxr-x--x becomes 751.

Ignorer le premier caractère (D pour le répertoire, - pour fichier, etc.). Les 9 caractères restants forment un triplet binaire où tout caractère non tiret est un 1 et un tiret est un 0.

So drwxr-x--x becomes rwxr-x--x 
becomes 111 101 001 
which is converted to a decimal 751

J'avais besoin d'un recyclage à ce sujet lorsque je traitais des autorisations.

13
dgh