I am a bit shocked about this discover. If I don't have execution permission on a file, say, foo... I can still execute it with:
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ./foo
(ld-linux-x86-64.so.2
is a symlink to ld-2.31.so
).
Since I don't think I know what's really happening in that command, since I don't really know what ld-2.31.so
is, can you explain why can that execute files? Is this what happens in background that we don't see, when we just do ./foo
? What is ld-2.31.so ? What's its role? Are there any other "tricks" and libraries(I don't know their purpose, I am a newbie actually) that do similar jobs?