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が文句を言いません。
これはおそらく、%files
セクションに次のようなものがあるためです。
%files
/etc/sudoers.d/
これにより、パッケージに/etc/sudoers.d
のファイルが含まれるだけではありません。だけでなく、ディレクトリ自体。これは、rpm -qlp <generated-rpm>
を使用して確認できます。
rpm
は、異なるパッケージが同じファイルまたはディレクトリを提供することを許可しません。解決策は、ファイルのみをパッケージ化することですinside this directory:
%files
/etc/sudoers.d/*