Namei: Почему в nginx permission denied?

Почему в Nginx error.log появляются записи вида open() ... failed (13: Permission denied)? Вообще, речь конечно не про Nginx как таковой. Ситуация, когда в *nix-системе доступ запрещён по непонятной причине, хотя у файла или папки "всевсевсе" права rwxrwxrwx (777 в числовом выражении), бывает с любым процессом. В таком случае нужно не биться головой о стену, а вспомнить, что у любого процесса для доступа к любому файлу, помимо прав на чтение (или запись), должны быть права на переход в каждую папку начиная от корня. 

Например, есть Nginx не может отобразить файл, который располагается в /home/pupkin/website/myfile.html, то у Nginx должны быть права на переход (x) во все папки по порядку, начиная от корня /,  /home, /home/pupkin, /home/pupkin/website, /home/pupkin/website. 

Проверить права доступа на каждую папку можно с помощью ls -l, но это долго и не спортивно. Быстро проверить права на каждый элемент пути можно с помощью команды namei с ключом -om ( owner + mode):

$ namei -om /home/pupkin/website/index.html

f: /home/pupkin/website/index.html
 dr-xr-xr-x root   root
 drwxr-xr-x root   root
 drwx------ pupkin pupkin pupkin
 drwxrwxr-x pupkin pupkin website
 -rw-rw-r-- pupkin pupkin index.html

К сожалению, namei есть не вовсех системах, в Linux это часть пакета util-linux-ng, доступного по адресу ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/

Комментарии

Популярные сообщения