Debianパッケージはどのようにユーザーアカウントを作成するのですか?

Debianパッケージはどのようにユーザーアカウントを作成するのですか?

このパッケージは、qqq.debユーザーアカウントで実行する必要があるプログラムをインストールします。パッケージは、プログラム、構成ファイル、および初期化スクリプトで構成されます。qqquqqqqqqqqq.conf/etc/init.d/qqq

パッケージはユーザーの作成をどのように管理する必要がありますかuqqq?これに関するベストプラクティスや公式ガイドラインはありますか?

  1. uqqqpostinstで自動的にユーザーを作成します。
  2. 初めて起動すると、スクリプトは自動的にユーザーを作成します/etc/init.d/qqq
  3. プログラムを初めて起動すると、自動的にユーザーが作成されます。qqq(パラメータなし)
  4. qqq --create-user管理者が明示的にユーザーを作成(使用)しない限り、ユーザーアカウントを作成しないで実行を拒否します。
  5. ユーザーアカウントを作成しないでください。デフォルトでは、ルートで実行するのは安全ではありません。
  6. ユーザーを作成するかどうかをpostinst、init.dスクリプト、またはそれ自体qqqで対話的に尋ねます。

パッケージが削除されたら、ユーザーアカウントを削除する必要がありますか?

答え1

Debian Wikiには、すでに述べた Debian Policy Manual よりも包括的で具体的なガイダンスがあります。バラよりメンテナンススクリプトのアカウント処理:

adduser プログラムは、 --system オプションを指定して呼び出されると正しい操作を実行します。だから普通に電話してください。

ユーザーを追加 - system$username

ログインを無効にするアカウント、nogroupのデフォルトグループ、およびpostinstの/ homeの下にホームディレクトリを作成します。他のオプションが必要な場合は、必要に応じて追加してください。

通常、adduser --systemは正しい操作を実行するため、アカウントがすでに存在するかどうかをgetentでクロスチェックする必要はありません。それ以外の場合は、管理者スクリプトを単純に保つために、adduserのバグを報告してください。

アカウントの削除に関するアドバイスは決定的ではありません。ただし、私が指摘したい点はFedoraの対応提案馬をトリムしません。

ユーザーやグループを削除しないでください。 パッケージで作成されたユーザーまたはグループは決して削除されません。これらのユーザー/グループが所有しているファイルが残っているかどうかを確認し(それでもどうすればよいですか?)、現在存在しないユーザー/グループを指す所有権を持つファイルを残すための合理的な方法はありません。意味上関係のないユーザー/グループを作成し、UID/GIDを再利用すると、後でセキュリティ上の問題が発生する可能性があります。また、一部の設定では、ユーザー/グループの削除が不可能または望ましくない場合があります(たとえば、共有リモートユーザー/グループデータベースを使用している場合)。未使用のユーザー/グループをクリーンアップすることは、必要に応じてシステム管理者の責任です。

答え2

インストールされたパッケージの管理者として、私は自分のパッケージがインストールの前後に必要なユーザーを自動的に生成し、プログラムが実行される前にユーザーが所有する必要があるすべてのファイルを生成したいと思います。

プログラムは、必要なときにのみrootとして実行する必要があります(たとえば、特権ポートにバインド)、rootが必要な操作を完了したら、その権限を放棄する必要があります。

次のコマンドを使用して、他の(インストールされた)パッケージがそれをどのように処理するかを確認できます。

grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst

そして、リストされたファイルを読みます(ほとんどの行以上のオプションが必要です)。

奇妙なことは、私がインストールしたユーザー生成パッケージ(1つを除く)はすべてユーザーを追加することですが、adduseradduserパッケージは必須パッケージではないため、それに依存するようにパッケージをビルドする必要があることです。このuseraddプログラムは libuuid1 パッケージで使用され、passwd必須パッケージの一部です。

答え3

部分10.9。権限と所有者内部にDebian Policy Manualあなたが探しているものがあります(「バージョン3.9.5.0、2013-10-28」から):

パッケージ用に新しいユーザーまたはグループを作成する必要がある場合は、2つの可能性があります。まず、そのユーザーまたはグループが所有するバイナリパッケージの特定のファイルを作成するか、ユーザーまたはグループID(名前だけでなく)をバイナリにコンパイルする必要があります(次の場合は回避する必要があります)。 (または)可能です。これは静的に割り当てられたIDが必要なためです。

静的に割り当てられたIDが必要な場合は、/ etc / group '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にIDを持つbase-passwd'パッケージからユーザーまたはグループIDを要求するか、パッケージが正しい値/etc/passwd' or でユーザーまたはグループ自体を生成するように準備する必要があります。 id(可能であればpreinst 'またはpostinst 'を使用する方が良いですadduser') in its。そうでない場合は、 `adduser'パッケージに事前に依存する必要があります)postinst'. (Doing it in the

メモ:debian-devel リストは非常にアクティブで、次の質問に答えます。また(この例は2003年のものであるにもかかわらず)。

関連情報