パッケージqqq.deb
は、qqq
ユーザーアカウントから実行する必要があるプログラムuqqq
をインストールします。パッケージは、qqq
プログラム、qqq.conf
構成ファイル、および/etc/init.d/qqq
initscriptで構成されています。
パッケージはユーザーuqqq
の作成をどのように管理する必要がありますか?これに関するベストプラクティスまたは公式のガイドラインはありますか?
uqqq
作成するだけです。/etc/init.d/qqq
スクリプトから最初の起動時に自動的にユーザーを作成します。qqq
プログラムの最初の起動時にユーザーを自動的に作成します(引数なし)qqq --create-user
を使用して)、開始を拒否します。qqq
自体にインタラクティブに尋ねます。パッケージは、アンインストール時にユーザーアカウントを削除する必要がありますか?
Debian wikiには、すでに述べたDebianポリシーマニュアルよりも包括的で具体的なガイダンスがあります。 AccountHandlingInMaintainerScripts を参照してください:
Adduserプログラムは、-systemオプションを指定して呼び出された場合に正しく動作します。したがって、通常は
adduser --system $ USERNAME
postinstで、ログインを無効にしたアカウント、nogroupのプライマリグループ、および/ homeの下のホームディレクトリを作成します。他のオプションが必要な場合は、必要に応じて追加してください。
Adduser --systemは通常は正しいことを行うので、アカウントがすでに存在しているかどうかをgetentとクロスチェックする必要は通常ありません。そうでない場合は、adduserに対してバグを報告して、メンテナスクリプトをシンプルにしてください。
アカウントの削除に関するアドバイスは決定的ではありません。ただし、 Fedoraに対応するアドバイス は不正確ではありません。
ユーザーまたはグループを削除しないでくださいパッケージによって作成されたユーザーまたはグループは削除しません。これらのユーザー/グループが所有するファイルが残されているかどうかを確認する正しい方法はありません(残されている場合でも、どうすればそれらを処理しますか?)、存在しないユーザー/グループを指す所有権を残しておくと、セキュリティの問題が発生する可能性があります意味的に関連のないユーザー/グループが後で作成され、UID/GIDを再利用する場合。また、一部の設定では、ユーザー/グループの削除が不可能または望ましくない場合があります(たとえば、共有のリモートユーザー/グループデータベースを使用している場合)。未使用のユーザー/グループのクリーンアップは、必要に応じてシステム管理者が行う必要があります。
パッケージをインストールする管理者は、パッケージがpreinまたはpostinstのいずれかで必要なユーザーを自動的に作成することを期待します。これにより、ユーザーが所有する必要のあるファイルは、プログラムを実行する前に作成できます。
プログラムは、必要な場合(たとえば、特権ポートにバインドする場合)にのみrootとして実行する必要があり、理想的には、必要なrootの実行が終了したら、特権を削除する必要があります。
他の(インストールされた)パッケージがこれをどのように処理したかを見るには、
grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst
リストされたファイルを読み取る(ほとんどは複数行のオプションを取ります)。
奇妙なことに、ユーザーを作成するインストール済みパッケージの1つを除いてすべてがadduser
を使用してユーザーを追加しますが、adduserパッケージは必須パッケージではないため、それに依存するようにパッケージをビルドする必要があります。 useradd
プログラムはlibuuid1パッケージによって使用され、必須パッケージであるpasswd
パッケージの一部です。
セクション 10.9。権限と所有者Debianポリシーマニュアルの中にあなたが探しているものが含まれています(「バージョン3.9.5.0、2013-10-28」から):
パッケージの新しいユーザーまたはグループを作成する必要がある場合、2つの可能性があります。最初に、バイナリパッケージ内の一部のファイルをこのユーザーまたはグループが所有する必要がある場合や、ユーザーIDまたはグループID(名前だけではなく)をバイナリにコンパイルする必要がある場合があります(ただし、後者の場合は避けてください)この場合のように、静的に割り当てられたIDが必要です)。
静的に割り当てられたIDが必要な場合、
base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of the
/etc/group 'に存在するIDを使用して/etc/passwd' or
base-passwd'パッケージからユーザーまたはグループIDを要求するか、パッケージを正しいIDでユーザーまたはグループ自体を作成します(可能な場合はadduser') in its
preinst 'またはpostinst'. (Doing it in the
postinst'を使用することをお勧めします。それ以外の場合は、 `adduser 'パッケージで事前依存が必要になります)。
注:debian-develリストは非常にアクティブで、そのような質問に答えます too (その例は2003年のものです)。