Linux find 명령이 잘못 작동합니다 반환되고 두 번째 실행시

최근 취약성 공개 이후 시스템 해결 서비스를 검색하면서 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에서이 문제를 확인할 수 없습니까?



답변

Debian 8에 설치된 findutils의 기본 버전은 4.4.2이며 이것은 jessie 저장소의 최신 버전입니다. findutils 소스 코드의 최신 버전 (4.6.0)을 다운로드하고 소스에서 바이너리를 빌드했습니다. 그런 다음 동일한 테스트를 수행하고 “find”명령 이 첫 번째 실행에 올바른 출력을 표시했습니다.

그런 다음 gnu 아카이브에서 findutils 버전 4.4.2 소스 코드를 다운로드 하여 컴파일했습니다. 컴파일 된 find 명령에 대해 동일한 문제점이 발생했습니다. 따라서 findutils 4.6.0에서는이 문제가 발생하지 않습니다.

그러나 나는 여전히 일부 사용자가 findutils 4.4.2 (데비안에 설치된 유틸리티의 기본 버전)를 사용하여 동일한 결과를 얻지 못하는 이유를 모르고 왜 이전 버전의 findutils로 데비안이 여전히 출시되어야하는지 모르겠습니다. 다른 Linux 유틸리티 일 수 있으며이 문제가 발생할 수 있습니다. 그리고 마지막으로 이상하게 일어난 일의 정확한 기술적 이유는 아직 알려지지 않았으므로 바람직하지 않습니다. OS 환경에 문제가 있는지 확실하지 않기 때문입니다.