ユーザーを追加することは、任意のコンピュータシステム上の最も基本的な演習の一つです。
始める前に、私は心に留めておくために三つの基礎を言及したいと思います。 まず、ほとんどのオペレーティングシステムと同様に、Linuxユーザーはログインできるアカウントが必要です。 この記事では、LDAPなどのネットワークアカウントではなく、ローカルアカウントについて具体的に説明します。 第二に、アカウントには名前(ユーザー名と呼ばれる)と番号(ユーザー IDと呼ばれる)の両方があります。 第三に、ユーザーは通常、グループに配置されます。 グループには名前とグループIDもあります。
ご想像のとおり、Linuxにはユーザーを追加するためのコマンドラインユーティリティが含まれています。useraddと呼ばれています。 また、コマンドadduserを見つけることができます。 多くのディストリビューションでは、便宜上、このシンボリックリンクをuseraddコマンドに追加しています。p>
$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd
useraddを見てみましょう。
注:この記事で説明されているデフォルトは、Red Hat Enterprise Linux8.0のデフォルトを反映しています。 これらのファイルには微妙な違いがあり、他のLinuxディストリビューションやFreeBSDやSolarisなどの他のUnixオペレーティングシステムでは、特定のデフォル
デフォルトの動作
useraddの基本的な使い方は非常に簡単です:ユーザー名を提供するだけでユーザーを追加することができます。この例では、useraddコマンドはsonnyという名前のアカウントを作成します。 同じ名前のグループも作成され、sonnyがその中に配置されてプライマリグループとして使用されます。 Languageやshellなどの他のパラメータは、設定ファイル/etc/default/useraddおよび/etc/loginで設定されたデフォルトおよび値に従って適用されます。デフ… これは、一般的に、単一の個人用システムまたは小規模なワンサーバーのビジネス環境で十分です。上記の2つのファイルがuseraddの動作を制御しますが、ユーザー情報は/etcディレクトリにある他のファイルに保存されます。Th>
グループ名:未使用:gid:メンバー
カスタマイズ可能な動作
コマンドラインでは、ユーザーのID番号を指定するなど、管理者がより細かい制御デフォルトでは、useraddはユーザー ID(UID)とプライマリグループID(GID)に同じ番号を使用しようとしますが、保証はありません。 UIDとGIDを一致させる必要はありませんが、管理者がそれらを管理する方が簡単です。私は説明するシナリオだけを持っています。
私は別のアカウント、ティミーのために、この時間を追加したとします。 Sonnyとtimmyの2人のユーザーを比較すると、ユーザーとそれぞれのプライマリグループの両方がgetentコマンドを使用して作成されていることがわかります。残念ながら、ユーザーのUIDもプライマリGIDも一致しません。 これは、デフォルトの動作では、次の使用可能なUIDがユーザーに割り当てられ、プライマリグループに同じ番号を割り当てることが試行されるためです。 ただし、その番号が既に使用されている場合は、次の使用可能なGIDがグループに割り当てられます。 何が起こったのかを説明するために、私はGID1001のグループがすでに存在すると仮定し、確認するコマンドを入力します。P>
$ getent group 1001
book:x:1001:alan
ID1001のグループブックは、Gidが一つずつオフになっています。 これは、システム管理者がユーザー作成プロセスをより詳細に制御する必要がある例です。 この問題を解決するには、最初に一致する次の利用可能なユーザーとグループIDを決定する必要があります。 コマンドgetent groupとgetent passwdは、次の利用可能な番号を決定するのに役立ちます。 この数値は、-u引数で渡すことができます。
$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:
IDを指定するもう一つの正当な理由は、ネットワークファイルシステム(NFS)を使用してリモートシステム上のファイルにアクセ NFSは、すべてのクライアントシステムとサーバーシステムが特定のユーザーに対して同じIDを構成している場合に管理しやすくなります。 これについては、autofsを使用してNFS共有をマウントする方法についての記事でもう少し詳しく説明します。
より多くのカスタマイズ
非常に多くの場合、他のアカウントパラメータは、ユーザーのために指定する必要があります。 ここでは、使用する必要がある可能性のある最も一般的なカスタマイズの簡単な例を示します。
コメント
コメントオプションは、-c引数を使用して簡単な説明やその他の情報を提供するためのプレーンテキストフィールドです。
$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash
グループ
ユーザーには、1つのプライマリグループと複数のセカンダリグループを割り当てることができます。 -G引数には、プライマリグループの名前またはGIDを指定します。 指定されていない場合、useraddはユーザーの同じ名前でプライマリグループを作成します(上で示したように)。 -G(大文字)引数は、ユーザーが配置されるグループのカンマ区切りのリストを渡すために使用されます。p>
$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)
ホームディレクトリ
useraddのデフォルトの動作は、/homeにユーザーのホームディレクトリを作成することです。 ただし、ホームディレクトリのさまざまな側面は、次の引数で上書きできます。 -Bは、ユーザーホームを配置できる別のディレクトリを設定します。 たとえば、デフォルトの/homeの代わりに/home2とします。p>
$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash
-dを使用すると、ユーザーとは異なる名前のホームディレクトリを指定できます。
$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash
スケルトンディレクトリ
-kは、新しいユーザーの新しいホームディレクトリに、/etc/skelディレクトリ内の任意のファイルを これらは通常、シェル設定ファイルですが、システム管理者がすべての新しいユーザーが利用できるようにしたいものであれば何でもかまいません。
Shell
-s引数を使用してシェルを指定できます。 他に何も指定されていない場合は、デフォルトが使用されます。 たとえば、以下では、デフォルトの設定ファイルでshell bashが定義されていますが、Wallyはzshを要求しています。P>
$ grep SHELL /etc/default/useradd
SHELL=/bin/bash
$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh
セキュリティ
セキュリティはユーザー管理の不可欠な部分であるため、useraddコマンドで使用できるいくつかのオプションがあります。 ユーザーアカウントには、-e引数を使用して、YYYY-MM-DDの形式で有効期限を指定できます。
$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:
パスワードの有効期限が切れた場合、アカウントを自動的に無効にすることもできます。 -F引数は、パスワードの有効期限が切れてからアカウントが無効になるまでの日数を設定します。 ゼロは即時です。
$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::
実際の例
実際には、新しいユーザーアカウントを作成するときにこれらの引数のいくつかを使用することができます。 たとえば、Perryのアカウントを作成する必要がある場合は、次のコマンドを使用します。
$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry
各オプションを理解するには、上記のセクシ 結果を以下で確認します。
$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)
いくつかの最終的なアドバイス
useraddコマンドは、Unix(Linuxだけでなく)管理者にとっては”知っておくべき”コマンドです。 ユーザーの作成は初めて正しく取得したいものであるため、すべてのオプションを理解することが重要です。 これは、単一のシステムだけでなく、特に成長している組織で作業しているときに、企業全体のユーザー用に予約された専用のUID/GID範囲を含む、よく考えら