ユーザーの追加は、どのコンピューターシステムでも最も基本的な演習の1つです。この記事では、Linuxシステムでそれを行う方法に焦点を当てています。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
始める前に、覚えておくべき3つの基本事項について説明したいと思います。まず、ほとんどのオペレーティングシステムと同様に、Linuxユーザーはログインできるようにアカウントが必要です。この記事では、LDAPなどのネットワークアカウントではなく、ローカルアカウントについて具体的に説明します。次に、アカウントには名前(ユーザー名と呼ばれる)と番号(ユーザーIDと呼ばれる)の両方があります。第三に、ユーザーは通常、グループに配置されます。グループには名前とグループIDもあります。
ご想像のとおり、Linuxにはユーザーを追加するためのコマンドラインユーティリティが含まれています。 useraddと呼ばれます 。 adduserコマンドもあります。 。多くのディストリビューションがこのシンボリックリンクをuseraddに追加しています 便宜上のコマンド。
$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd
useraddを見てみましょう 。
注:この記事で説明されているデフォルトは、Red Hat EnterpriseLinux8.0のデフォルトを反映しています。これらのファイルには微妙な違いがあり、他のLinuxディストリビューションやFreeBSDやSolarisなどの他のUnixオペレーティングシステムでは特定のデフォルトがあります。
useraddの基本的な使用法 非常にシンプルです。ユーザー名を入力するだけでユーザーを追加できます。
$ sudo useradd sonny
この例では、 useradd コマンドはsonnyというアカウントを作成します 。同じ名前のグループも作成され、 sonny プライマリグループとして使用するためにその中に配置されます。言語やシェルなど、構成ファイルで設定されたデフォルトと値に従って適用される他のパラメーターがあります / etc / default / useradd および/etc/login.defs 。これは通常、単一の個人用システムまたは小規模な1台のサーバーのビジネス環境には十分です。
上記の2つのファイルは、 useraddの動作を管理します。 、ユーザー情報は / etcにある他のファイルに保存されます この記事全体で参照するディレクトリ。
フィールド(太字-useraddで設定) | ||
---|---|---|
passwd | ユーザーアカウントの詳細を保存します | ユーザー名 :unused: uid : gid :コメント :ホームディレクトリ :シェル |
ユーザーアカウントのセキュリティの詳細を保存します | ユーザー名 :password:lastchange:minimum:maximum:warn:非アクティブ :期限切れ :未使用 | |
グループの詳細を保存します | グループ名 :unused: gid :メンバー |
コマンドラインを使用すると、ユーザーのID番号を指定するなど、管理者がより細かく制御する必要がある場合にカスタマイズできます。
デフォルトでは、 useradd ユーザーID(UID)と1次グループID(GID)に同じ番号を使用しようとしますが、保証はありません。 UIDとGIDが一致している必要はありませんが、管理者が一致している場合は管理が簡単です。
説明するシナリオがあります。今度はTimmy用に別のアカウントを追加するとします。 2人のユーザーを比較すると、 sonny およびtimmy は、ユーザーとそれぞれのプライマリグループの両方が getentを使用して作成されたことを示しています コマンド。
$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash
$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:
残念ながら、ユーザーのUIDもプライマリGIDも一致しません。これは、デフォルトの動作では、次に使用可能なUIDをユーザーに割り当ててから、同じ番号をプライマリグループに割り当てようとするためです。ただし、その番号がすでに使用されている場合は、次に使用可能なGIDがグループに割り当てられます。何が起こったのかを説明するために、GID 1001のグループがすでに存在していると仮定し、確認するコマンドを入力します。
$ getent group 1001
book:x:1001:alan
グループ本 ID 1001 GIDが1つずれています。これは、システム管理者がユーザー作成プロセスをより詳細に制御する必要がある場合の例です。この問題を解決するには、最初に、次に使用可能なユーザーとグループIDが一致するかどうかを判断する必要があります。コマンドgetentgroup およびgetentpasswd 次に利用可能な番号を決定するのに役立ちます。この番号は、 -uで渡すことができます 引数。
$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:
IDを指定するもう1つの理由は、ネットワークファイルシステム(NFS)を使用してリモートシステム上のファイルにアクセスするユーザー向けです。すべてのクライアントシステムとサーバーシステムで特定のユーザーに同じIDが構成されていると、NFSの管理が容易になります。これについては、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 (大文字)引数は、ユーザーが配置されるグループのコンマ区切りリストを渡すために使用されます。これらは二次グループとして知られています。
$ 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 ユーザーホームを配置できる別のディレクトリを設定します。例: / home2 デフォルトの/homeの代わりに 。
$ 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内のファイルを入力するように指示します ディレクトリ。これらは通常、シェル構成ファイルですが、システム管理者がすべての新規ユーザーが利用できるようにしたいものであれば何でもかまいません。
-s 引数を使用してシェルを指定できます。他に何も指定されていない場合は、デフォルトが使用されます。たとえば、次の場合、シェルの bash はデフォルトの構成ファイルで定義されていますが、Wallyは zshを要求しました 。
$ 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範囲を含むよく考えられた命名規則を持つことを意味します。