Шукаючи сервісно вирішеної служби після недавнього розкриття вразливості, я виявив дуже дивну поведінку від команди 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). У тих, хто має Kernel 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
EDIT: Для всіх тих, хто пропонує проблему, можливо, пов’язану з конкретним випадком для цих конкретних файлів: " вирішено системою " є лише прикладом. Це трапляється і під час пошуку інших ключових слів. Це ще один приклад, який дає неправильні результати для першого запуску:
root@localhost:/# find . -name "*apache*"
Ніхто тут не в змозі перевірити цю проблему на Debian 8 із останнім ядром із сховища backport?
/lib/systemd
монтується? Що це за файлова система? Якщо це окрема точка кріплення, на який час він був встановлений?
strace
? На якій ОС ви спостерігали помилкову поведінку? Що ви маєте на увазі під "повертає 0 або два результати, як вище"? Нуль або два рядки виведення, або вихідний код 0 + два рядки? Чи відбувається це знову після запуску нової оболонки або перезавантаження? Може бути доречним, що перший дзвінок повертає лише файли, а другий повертає файли та каталоги.