Ubuntuのadduser
コマンドとuseradd
コマンドの違いは何ですか?
useradd
は、システムでコンパイルされたネイティブバイナリです。ただし、adduser
は、バックエンドでuseradd
バイナリを使用するPerlスクリプトです。
adduser
は、そのバックエンドuseradd
よりもユーザーフレンドリーでインタラクティブです。提供される機能に違いはありません。
コマンドラインから新しいユーザーを作成するときは、常にadduser
(およびユーザーの削除時にはdeluser
)を使用します。 (特に移植性を目指している場合は、スクリプトを作成する場合、代わりに低レベルのユーティリティを使用することをお勧めします。また、adduser
/deluser
はすべてのディストリビューション(SuSEなど)で使用できない場合があります。 )
useradd
、userdel
、およびusermod
コマンドは、歴史的な理由で存在する低レベルのユーティリティであり、adduser/deluser
Do The Right Thing™です。 (user*
はアルファベットのadduser/deluser
の後に来るため、「悪い」と考えることでどちらを使用するかを覚えています。)
それぞれのマンページによると(Ubuntu 12.04 Precise Pangolin、つまりDebian派生システム上)。
adduser
のマンページによると:(エンファシスが追加されました。)
adduser
およびaddgroup
は、/etc/adduser.conf
のコマンドラインオプションと構成情報に従って、ユーザーとグループをシステムに追加します。 これらは、デフォルトでuseradd
、groupadd
およびusermod
プログラムなどの低レベルツールのフレンドリフロントエンドです、 Debianポリシー準拠のUIDとGIDの値を選択し、スケルトン構成でホームディレクトリを作成し、カスタムスクリプトを実行し、その他の機能を実行します。adduser
およびaddgroup
は、5つのモードのいずれかで実行できます。
useradd
のマンページによると:
useradd
は、ユーザーを追加するための低レベルのユーティリティです。 Debianでは、管理者は通常adduser(8)
を代わりに使用する必要があります。
参照: 「adduser」と「useradd」の違いは何ですか? (スーパーユーザー)
adduser
:完全なプロファイルと情報(パス、クォータ、許可など)を持つユーザーを追加します
useradd
:名前のみのユーザーを追加します(名前のみの一時ユーザーを追加する場合、その他の情報は不要です)
Useraddが望ましい特定のシナリオにつながる別のいくつかの違い。
Ubuntu 14.4を含むいくつかの新しいディストリビューションでは、adduserはパスワードや「gecos」(fingerコマンドのデータ)などの情報を要求します。これは、スクリプトからの呼び出しにはあまり適さない可能性があることを意味します(クレジット:すでにWernightのコメントで言及されています)。
プロンプトは、null引数を渡すことで抑制できます。
adduser --disabled-password --gecos "" USER
useradd
を使用すると、-G
オプションを使用して、複数の追加グループを渡してユーザーを追加できます。 adduser
では、追加するグループごとにコマンドを1回呼び出す必要があるようです。
adduser
は、アカウントのホームフォルダーやその他の設定(ログイン時のシステム統計や通知の自動読み込みなど)をセットアップするという点で使いやすく、useradd
はユーザーを作成するだけです。
基本的な違いは、「adduser」がホームディレクトリを作成し、そのディレクトリにスケルトンファイルを追加することです。「useradd」はホームディレクトリとスケルトンファイルを作成しません。
Adding user `try' ...
Adding new group `try' (1001) ...
Adding new user `try' (1001) with group `try' ...
Creating home directory `/home/try' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for try
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
# ll /home/
total 20
drwxr-xr-x 5 root root 4096 Oct 26 15:52 ./
drwxr-xr-x 22 root root 4096 Oct 26 15:47 ../
drwx------ 8 ashishk ashishk 4096 Oct 26 15:50 ashishk/
drwxr-xr-x 3 root root 4096 Oct 14 13:02 .ecryptfs/
drwxr-xr-x 2 try try 4096 Oct 26 15:52 try/
root@chef-workstation:/home/ashishk#
また、adduser
には-M
オプションが常にあるとは限らず、 具体的に言う の--system
フラグも尊重しないことも指摘します。
Useraddは、/ etc/login.defsのデフォルト設定(CREATE_HOME)に関係なく、そのようなユーザーのホームディレクトリを作成しないことに注意してください。システムアカウントのホームディレクトリを作成する場合は、-mオプションを指定する必要があります。
システムユーザーを作成しようとしている場合ホームディレクトリなしでuseradd --system -M
を使用します。