Я намерен установить некоторые возможности для двоичных файлов, включенных в образ Yocto, с помощью «setcap».По какой-то причине упомянутые здесь решения не сработали: Возможности Linux с yocto .Я проверил это, запустив getcap для моего двоичного файла в каталоге создания rootfs:
getcap ${IMAGE_ROOTFS}/usr/bin/mybinary
ничего не возвращает.Также я не нахожу возможности в окончательно работающем образе sdcard.
Затем я попробовал подход, используя IMAGE_PREPROCESS_COMMAND.Я обернул команды setcap в небольшие функции оболочки, такие как:
my_setcap_function() {
sudo setcap cap_ipc_owner+ep ${IMAGE_ROOTFS}/usr/bin/mybinary
}
и добавил имена функций в IMAGE_PREPROCESS_COMMAND.Это работает до такой степени, что при запуске getcap для моего двоичного файла в каталоге {IMAGE_ROOTFS} действительно отображается правильный набор заглавных букв.Однако я все еще не получаю возможности в окончательно работающем образе SDCard.
Также, если я монтирую rootfs ext4 (который используется для создания окончательного образа SDCard) в каталоге, используя цикл -o, я неувидеть возможности моего двоичного файла.Мне кажется, что возможности каким-то образом теряются, когда ext4 создается с использованием mkfs.ext4.
Мне пришлось присоединить sudo к setcap, потому что в противном случае он жалуется, говоря: «невозможно установить эффективную возможность CAP_SETFCAP: операция не разрешена»,Хотя я понимаю, что команды IMAGE_PREPROCESS_COMMAND выполняются с использованием fakeroot, поэтому это sudo не требуется.
Итак, чтобы подвести итог моего вопроса:
- Как получить возможности на SD-картеИзображение сделано с использованием ext4 rootfs image?
- Я хочу использовать способ, который не требует использования "sudo".
Я использую Yocto Krogoth и в настоящее время не могу его обновить.