Как мне добавить в 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/*
Другие вопросы по тегам