Как сделать RPM, который устанавливает POSIX capabilities файла? Если я попытаюсь сделать rpmbuild
как пользователь, не являющийся пользователем root, тогда я получаю сообщение об ошибке, когда мои крючки установки makefile попытаются запустить setcap
, но если я не запустил setcap
, как будет rpmbuild
скопировать возможности? Кажется, что нет возможности установить возможность из RPM spec file.Создание RPM, который устанавливает возможности файлов POSIX
5
A
ответ
7
is макрос спецификаций файлов для установки возможностей, %caps
; по какой-то причине это, по-видимому, в основном задокументировано в release notes и изменениях, поэтому мне потребовалось некоторое время, чтобы найти его.
Он используется, как это в файле спецификации:
%caps(cap_net_admin=pe) %{_sbindir}/foobar
Чтобы получить make install
использовать setcap
только при вызове корня, вы можете сделать что-то вроде этого:
@if test `id -u` -eq 0; then \
setcap cap_net_admin=pe $(DEST_SBINDIR)/foobar ; \
fi
я не смог чтобы получить директиву '% caps'. Получалась синтаксическая ошибка возле неожиданного токена 'cap_net_raw + ep''. Нашел другое решение, используя '% post', как описано в этой проблеме: https://github.com/schweikert/fping/issues/24#issue-5647305 – acw