Иногда файл имеет правильные права, пользователь состоит в нужной группе, но
Permission denied всё равно появляется.Причина может быть выше по пути: чтобы открыть
/var/www/site/config.php, процесс должен иметь право x на каждый каталог в этом пути.Разберем, как быстро найти место, где ломается доступ.
1️⃣
namei показывает права на весь путьnamei -l /var/www/site/config.php
В выводе будут отдельно показаны:
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-x--- root www-data www
drwx------ root root site
-rw-r----- root www-data config.php
Сразу видно, на каком уровне пользователь может упереться в права.
2️⃣Почему важен
x у каталогаДля каталога
x означает не «запуск», а возможность проходить через него и обращаться к объектам внутри.Например:
chmod 644 /var/www/site
Файлы внутри могут быть доступны для чтения, но войти в каталог без
x уже нельзя.Проверить можно:
sudo -u www-data cat /var/www/site/config.php
3️⃣Проверяем конкретного пользователя
Если доступ должен быть у
www-data:sudo -u www-data namei -l /var/www/site/config.php
А группы:
id www-data
Это помогает понять, действительно ли процесс запускается с теми группами, которые вы ожидаете.
4️⃣ACL тоже могут менять картину
Обычных
ls -l иногда недостаточно. Проверить ACL:getfacl /var/www/site/config.php
Там могут быть дополнительные разрешения для конкретного пользователя или группы.
5️⃣Почему
ls -l файл не всегда помогаетКоманда:
ls -l /var/www/site/config.php
показывает права самого файла.
Но если проблема находится в
/var/www/site, информация о файле сама по себе этого не объяснит.Именно поэтому
namei -l удобен при странных Permission denied: он показывает всю цепочку каталогов, через которую процесс должен пройти до нужного файла.BashTex 📱 #bash #systemd