2014-11-12 5 views
5

Как сделать RPM, который устанавливает POSIX capabilities файла? Если я попытаюсь сделать rpmbuild как пользователь, не являющийся пользователем root, тогда я получаю сообщение об ошибке, когда мои крючки установки makefile попытаются запустить setcap, но если я не запустил setcap, как будет rpmbuild скопировать возможности? Кажется, что нет возможности установить возможность из RPM spec file.Создание RPM, который устанавливает возможности файлов POSIX

ответ

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 
+0

я не смог чтобы получить директиву '% caps'. Получалась синтаксическая ошибка возле неожиданного токена 'cap_net_raw + ep''. Нашел другое решение, используя '% post', как описано в этой проблеме: https://github.com/schweikert/fping/issues/24#issue-5647305 – acw