web-dev-qa-db-ja.com

カスタムrpmからsudoers.dに追加するにはどうすればよいですか

Sudoerにエントリを追加する必要があるカスタムRPMを作成したので、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

次のような--forceを指定してインストールすると、rpmは正常にインストールされます。

rpm -Uvh --force mypackage.rpm

おそらくsudoersファイルの内容を/etc/sudoers.dにエコーすることもできますが、sudoersファイルをrpmで追跡することをお勧めします。

Sudoが文句を言わずに、カスタムRPMからsudoerにエントリを追加するにはどうすればよいですか?

編集:私の投稿を少し明確にするために、私はファイルでいっぱいのダースのディレクトリを持っています:

/etc/sudoers.d
/etc/httpd/conf.d/
/etc/systemd/system
/etc/cron.d
...

私は事前にディレクトリのリストを持っておらず、このリストは変更される可能性があるので、私がやろうとしたのは次のとおりです。

%files
/etc/*
%exclude /etc/sudoers.d
/etc/sudoers.d/*

ただし、その時点では、sudoers.d内のファイルは含まれていません。ディレクトリについて1つずつ言及したい場合は、そのディレクトリのリストを動的に生成する必要があります。

提案されたように、私は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
Youn Elan

これはおそらく、%filesセクションに次のようなものがあるためです。

%files
/etc/sudoers.d/

これにより、パッケージに/etc/sudoers.dのファイルが含まれるだけではありません。だけでなく、ディレクトリ自体。これは、rpm -qlp <generated-rpm>を使用して確認できます。

rpmは、異なるパッケージが同じファイルまたはディレクトリを提供することを許可しません。解決策は、ファイルのみをパッケージ化することですinside this directory:

%files
/etc/sudoers.d/*
2
Chris Maes