Я пытаюсь протестировать cap_dac_override. Я написал простой hello world. Я скомпилировал программу и удалил все разрешения из исполняемого файла.
В данный момент я не могу выполнить свою программу, запустив ./hello, что правильно. Теперь я хотел бы применить возможность, чтобы программа могла быть выполнена, даже если у пользователя нет разрешения на выполнение.
Могу ли я спросить, как настроить cap_dac_override, чтобы я все равно мог выполнить программу, или я использую cap_dac_override совершенно неправильно?
setcap cap_dac_override=ep hello
решение1
Вы путаете возможности и разрешения.
Theбиты режима файлаилиразрешенияописыватьчто можно сделать с файлом. Когда вы удаляете все разрешения для файла, вы даете указание ОС, что не хотите, чтобы кто-либо мог читать его, записывать в него или выполнять его.
Возможности файла, с другой стороны, описываютчто может сделать файлили, если быть точным, что может сделать процесс, происходящий из этого программного файла, чего он в противном случае сделать не смог бы.
Если setcap cap_dac_override=ep hello
вы разрешили программе hello
переопределить обычные проверки разрешений при ее запуске. Но это не меняет того, что обычные проверки разрешений применяются при попытке выполнить hello
.