8df431a4ea
Беда 1. Проверка «расписание зовёт chistka-zapisey.sh» считала совпадения по всему файлу вместе с пояснениями и удовлетворялась собственным комментарием: подмени строку запуска на вызов несуществующего файла — проверка оставалась зелёной. Заменена на четыре зрячие: сторож берёт саму строку запуска, достаёт из неё пользователя и путь и спрашивает, существует ли то, что расписание вправду зовёт, и тот ли это скрипт. Беда 2. Доказательство «ubuntu удаляет файлы asterisk» было сделано на здоровом случае. Папка живёт в /tmp и исчезает при перезагрузке, дальше её создаёт заново демон Asterisk. Замерил его umask — 0022, значит папка возродится с правами 0755, и уборка не удалила бы НИ ОДНОГО файла, оставаясь на вид живой. В приговоре было 0775, на деле хуже: 0755. Проверено с контролем «файл вправду существует». Лечение: правило /etc/tmpfiles.d/lena-inworld.conf, которое воссоздаёт папку при каждой загрузке с явными правами 0775 asterisk:ubuntu. Эталон положен в хранилище как lena-inworld.conf, слепки сходятся побайтово. Не root — root в папке, открытой всем, хуже лечимой беды, и журнал стал бы его. Не общая группа — после перезагрузки права всё равно 0755, группе там писать нечем. Сторож вырос с 17 до 26 проверок. Главная новая — замером, а не рассуждением: кладёт подставной файл от asterisk и пробует удалить его от того пользователя, который взят из самой строки расписания, потом убирает за собой. Каждая из девяти новых проверок показана красной восемью ножами, включая нож надзирателя и нож приговора. Нож B нарочно отделяет «зовёт не тот скрипт» от «зовёт то, чего нет» — проверки независимы. Не согласен с одной строкой приговора, и с замером: ругань уборки НЕ уходит в /dev/null. Скрипт пишет каждую строку и на экран, и в журнал, а на ругань в расписании стоит дозапись в тот же журнал. Показал живым прогоном: строка «не вышло удалить» в журнале есть. Суть приговора это не меняет — журнал никто не читает. Записей было 86 и осталось 86, слепок списка совпал с началом смены байт в байт. Мусора на машине не осталось, проверено командой.