RPMのベストプラクティスガイドを勤勉に検索した後、何も見つからなかった後、驚くべきことにコミュニティに目を向けました。
インストール後、一部のユーザーとグループが存在すること、およびこれらのユーザーがそのグループのメンバーであることを確認する必要があります。これに推奨される手順はありますか?
既存のrpm仕様では、%preスクリプトを使用して追加する前に必要なユーザーとグループが削除されていることがわかりますuseradd
。私はこれが一般的な慣行だと聞きました。なぜこれですか?テストユーザーがいるよりも優れていますかid -u
?
一部の顧客はユーザーを直接管理したい場合があるため、rpm を実行する前にユーザーを作成します。つまり、最善のアプローチは、ユーザーが存在するかどうかをテストし、存在しない場合は作成することです。これについて意見がありますか?ありがとうございます。
編集する:RHEL 5.7
答え1
Fedoraプロジェクトにはベストプラクティスのリストがあります。。
useradd
デフォルトでは、パッケージに特定のグループが必要な場合、ユーザー/グループ管理はrpmインストールスクリプトを使用して処理する必要があるか、または必要なユーザーまたはグループがすでに存在するかどうかを確認するためにgroupadd
使用する必要があるというアイデアです。getent
これにより、管理者は、たとえばパッケージで管理できるLDAPなどのディレクトリサービスを介してシステムユーザー/グループを管理できる柔軟性を得ることができます。一方、ディストリビューションでは、ユーザー/グループがパッケージによってインストールされ、ローカル管理者によって管理されていない場合は、UIDとGIDをパッケージによって作成されるユーザーとグループに事前に割り当てる必要があります。プラットフォーム上のすべてのシステムで同じように実行されます。
答え2
私はこれが古い質問であることを知っていますが、rpm仕様ファイルからグループを作成する方法を見つけるためにここに来ました。次の内容が役立つことを願っています。
グループが存在することを確認し、どのユーザーがグループに属しているかを確認するには、次のようにします。
getent group root
たとえば、「root」グループの場合です。
また、rpm仕様ファイルにグループを追加する標準的な方法として、次のことが役立つことがわかりました。rpmでユーザーとグループを作成する
[rpm仕様ファイル]の%preセクションで、必要なユーザー/グループが正しい方法で作成されていることを確認してください(RHELパッケージがこれを行う方法の例については、「rpm -q --scripts ...」を参照)。 「システムユーザー」(uid < 500など)を使用することも、使用しないこともあります。
rtkitの例を見ました。
rpm -q --scripts rtkit-0.11-10.fc21.x86_64
preinstall scriptlet (using /bin/sh):
getent group rtkit >/dev/null 2>&1 || groupadd -r -g 172 rtkit