Короткий ответ
Нужно сначала посмотреть владельца, группу и права файла командой ls -l, узнать, под каким пользователем запущен процесс, а затем выдать минимально необходимые права через chmod/chown, а не открывать файл «всем на запись».
Как это работает подробнее
у каждого файла есть владелец, группа и биты прав rwx для владельца, группы и остальных; процесс читает файл с правами того UID, от имени которого он запущен — это может быть не тот пользователь, что создавал файл.
Пример кода
Команды терминала
ls -l /etc/app/config.yaml
# -rw------- 1 root root 512 ... config.yaml
chown root:app_group /etc/app/config.yaml
chmod 640 /etc/app/config.yaml
usermod -aG app_group app_userЧто использовать на практике
- Рекомендация.
ls -l config.yamlпокажет владельца и права,ps -o user= -p <pid>покажет, от чьего имени работает процесс; дальше либоchown, либоchmod 640(владелец читает/пишет, группа читает).
Подводные камни
- Риск. «лечить» PermissionError через
chmod 777— даёт запись и чтение всем пользователям системы, включая потенциально скомпрометированные процессы, что является дырой безопасности для файлов с секретами.