「adduser」と「useradd」の違いは何ですか?

「adduser」と「useradd」の違いは何ですか?

疑問に思うのは、Debian Linux に、名前も機能も非常によく似たこれら 2 つのコマンドが存在するのはなぜでしょうか。これは私にとって常に混乱を招いていました。

  • どれかが他より優れているのでしょうか?
  • なぜ一つに統合されないのでしょうか?
  • それらの間には何か大きな違いがありますか?
  • どちらを使用すればよいですか? それともユースケースによって異なりますか?

答え1

useraddシステムでコンパイルされたネイティブバイナリです。ただし、バックエンドではバイナリadduserを使用する Perl スクリプトです。useradd

adduserバックエンドよりもユーザーフレンドリーでインタラクティブですuseradd。提供される機能に違いはありません。

答え2

主な利点はユーザーを追加する以上ユーザー追加システムレベルのユーザーを扱っています。ユーザーを追加するシステムレベルのユーザーアカウントが作成されると、システムユーザーのホームにユーザーディレクトリが作成されます。ユーザー追加自動的には行われません。マニュアルを読むと、システム レベルのユーザーと関連するホーム ディレクトリが自動的に行われることを除いて、基本的に同じであることがわかります。ユーザーを追加するシステムレベルのユーザーに対して、/home/userディレクトリを自動的に作成します。ユーザー追加ただし、-mオプション。私が目にした他の文献では、UIDとGUIDは、Debianの標準に準拠して割り当てられていると一般的に述べられています。ユーザーを追加する

答え3

私が確認したいくつかの Redhat インスタンス (2011 年の 4.9 と 2017 年の 6.9) では、adduser は Perl スクリプトではなく、単に useradd のエイリアスでした。Redhat 6.9 では次のようになります。

$ ls -la /usr/sbin/useradd /usr/sbin/adduser
lrwxrwxrwx. 1 root root      7 Nov  2  2016 /usr/sbin/adduser -> useradd
-rwxr-x---. 1 root root 111320 Feb  9  2016 /usr/sbin/useradd

useradd が「正しい」プログラムであると私が覚えている方法は、ユーザーの追加は CRUD スペクトルの 1 つの操作に過ぎないということです。また、「変更」と「削除」の操作も必要です (「読み取り」はおそらく /etc/passwd の表示でカバーされます)。そのため、プログラムの名前は次のようになります。ユーザー*(それぞれuseradd、usermod、userdel)。代替案としては*ユーザー命名規則 (adduser、moduser、deluser -- これらは存在しません) も機能する可能性があります。ただし、これは少し扱いに​​くいものになります (現時点では明確に説明できない理由によります :)

答え4

raspian 内では (他の OS については確認する必要があります)、「adduser USER」はダイアログ (TUI) を開始しますが、「useradd USER」は開始しません。

どうやら、adduser を使用すると、ダイアログが表示されると、完全な 'useradd' コマンドがすでに実行されています。CTRL-C を押しても、ユーザーはそこにいます。

新しいシステムでは「個人」グループが作成されるため、新しく作成されたユーザーを削除するには、次の手順を実行する必要があります。

  • vi /etc/passwd
  • vi /etc/グループ
  • rm -rf /home/ユーザー

adduser は useradd を「使用」するため、残りはユーザーに関するメタデータであると考えられます。したがって、技術的には「skel」、「ファイル マスク」など、つまりシステムのデフォルトには変更はありません。

一方、useradd は TUI を表示しないため、スクリプトではより便利かもしれません。

正直に言うと、私がこの質問を踏みつけた理由は、rasbian でのみテストしたからです。

他の OS では adduser の異なるバージョンが実装される可能性があると考えられます。

関連情報