Приходит заявка: «Служба не может прочитать свой файл». Проверять такое надо от имени самой службы.
Процесс root проходит большинство проверок доступа к файлам. Поэтому успешный sudo cat доказывает одно: файл существует и читается от root. О службе он ничего не скажет: нужна её учётная запись, тот же путь и та же операция.
Для этого у sudo есть форма sudo -u ПОЛЬЗОВАТЕЛЬ КОМАНДА: команда запускается от указанной учётной записи, если политика это разрешает. Например, веб-сервер nginx в Ubuntu работает от учётной записи www-data:
Первая команда печатает UID и группы процесса www-data, вторая показывает, может ли служба прочитать файл. Пароль www-data не нужен: sudo проверяет политику для того, кто его вызывает.
| Команда | От чьего имени | Что доказывает успех |
|---|---|---|
cat summary.txt |
student | файл читаешь ты |
sudo cat summary.txt |
root | файл есть и читается от root |
sudo -u www-data cat summary.txt |
www-data | файл читает служба |
Перед исправлением запиши наблюдения: вывод id нужного пользователя, путь, владельца, группу и сообщение об ошибке. После исправления повтори ту же операцию от того же пользователя.
В упражнении условия другие: каталог принадлежит службе, и файл в нём нужно подготовить так, чтобы владела им она.
Подготовь файл для службы
Каталог /srv/queue принадлежит учётной записи www-data, от которой работает веб-сервер. Создай в нём пустой файл jobs.txt, владелец и группа которого — www-data.
Цели · 0 из 2
- Создать jobs.txt в /srv/queue ещё не выполнена
- Сделать www-data владельцем и группой файла ещё не выполнена