adduserは実行しますが、useraddは実行しないものは何ですか?

adduserは実行しますが、useraddは実行しないものは何ですか?

より広範なコマンドに加えて、useraddDebianベースのシステムには、adduserユーザーといくつかの関連タスクを追加するためのより高いレベルのインターフェースを提供する追加のコマンドが含まれています。他のSEサイトには、次のようにこれらのコマンド間の基本的な違いを詳しく説明するさまざまな質問/回答があります。

ほとんどの回答は、基本的にユーザーを対話的に追加するためのより良いインターフェースを提供すると言いますが、ランタイムがどのようなものかadduser詳細に説明しません。adduseruseradd

  1. adduser何をすべきか、useradd何をすべきか?
  2. 同じ結果を得るにはどのコマンドを使用する必要がありますか?

答え1

まず、対応するマニュアルページフラグメントは、2つのコマンド間の違いを強調し、進捗状況に関する情報を提供します。のためadduser

adduserとaddgroupは、/etc/adduser.confのコマンドラインオプションと設定情報に基づいて、システムにユーザーとグループを追加します。 useradd、groupadd、usermod プログラムなどの低レベルツールのためのよりフレンドリーなフロントエンドであり、デフォルトでは Debian ポリシーに準拠する UID と GID 値を選択し、スケルトン構成でホームディレクトリを作成し、カスタムスクリプトを実行するなどタスクを実行します。機能。

それからuseradd

useraddは、ユーザーを追加するための低レベルユーティリティです。 Debian では、管理者は通常 adduser(8) を使用する必要があります。

さらなる調査によると、adduserこれは次のコマンドへの高度なインターフェースを提供し、次のコマンドのいくつかの機能を提供するPerlスクリプトであることがわかりました。

  • useradd
  • groupadd
  • passwd- ユーザーパスワードを追加/変更するために使用されます。
  • gpasswd- グループパスワードを追加/変更するために使用されます。
  • usermod- さまざまなユーザー固有のパラメーターを変更するために使用されます。
  • chfn- 利用者が保有している追加情報を追加/変更するために使用されます。
  • chage- パスワードの有効期限情報を変更するために使用されます。
  • edquota- ディスク使用量クォータを変更するために使用されます。

このコマンドのデフォルト動作adduserは次のとおりです。

adduser username

この単純なコマンドは多くのことを行います。

  1. というユーザーを作成しますusername
  2. ユーザーのホームディレクトリ(デフォルト)を作成し、ここ/home/usernameにファイルをコピーします/etc/skel
  3. ユーザーと同じ名前でグループを作成し、そのグループにユーザーを配置します。
  4. ユーザーにパスワードの入力を求められます。
  5. ユーザーに追加情報を要求します。

プログラムuseraddはほとんどの操作を実行できますが、デフォルトでは実行せず、追加のオプションが必要です。一部の情報には追加のコマンドが必要です。

useradd -m -U username
passwd username
chfn username

adduser生成されたUIDとGIDが以下に準拠していることを確認してください。Debian ポリシー。 /がDebianポリシーに準拠しているuseradd場合は、一般ユーザーの作成に問題がないようです。しかし、問題は Debian がシステム・ユーザー UID に特定の範囲を指定することです。これはLinuxでのみサポートされているようです。したがって、正しい範囲のUID / GUIDを指定せずに素早くシステムユーザーを追加すると、深刻な問題が発生する可能性があります。UID_MINUID_MAX/etc/login.defs/etc/adduser.confuseradd

もう1つの一般的な用途adduserは、グループにユーザーを追加するプロセスを単純化することです。ここでは、次のコマンドを実行します。

adduser username newgroup

次のusermodコマンドと同じです。

usermod -a -G newgroup username

この場合の最大の欠点usermodは、追加オプション(たとえば)を渡すことを忘れた場合は、ユーザーを「-a新しいグループ」に追加する前に、すべてのグループからユーザーを削除することです。-G意味する)。

ただし、ここで使用する場合の1つの欠点は、adduser一度に1つのグループしか指定できないことです。

答え2

私が経験した(そしてここの答えでは見ることができなかった)1つの重要な違いはシステムユーザーを作成するとはどういう意味ですか?

useradd --system--shell /bin/bashそれはむしろadduser --system暗黙的--shell /usr/sbin/nologinにこれが私が望むものであることを示唆しているようでした。

したがって、シェルやホームディレクトリが必要ない場合は、次のものを使用できます。ユーザーが追加されましたこのように

useradd --system --shell /usr/sbin/nologin foo

その結果は次のとおりです。/etc/passwd

foo:x:994:991::/home/foo:/usr/sbin/nologin

または使用ユーザーを追加このように

adduser --system --no-create-home foo

その結果は次のとおりです。/etc/passwd

foo:x:110:65534::/home/foo:/usr/sbin/nologin

さらに、adduserグループは作成されません(ユーザー110はグループ65534、つまりグループに属します)。グループなし)。これ受け入れられた回答(G)UID関連のリスクについても言及したので必ず守ります。ユーザーを追加

出典:Raspberry Pi OSでテスト済み(Debian Busterベース)。

答え3

これユーザーを追加デフォルトでは、このコマンドはシステムユーザー用の/home/userディレクトリも作成しますが、使用することはできません。ユーザーが追加されました注文する。 useraddは、システムユーザーではなく、一般ユーザーのホームディレクトリのみを追加します。

答え4

システム管理者は、useraddを使用してadduserを使用して実行できるすべての操作を実行できます。 useraddを使用してシステムユーザー用の/home/userディレクトリを作成することはできませんが、/etc/skelに含まれるファイルを変更して/home/userディレクトリを作成できることに注意してください。 /etc/skelには、最初に新しいユーザーのホームディレクトリを埋めるために使用されたファイルセットが含まれています。

関連情報