vmblock в archlinux [дубликат]

Bash - интерпретатор; он принимает ввод и делает все, что хочет. Не нужно обращать внимание на исполняемый бит. Фактически, Bash является переносимым и может работать в операционных системах и файловых системах, которые не имеют понятия исполняемого бита.

Что касается исполняемого бита, так это ядро ​​операционной системы. Когда ядро ​​Linux выполняет exec , например, оно проверяет, что файловая система не смонтирована с параметром noexec , оно проверяет исполняемый бит программного файла и обеспечивает выполнение любых требований. налагается модулями безопасности (такими как SELinux или AppArmor).

Обратите внимание, что исполняемый бит - это довольно дискреционный вид управления. В системе Linux x86-64, например, вы можете обойти проверку ядра исполняемого бита, явно вызвав /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 в качестве интерпретатора :

cp /bin/ls /tmp/
chmod -x /tmp/ls
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /tmp/ls

Это в некоторой степени аналогично получению исходного кода Bash в Bash, за исключением того, что ld.so является интерпретатором, а код, который он выполняет, является машинным кодом в Формат ELF.

0
04.06.2013, 17:15
0 ответов

Теги

Похожие вопросы