최근 취약성 공개 이후 시스템 해결 서비스를 검색하면서 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 또는 2 행을 리턴합니다. 그러나 두 번째 명령을 실행하면 다음과 같은 결과가 나타납니다.
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이 설치된 시스템에서는 발생하지 않습니다.
시스템 재부팅 후이 모든 것이 다시 발생합니다. 그러나 각 개별 시스템의 동작은 동일합니다. 즉, 특정 시스템에서 테스트 한 결과 첫 번째 실행시 두 줄의 출력이 반환되고 두 번째 실행시 올바른 출력이 반환되면 시스템을 다시 부팅 한 후 명령을 처음 실행하면 두 행이 다시 인쇄됩니다. 따라서 시스템은 재부팅 할 때마다 동일한 테스트를 수행합니다 (내 테스트에 따라). 파일 세부 사항은 다음과 같습니다.
-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
편집 : 문제를 제안하는 모든 사람들 에게이 특정 파일에 대한이 특정 사례와 관련이있을 수 있습니다 : " system-resolved "는 예와 같습니다. 다른 키워드도 검색 할 때 발생합니다. 이것은 첫 번째 실행에 잘못된 결과를 제공하는 또 다른 예입니다.
root@localhost:/# find . -name "*apache*"
여기 아무도 백 포트 저장소의 최신 커널을 가진 데비안 8에서이 문제를 확인할 수 없습니까?
/lib/systemd
마운트 방법 어떤 종류의 파일 시스템입니까? 이 지점을 별도의 마운트 있다면, 어떤 시간 이 마운트했다?
strace
? 를 사용하여 두 호출의 추적을 비교할 수 있습니까 ? 어떤 OS에서 잘못된 동작을 관찰 했습니까? "위와 같이 0 또는 2 개의 결과를 반환합니다"는 무슨 뜻입니까? 0 또는 2 줄의 출력 또는 종료 코드 0 + 2 줄? 새 쉘을 시작하거나 재부팅 한 후에 다시 발생합니까? 첫 번째 호출은 파일 만 반환하고 두 번째 호출은 파일과 디렉터리를 반환하는 것이 적절할 수 있습니다.