por que o loop while funciona no terminal se ld-2.17.so não tem permissão executável?

por que o loop while funciona no terminal se ld-2.17.so não tem permissão executável?

Na minha pergunta anterior,executei "chmod 666 ld-2.17.so" - como posso recuperar?Perguntei se altero ld-2.17.soa permissão de leitura, como posso recuperá-la, já que não me permitirá executar nada que requeira essas bibliotecas?

E obtive a resposta da seguinte forma,

Se você tiver um arquivo executável no qual possa gravar, poderá copiar o conteúdo de ld.so para esse arquivo usando a leitura do bash:

while IFS= read -d '' -r line; do printf "%s\0" "$line"; done > executable-file < /lib64/ld-2.17.so

Eu tentei e funcionou. Mas o que estou confuso é por que esse whileloop funciona se /bin/bashrequer lib64/ld-2.17.sobiblioteca, como pode ser visto a seguir,

ldd /bin/bash
    linux-vdso.so.1 =>  (0x00007ffc54dee000)
    libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f6fb9bbe000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f6fb99ba000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f6fb95f6000)
    /lib64/ld-linux-x86-64.so.2 (0x000055ec142f5000)

Alguém pode me dizer por que basho código funcionou no terminal sem o /lib64/ld-2.17.so? Isso também significa que também posso criar um arquivo executável vazio usando basho terminal, mesmo que /lib64/ld-2.17.sonão tenha permissões?

Obrigado

Responder1

while IFS= read -d '' -r line; do 
    printf "%s\0" "$line"
done > executable-file < /lib64/ld-2.17.so

usa apenas shell integrados, portanto não precisa iniciar novos processos. O cenário de recuperação pressupõe que você já tenha um shell em execução; como já está em execução, suas permissões no disco e as de suas bibliotecas não importam mais.

Você não seria capaz de iniciar um novo shell nessas circunstâncias, mas nada em execução no momento é afetado pelas permissões alteradas.

Se o arquivo que você está tentando ler tivernãopermissões, isso só funcionará se você estiver em um shell root; caso contrário, o redirecionamento ld-2.17.sofalhará, pois você não poderá ler um arquivo ilegível, a menos que seja root. (Estou ignorando o SELinux etc. aqui.)

informação relacionada