Как убедиться, что sudo имеет setuid в переупакованных squashfs?

В дополнение к моему предыдущему комментарию к другому ответу , ядро ​​содержит семь бинарных загрузчиков(ищите там файлы, начинающиеся с binfmt_, или читайте конкретныйbinfmt-Kconfig):

Это то, что определяет типы исполняемых файлов, которые может выполнять ядро. binfmt_miscв частности, позволяет ядру обрабатывать многие другие двоичные файлы (, по крайней мере, с точки зрения процесса, вызывающего одну из execфункций).

Тем не менее, это не вся история, так как также задействованы библиотека C и сами оболочки. POSIX теперь требует, чтобы функции execlpи execvpпри обнаружении исполняемого файла, который не может запустить ядро, пытались запустить его с помощью оболочки; см. обоснование здесь для деталей.

То, как все это взаимодействует, чтобы обеспечить поведение, которое вы видите, подробно описано в . Что именно происходит, когда я запускаю файл в своей оболочке? и Какой интерпретатор оболочки запускает сценарий без шебанга?

0
17.03.2020, 13:55
1 ответ

Предполагая, что вы используете unsquashfsдля распаковки файлов, вы получите набор принадлежащих вам файлов без битов setuid. Но вы можете вручную вернуть бит setuid для любых файлов, которые вы хотите (с помощьюchmod u+s); конечно, они будут настроены на ваш идентификатор. Но когда вы переупаковываете файлы с помощью mksquashfs, добавьте опцию -all-root, и все файлы в файловой системе будут принадлежать пользователю root, а не вам, и любой бит setuid будет сохранен.

0
28.04.2021, 23:20

Теги

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