最近ファイルに実行権限がない場合/lib64/ld-linux-x86-64.so.2
。
たとえば、x 権限を復元するには
-rw-r--r-- 1 root root 59K Mar 1 2017 /bin/chmod
私たちは走ることができます
/lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod
これがどのように行われるのか本当にわかりません。一般的なことではなく、少し神秘的でもあります。
答え1
これは動的リンカーです。単独で実行すると、それが何をしているかを教えてくれます。
使用法:
ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
共有ライブラリ実行可能ファイルのヘルパープログラム「ld.so」を呼び出しました。プログラムは通常ファイルにあり、
/lib/ld.so
ELF共有ライブラリを使用する実行可能ファイルの特別な指示は、システムのプログラムローダーにこのファイルからヘルパープログラムをロードするように指示します。このヘルパーは、プログラム実行可能ファイルに必要な共有ライブラリをロードし、プログラムの実行を準備して実行します。コマンドラインから直接このヘルパーを呼び出して、ELF実行可能ファイルをロードして実行できます。これは、ファイル自体を実行するのと同じですが、常に実行する実行ファイルではなく、指定したファイルのヘルパーを使用します。これは主にメンテナンス者が実行する意図のない新しいバージョンのヘルパーをテストするためのものです。
リンカは、動的にリンクされたプログラムを実行するために使用されます。を実行すると、カーネルは実際に手動で実行するのとchmod
同じ操作を実行します。後者は、実行権限チェックが実行されるファイルへのシステムコールを介して実行されるため、バイナリが実行可能でなくても機能します。シェルコマンドラインでシェルに渡されるパスは、代わりに実行権限を確認し、リンカに引数としてのみ渡されるパスです。実行可能ファイルが不要な場合も同様です。/lib64/ld-linux-x86-64.so.2 /bin/chmod
chmod
execve()
/lib64/ld-linux-x86-64.so.2 /bin/chmod
execve()
/lib64/ld-linux-x86-64.so.2
/bin/chmod
/bin/chmod
/bin/sh ./some-script
./some-script
これについての詳細は素晴らしい記事で見ることができます。プログラムの実行方法:ELFバイナリ記事。