Examine owner and permissions of paths
The ownership of an entire path hierarchy is important when nginx
needs to
read static content. For instance, the path
/var/www/site.com/one/two/three/numbers.html
may be problematic when
directory three
is owned by root
rather than www-data
. Nginx will
respond with status code 403 (forbidden)
when http://site.com/one/two/three/numbers.html
is accessed.
To debug this scenario we need to examine the owners and pemissions of each of the directories that lead to numbers.html
. This can be accomplished in linux with the handy namei
command in combination with realpath
.
Real path will return the fullpath for the file.
> realpath numbers.html
/var/www/site.com/one/two/three/numbers.html
And namei -l <full_path>
will examine each step in the file's directory structure.
> namei -l $(realpath numbers.html)
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x www-data www-data www
drwxr-xr-x www-data www-data site.com
drwxr-xr-x www-data www-data one
drwxr-xr-x root root two
drwxr-xr-x www-data www-data three
-rw-r--r-- www-data www-data numbers.html
Ah there it is. The directory two
is owned by root
rather that www-data
. chown
will help you from here.