В поисках системно-разрешенного сервиса после недавнего обнаружения уязвимостей я обнаружил очень странное поведение команды find.
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
Команда возвращает 0 или две строки в качестве вывода для первого запуска. Но если я запускаю команду во второй раз, я получаю:
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
./lib/systemd/systemd-resolved
./lib/systemd/system/systemd-resolved.service.d
./lib/systemd/system/systemd-resolved.service
Это означает, что в первый раз «найти» на самом деле не все найти. Также это происходит только один раз. Выполнение команды в следующий раз показывает правильный вывод. Я проверял это на некоторых других системах с установленным Debian 8 (jessie). В ядрах с ядром 4.9+ эта проблема возникает всегда, но в системах с ядром 3.16 этого не происходит.
После перезагрузки системы все это повторяется. Но поведение одинаково для каждой отдельной системы. Это означает, что если тестирование в конкретной системе возвращает (ошибочно) две строки вывода для первого запуска и правильные выходные данные для второго запуска, то при первом запуске команды после перезагрузки системы снова выводятся 2 строки. Таким образом, системы показывают одинаковое поведение после каждой перезагрузки (согласно моим тестам). Подробности файлов следующие:
-rw-r--r-- 1 root root ./usr/share/man/man8/systemd-resolved.service.8.gz
lrwxrwxrwx 1 root root ./usr/share/man/man8/systemd-resolved.8.gz -> systemd-resolved.service.8.gz
-rwxr-xr-x 1 root root ./lib/systemd/systemd-resolved
drwxr-xr-x 2 root root ./lib/systemd/system/systemd-resolved.service.d
-rw-r--r-- 1 root root ./lib/systemd/system/systemd-resolved.service
РЕДАКТИРОВАТЬ: Для всех тех, кто предлагает проблему, может быть связано с этим конкретным случаем для этих конкретных файлов: « система решена » просто в качестве примера. Это происходит и при поиске других ключевых слов. Это еще один пример, который дает неправильные результаты для первого запуска:
root@localhost:/# find . -name "*apache*"
Не кто-нибудь здесь может проверить эту проблему на Debian 8 с последним ядром из репозитория backport?
/lib/systemd
монтируется? Что это за файловая система? Если это отдельная точка монтирования, какое время это был установлен?
strace
? На какой ОС вы наблюдали ошибочное поведение? Что вы подразумеваете под "возвращает 0 или два результата, как указано выше"? Ноль или две строки вывода, или код выхода 0 + две строки? Это происходит снова после запуска новой оболочки или перезагрузки? Может быть уместно, что первый вызов возвращает только файлы, а второй возвращает файлы и каталоги.