Посмотрите на вывод:
deploy@li445-201:~$ sudo ls -al /var/log/nginx/
total 152
drw-rw-r-- 2 root adm 4096 Mar 26 16:08 .
drwxrwxr-x 14 root syslog 4096 Mar 26 06:25 ..
-rw-r--r-- 1 root root 0 Mar 26 16:08 access.log
-rwxrwxrwx 1 www-data adm 108849 Mar 26 06:10 access.log.1
-rw-rw-r-- 1 www-data adm 14206 Mar 25 06:17 access.log.2.gz
-rw-rw-r-- 1 www-data adm 14067 Mar 24 05:31 access.log.3.gz
-rw-r--r-- 1 root root 0 Mar 26 16:08 error.log
-rw-rw-r-- 1 www-data adm 2522 Mar 24 17:13 error.log.1
Я пытаюсь читать, файл журнала развертывают пользователя:
deploy@li445-201:~$ cat /var/log/nginx/access.log.1
cat: /var/log/nginx/access.log.1: Permission denied
Почему я не могу считать файл журнала? Я установил даже 777 разрешений на нем
Полномочия файла показывают, что любой пользователь должен смочь читать, запишите или выполните файл. Каталог, в котором этот файл расположен, однако, ограничивает этот доступ.
drw-rw-r-- 2 root adm 4096 Mar 26 16:08 .
# ^ /var/log/nginx 'bad'
drwxrwxr-x 14 root syslog 4096 Mar 26 06:25 ..
# ^ /var/log 'good'
Для пользователя, чтобы смочь перечислить файлы в каталоге, Вы должны читать и полномочия на исполнение. Существует хорошее объяснение того, почему Вам нужен выполнить бит, о котором можно читать здесь. Необходимо смочь получить доступ к inodes, который является, где требование происходит. Я всегда думал, что Вы могли считать файл, но не перечислить каталог, но кажется необходимостью в выполнить бите для чтения файлов в большинстве ситуаций.
И это основанное на каталоге ограничение идет полностью до /
. Это то, почему 777 файлов в Вашем /home/$USER
к каталогу не может получить доступ другой пользователь, потому что Ваш корневой каталог не имеет никакого чтения, ни полномочий на исполнение для 'другого'.