Найти, где служба теряет доступ
Запуск от имени службы останавливается ровно на той части, куда ей нет прохода:
строка с Permission denied и есть ответ. Чинят права этой части, а не файла —
см. chmod-chown.
Команда namei разбирает путь по частям и показывает тип, права и владельца каждого каталога до самого файла.
namei -l /etc/nginx/nginx.conf
тип, права, владелец каждой части
namei -m /var/www/html/index.html
только права
namei -o /srv/app/data
только владелец и группа
namei /bin/sh
куда ведут символические ссылки
namei -n /bin/sh
не раскрывать ссылки
namei -x /home/student
отметить точки монтирования (D)
sudo -u www-data namei -l /srv/site/index.html
путь глазами службы
Чтобы открыть файл, процесс проходит каждый каталог пути, и на каждом ядро
проверяет право x. ls -l показывает права только одной части. namei идёт по
всему пути и печатает строку на каждый каталог и на сам файл:
Первая строка — разбираемый путь. Дальше в каждой строке тип и права (d
каталог, - файл, l ссылка), владелец, группа и имя части. Как читать права —
permissions.
Если дальше пройти нельзя, namei пишет причину на месте той части, до которой не
добрался:
У каталога root для остальных ---: без x в него не войти, и .bashrc уже не
проверить. Сам namei права не оценивает, он только показывает их. Какая тройка
действует для учётной записи, решаешь по владельцу и группе в строке.
-l — то же, что -m -o -v вместе; чаще всего достаточно его. Полный список —
man namei.
| Ключ | Что делает | Пример |
|---|---|---|
-l --long |
Длинный формат — тип, права, владелец и группа каждой части пути. | namei -l /etc/nginx/nginx.conf |
-m --modes |
Показать права каждой части. | namei -m /var/www/html/index.html |
-o --owners |
Показать владельца и группу каждой части. | namei -o /srv/app/data |
-n --nosymlinks |
Не раскрывать символические ссылки. | namei -n /bin/sh |
-x --mountpoints |
Отметить каталоги-точки монтирования буквой D. | namei -x /home/student |
-v --vertical |
Выровнять права и владельцев в колонки. | namei -mov /srv/app |
Ничего не найдено. Попробуй запрос короче.
Запуск от имени службы останавливается ровно на той части, куда ей нет прохода:
строка с Permission denied и есть ответ. Чинят права этой части, а не файла —
см. chmod-chown.
Без -l namei показывает только типы и раскрывает каждую ссылку с отступом:
/bin/sh на деле — /usr/bin/dash. Подробнее о ссылках — links.
Части пути с этим именем нет. Строки выше существуют — опечатка или неверный
регистр именно здесь. Проверь содержимое предыдущего каталога: ls -la каталог.
У каталога строкой выше нет x для того, кто запустил namei. Посмотри его
тройку для своей учётной записи (владелец, группа или остальные) и запусти
namei от нужного пользователя через sudo -u.
namei не показывает ACL, AppArmor и группы, которые процесс получил при запуске.
Проверь getfacl путь (см. acl); после usermod -aG нужен новый вход или
перезапуск службы — старый процесс живёт со старым списком групп.
Права файла проверяются последними. Если закрыт любой каталог выше, до файла
очередь не доходит, — найди этот каталог по namei -l.
rwx и какая тройка действует.ls -ld каталог.namei.Есть неточность? Сообщить об ошибке в статье