O comando de localização do Linux está se comportando mal

14

Procurando pelo serviço resolvido pelo sistema após a divulgação recente de vulnerabilidades, acabei percebendo um comportamento muito estranho no comando find.

 root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz

O comando retorna 0 ou duas linhas como saída para a primeira execução. Mas se eu executar o comando na segunda vez que eu obtenho:

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

Isso significa que na primeira vez, "find" não encontra realmente tudo. Também isso só acontece uma vez. A execução do comando nas próximas horas mostra a saída correta. Eu verifiquei isso em alguns outros sistemas com o Debian 8 (jessie) instalado. Naqueles com o Kernel 4.9+ esse problema exato sempre ocorre, mas em sistemas com o kernel 3.16 isso não acontece. Após a reinicialização do sistema tudo isso acontecerá novamente. Mas o comportamento é o mesmo para cada sistema individual. Isso significa que, se o teste em um sistema específico retornar (incorretamente) duas linhas de saída para a primeira execução e a saída correta para a segunda execução, a primeira execução do comando após a reinicialização do sistema imprimirá novamente duas linhas. Então os sistemas mostram o mesmo comportamento após cada reinicialização (de acordo com meus testes). Os detalhes dos arquivos são os seguintes:

-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: Para todos aqueles que sugerem o problema, talvez relacionado a este caso específico para esses arquivos específicos: " resolvido pelo sistema " é apenas como exemplo. Isso acontece ao pesquisar outras palavras-chave também. Este é outro exemplo que fornece resultados errados para a primeira execução:

root@localhost:/# find . -name "*apache*"

Alguém aqui não é capaz de verificar este problema em um Debian 8 com o kernel mais recente do repositório backport?

    
por user2808671 30.06.2017 / 15:14

1 resposta

4

A versão padrão do findutils que está instalada no Debian 8 é a 4.4.2 e esta é a versão mais recente dos repositórios do jessie. Eu baixei a versão mais recente (4.6.0) do código-fonte findutils e construí os binários a partir da origem. Então fiz os mesmos testes e o comando "find" mostrou a saída correta para a primeira execução.

Então baixei o código fonte do 4.4.1 do arquivo gnu e o compilei. O mesmo problema aconteceu com o comando find encontrado. Portanto, esse problema não está acontecendo com o 4.6uts findutils.

Mas ainda não sei por que alguns usuários não obtêm os mesmos resultados usando o findutils 4.4.2 (a versão padrão do utilitário instalado no Debian), e não sei porque o Debian ainda deve ser liberado com esse antigo versão do findutils e, possivelmente, outros utilitários do Linux e causar esta situação problemática. E a última coisa é que a razão técnica exata do que aconteceu estranhamente ainda é desconhecida, o que não é desejável. Porque não tenho certeza se há algo preocupante no meu ambiente de sistema operacional.

    
por 06.07.2017 / 14:37

Tags