どうしてですか:Debian Linuxには、非常によく似た名前と機能を持つこれら2つのコマンドがあるのはなぜですか?これはいつも私を混乱させてきました。
useradd
は、システムでコンパイルされたネイティブバイナリです。ただし、adduser
は、バックエンドでuseradd
バイナリを使用するPerlスクリプトです。
adduser
は、そのバックエンドuseradd
よりもユーザーフレンドリーでインタラクティブです。提供される機能に違いはありません。
seruserよりもadduserの主な利点は、システムレベルのユーザーを扱うことです。 adduserを使用すると、システムレベルのユーザーアカウントが作成されると、システムユーザーのホームディレクトリにseraddが自動的に配置されなくなります。男を読むと、システムレベルのユーザーと関連するホームディレクトリを除いて、基本的に同じです。 adduser-mオプションで指定されている場合を除き、seraddにプロビジョニングがないシステムレベルのユーザーに対して/ home/userディレクトリを自動的に作成します。私が遭遇した他の読みは、UIDとGUIDがadduserの受け入れられた準拠Debian標準によって割り当てられていると述べています。
私がチェックしたいくつかの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を表示することでカバーされます)。したがって、プログラムの名前はser *(それぞれuseradd、usermod、userdel)になります。別の* user命名規則(adduser、moduser、deluser-これらは存在しない)も機能すると思います。しかし、少し厄介です(現時点では明確に表現できない理由があります)。
ラスピアン(他のOSを確認する必要があります)内では、「adduser USER」がダイアログ(TUI)を起動しますが、「useradd USER」は起動しません。
どうやら、adduserを使用して、ダイアログが表示されると、完全な「useradd」コマンドがすでに実行されています。 CTRL-Cを押しても、ユーザーはそこにいます。
新しいシステムと同様に、彼らは「個人」グループを作成します。新しく作成されたユーザーを削除するには、次のことを行う必要があります。
Adduserはuseraddを「使用」するため、残りはユーザーに関するメタデータであると思います。したがって、技術的には「スケル」、「ファイルマスク」など、つまりシステムデフォルトの変更はありません。
反対に、useraddはTUIを起動しないため、スクリプトで使用すると便利です。
正直に言って、私がrasbianでのみテストしました。それが私が質問をした理由です。
他のOSが異なるバージョンのadduserを実装していると想像できます。