Как мне добавить в sudoers.d пользовательский RPM
У меня есть собственный RPM, который я создал, который должен добавить записи в sudoers, поэтому у меня есть записи, добавившие файл в мой RPM /etc/sudoers.d/mypackage
и поместил мои команды sudo там.
Файлы добавляются и RPM генерируется. К сожалению, когда я пытаюсь установить пакет, он жалуется:
file /etc/sudoers.d from install of mypackage-1.0.0-1.x86_64 conflicts with file from sudo-1.8.6p7016.el7.x86_64
Rpm установится нормально, если я установлю его с --force, например:
rpm -Uvh --force mypackage.rpm
Я, вероятно, мог бы повторить содержимое файла sudoers в /etc/sudoers.d
но я бы предпочел, чтобы файл sudoers отслеживался с помощью rpm.
Как добавить записи в sudoers с пользовательского RPM без жалоб sudo?
РЕДАКТИРОВАТЬ: Чтобы уточнить мой пост, у меня есть дюжина каталогов, заполненных файлами:
/etc/sudoers.d
/etc/httpd/conf.d/
/etc/systemd/system
/etc/cron.d
...
Поскольку у меня нет заранее списка каталогов, и этот список может измениться, я попытался сделать это:
%files
/etc/*
%exclude /etc/sudoers.d
/etc/sudoers.d/*
но в этот момент файлы в sudoers.d не включаются. Если бы я хотел упомянуть каталоги, один за другим, мне пришлось бы динамически генерировать этот список каталогов.
Как и было предложено, я пытался сделать rpm -qf /etc/sudoers.d
и это говорит sudo-1.8.5.el7_2.x86_64
, Если я сделаю rpm -qf /etc/systemd/system
это говорит systemd-219-19.el7_2.x86_64
но rpm не жалуется при попытке установить rpm
1 ответ
Это, вероятно, потому что в %files
В разделе у вас есть что-то вроде этого:
%files
/etc/sudoers.d/
Это делает ваш пакет не только включать файлы в /etc/sudoers.d
; но и сам каталог. Вы можете проверить это используя rpm -qlp <generated-rpm>
,
rpm
не позволяет различным пакетам предоставлять один и тот же файл или каталог. Решение состоит в том, чтобы только упаковать файлы в этом каталоге:
%files
/etc/sudoers.d/*