Если программе требуется разрешение на запись, как мне установить ее с помощью chown? В частности, какими должны быть разрешения программы foo для решения этой ошибки?
failed to create pid file '/var/run/bar.pid': Permission denied
permissions
el_pup_le
источник
источник
/var/run
Общий подход: определить пользователя и группу процесса, пытающегося получить доступ к файлу. Это часто встречается в конфигурации программного обеспечения (такого как веб-серверы / почтовые серверы / ...), но если программное обеспечение уже работает, используйте это:
Найдите процесс, для которого вы хотите настроить права доступа. В первом столбце указывается, под каким именем пользователя он работает.
Это скажет вам, к каким группам принадлежит пользователь.
Измените владельца или группу файла в соответствии со службой.
Примечание 1: Поскольку вопрос указывает на то, что файл находится в / var / run /, я предполагаю, что доступ нужен только одному процессу, если это не так, вам не следует менять владельца или группу, но вы можете рассмотреть возможность добавления процесса 'пользователь в группе или создание новой группы для этого файла / папки.
Примечание 2: забавные вещи могут случиться с apparmor, который является системой безопасности: он может препятствовать записи процессов в файлы и папки, на которые они имеют (на уровне файловой системы) все необходимые права. С
aa-status
его помощью вы можете увидеть, является ли конкретное правило для вашего сервиса активным.источник
Я просто добавил создание папки непосредственно перед выполнением start-stop-deamon. Это работает, потому что сценарий обычно запускается от имени пользователя root при запуске. Он просто создает папку в / var / run и немедленно меняет владельца, поэтому можно записать PID.
В приведенном ниже примере я проверяю наличие подпапки / var / run, где я помещаю PID в качестве текущего пользователя run, в данном случае user 'pi' (так как я на малине).
Также проверьте эту ссылку, так как она была очень познавательна для меня: скрипт Python для запуска в качестве службы , однако он не охватывал проблему, обсуждаемую здесь.
Пример части моего сценария оболочки:
источник