Некоторое время назад я узнал из этого, что когда-то существовал способ почти навсегда отключить возможность даже корня изменять неизменяемые флаги и флаги только для добавления (lcap CAP_LINUX_IMMUTABLE
) или выполнять необработанные операции чтения / записи (lcap CAP_SYS_RAWIO
) , Я хотел попробовать это, но поскольку с тех пор системный ограничивающий набор возможностей был удален, я исправил ядро Linux таким образом, что команды, требующие любую возможность, всегда отклоняются. Таким образом, я предположил, что это сделает dd
бесполезным как способ обойти и отключить эти ограничения, поскольку lcap CAP_SYS_RAWIO
"запрещает root для записи на сырой диск или сырую память".
Чтобы увидеть, были ли мои модификации успешными, я запустил sudo dd if=/dev/sda of=mbr.img bs=512 count=1
. Операция прошла успешно, поэтому я предположил, что это разрешено, потому что это была только операция чтения. Итак, я запустил sudo dd if=/dev/null of=/dev/sda bs=512 count=1
, но, к моему ужасу, это тоже оказалось успешным. Я проверил, пропустил ли я какое-либо тестирование кода для CAP_SYS_RAWIO
в ядре Linux, обнаружил, что сделал, изменил его по мере необходимости, перестроил, переустановил и снова попробовал. Еще раз: sudo dd if=/dev/null of=/dev/sda bs=512 count=1
успешно выполнено.
Мне любопытно узнать, если dd
не требует CAP_SYS_RAWIO
или он не считается «необработанным вводом / выводом», на случай, если я не пропустил больше ничего.