Linuxでユーザーアカウントを作成、変更、および削除する方法
ユーザーアカウント管理は、すべてのLinuxシステム管理者にとって基本的なタスクの一つです。この記事では、新しいユーザーアカウントを作成する方法、アカウントを変更する方法、そしてコマンドラインからuseradd、usermod、userdelユーティリティを使用してアカウントを削除する方法について学びます。これらのユーティリティは、基本システムの一部です。
このチュートリアルではあなたが学ぶことになります:
- /etc/login.defsファイルの用途は何ですか?
- useraddコマンドを使用してさまざまなオプションでユーザーアカウントを作成する方法
- usermod コマンドを使用してユーザーアカウントを変更する方法
- userdelコマンドを使用してユーザーアカウントを削除する方法
Linuxでユーザーアカウントを作成、変更、および削除する方法
使用されるソフトウェア要件と規約
デフォルト設定
ユーザーが作成されるときに適用されるデフォルト設定は、/etc/login.defsファイルで定義されています。例えば、Fedoraシステムのファイルを見てみると、実行時に専用のコマンドラインオプションで上書きできる設定が定義されていることがわかります。それらの定義のいくつかを見てみましょう:
| オプション | 意味 | デフォルト値 |
|---|---|---|
| ホームを作成する | 新しいユーザーのためにホームディレクトリを作成するべきかどうかを定義します。 | はい |
| 暗号化方式 | パスワードを暗号化するために使用される暗号化メソッド | SHA512 |
| UID_MIN | 標準ユーザーに自動的に割り当てられる最小uid値 | 1000 |
| UID_MAX | 標準ユーザーに自動的に割り当てられる最大 UID 値 | 60000 |
| SYS_UID_MIN | システムユーザーに自動的に割り当てられる最小UID値 | 201 |
| SYS_UID_MAX | システムユーザーに自動的に割り当てられる最大uid値 | 999 |
| パスの最大日数 | パスワードの使用可能な最大日数 | 99999 |
| 最小通過日数 | パスワード変更間の最小日数 | |
| パスワードの警告期間 | パスワードが期限切れになる前に通知される日数 | 7 |
上記のものは、/etc/login.defsファイルに定義されているオプションのごく一部ですが、一般的なアイデアを得るには十分です。
新しいユーザーを作成する
Linuxシステムで新しいユーザーアカウントを作成するには、useraddユーティリティを使用できます。その構文は次のとおりです:
useradd [options] LOGIN
ここでLOGINは作成されるログイン名です。たとえば、新しい「newuser」ユーザーのために新しいアカウントを作成したい場合、次のように実行します:
sudo useradd newuser
上記のコマンドはシステムに「newuser」アカウントを作成します。さらに、ユーザーのためにホームディレクトリが作成されます。これは、上記の表で見ると、CREATE_HOMEオプションがデフォルトではいに設定されているためです。新しいユーザーのためにホームディレクトリを明示的に作成するよう要求することも可能で、これはuseraddコマンドの-mオプション(--create-homeの略)を使用することで行えます。もし、ホームディレクトリの作成を避けたい場合は、-Mオプション(--no-create-homeの略)を使用するべきです。
ユーザー作成後、パスワードを設定する推奨方法は、passwd ユーティリティを使用することです。これは重要なステップであることを覚えておいてください!
ログインシェルの指定
新しいユーザーを作成する際に指定したいもう一つの一般的なことは、そのログインシェルです。これは、-sオプション(--shell)を使用し、シェルのバイナリのパスを引数として渡すことで行うことができます。このオプションが明示的に提供されない場合は、$SHELL変数によって指定されたシェルが使用されます(Fedoraでは/bin/bashです)。たとえば、新しいユーザーのログインシェルを明示的に宣言するには、次のように実行します:
sudo useradd -s /bin/bash newuser
ユーザーUIDを手動で指定してください
新しいユーザーが作成されると、デフォルトでは、/etc/login.defsファイルのUID_MINオプションで指定された値以上で、他のユーザーのuidより大きく、UID_MAXオプションで指定された値以下の最初に利用可能なuidが彼に割り当てられます。uidを手動で指定したい場合は、-u(--uid)オプションを使用し、使用したいuid値を引数として提供する必要があります(非負の値でなければなりません)。1005のuidを手動で割り当ててユーザーを作成するには、次のコマンドを実行します:
sudo useradd -u 1005 newuser
「システム」ユーザーを作成する
明示的に宣言されていない場合、useradd コマンドは「標準」ユーザー、つまり uid が 1000 以上のユーザーを作成します。代わりに「システム」ユーザー、つまり /etc/shadow ファイルにエイジング情報が宣言されていないユーザーを作成したい場合は、-r (--system) オプションを使用する必要があります。システムユーザーは通常デーモンやその他のアプリケーションによって使用されるため、ホームディレクトリは作成されません。彼らの uid は /etc/login.defs ファイルの SYS_UID_MIN および SYS_UID_MAX オプションによって定義された範囲内で選択されます。「システム」ユーザーを作成するためには、以下のようにコマンドを実行します:
sudo useradd -r newuser
新しいユーザーのために追加のグループを指定する
標準ユーザーが作成されると、デフォルトでそれに名付けられたグループが作成され、自動的にそのグループに含まれることになります:これがそのプライマリグループです。ユーザーが参加すべき追加のグループを指定したい場合は、-Gオプションを使用する必要があり、これは--groupsの短縮形であり、その引数としてカンマ区切りのグループのリストを提供します。たとえば、ユーザーをwheelグループに含めるには、それがsudoコマンドを使用できるようにするために、次のように実行します:
sudo useradd -G wheel newuser
usermodユーティリティを使用してユーザーアカウントを修正する
useradd ユーティリティを使用して新しいユーザーアカウントを作成する場合、名前が示すように usermod ユーティリティは既存のアカウントを変更するために使用されます。このコマンドで使用する構文は useradd と同じです:
usermod [options] LOGIN
ユーティリティの使用例を見てみましょう。
既存のユーザーを追加のグループに追加する
ユーザーを作成時に追加のグループに加える方法を見ましたが、useraddコマンドの-Gオプションを使用しました。ただし、ユーザーアカウントがすでに存在する場合、補助グループのメンバーにするには、usermodユーティリティを実行するときに同じオプションを使用し、-a(--append)オプションを併用し、グループのリストをその引数として提供する必要があります。
sudo usermod -G -a newgroup user
-aオプションは、-Gオプションと併用して専用に使用する必要があります。ただし、後者が単独で使用される場合には注意してください。指定されたグループは、ユーザーがすでに所属している補足グループのリストには追加されず、そのリストは完全に再定義されます。
ユーザーパスワードのロックとアンロック
時々、ユーザーのパスワードをロックしたい場合があります。そうすることで、そのパスワードを使用してのログインを不可能にします。そのような場合は、-Lオプション(--lockの省略形)を使用できます。
sudo usermod -L newuser
暗号化されたパスワードの前に!記号が置かれ、それが無効になります。
newuser:!$6$ISaqNDTydf51adbj$6ciHWBByfhe9k0sfg8Cky2F3HhgxdfMtmrWyq0323rvuCUu/un0d4rldwI0ELj4aSyFv0.cki3c/oLJFFNGyt/:18602:0:99999:7:::
反対の操作を行い、ユーザーのパスワードを解除するには、-U(--unlock)オプションを使用する必要があります。
sudo usermod -U newuser
ユーザーのUIDと初期グループのGIDを変更すること
既存のユーザーの uid を変更するには、usermod の -u オプションを使用し、新しい値を指定する必要があります。指定された uid は、もちろん、すでに使用されていないものでなければなりません。さもなければ、エラーが発生します:
sudo usermod -u 1000 newuser
usermod: UID '1000' already exists
既存のユーザーのUIDが変更されると、そのユーザーのホームディレクトリに含まれているすべてのファイルのユーザーIDもそれに応じて変更されます。ただし、ホームディレクトリのUIDが現在ユーザーに割り当てられているUIDとは異なる場合は、その限りではありません。
ユーザーの初期グループ(ユーザーと共に作成されるグループ:そのgidはユーザーのuidと同じ)のgid(グループID)を変更することも考えられます。この操作を実行するには、usermodを-gまたは--gidオプションで実行する必要があります。新しいグループは既に存在していなければなりません。
sudo usermod -g 1006 newuser
ユーザーの主要グループを変更すると、そのユーザーのホームディレクトリ内のファイルは、以前のグループが所有していたものでも、自動的に新しいグループが所有するように設定されます。
ユーザーのログイン名を変更する
ユーザーのログイン名を変更するには、usermodユーティリティの-l(--login)オプションを使用し、新しいログイン名を最初の引数として、現在のログイン名を2番目の引数として提供する必要があります。ログイン名を
“newuser”から“linuxconfig”に変更したいと仮定すると、次のコマンドを実行します:
sudo usermod -l linuxconfig newuser
上記のコマンドを実行すると、ユーザーのログイン名だけが変更され、他には何も変更されないことに注意してください。ユーザーのホームディレクトリは名前が変更されません。追加の変更を希望する場合は、次のセクションを確認してください。
ユーザーホームディレクトリを変更し、すべてのユーザーファイルを移動します。
ユーザーのホームディレクトリを変更する必要がある場合があります。そのタスクを達成するには、usermodユーティリティを-dオプション(--homeの短縮形)で実行し、新しいディレクトリのパスを指定します。現在のホームディレクトリに存在するすべてのファイルを移動したい場合は、-mオプション(--move-homeの短縮形)も提供する必要があります。新しいホームディレクトリは、現在のものが実際に存在する場合にのみ作成され、ファイルの所有権、モード、ACLおよび拡張属性は新しい設定に適応されますが、追加の手動変更が必要になる場合があります。newuserユーザーのディレクトリを、実際には/home/newuserから/home/newuser_newに変更し、すべてのファイルを移動するには、次のように実行します:
sudo usermod -d /home/newuser_new -m newuser
userdelユーティリティを使用してユーザーを削除する
ユーザーアカウントを作成および変更する方法の例を見ましたが、次にuserdelユーティリティを使用して、ユーザーアカウントと関連するすべてのファイルを削除する方法を見てみましょう。userdelユーティリティの構文は、以前に見たuseraddおよびusermodと同じです:
userdel [options] LOGIN
このユーティリティは、明らかな理由から useradd や usermod よりも選択肢が少ないです。最も一般的な使用例は、ユーザーアカウントをそのホームおよびスプールディレクトリ内のすべてのファイルとそのディレクトリ自体とともに削除することです。そのような作業を実行するには、userdel を -r (--remove)オプションを付けて実行します。たとえば、「newuser」アカウントとそのホームおよびスプールディレクトリを削除したい場合、次のコマンドを実行します:
sudo userdel -r newuser
ユーザーが現在ログインしている場合、エラーが発生し、システムは削除を拒否します。操作を強制したい場合は、-f(--force)オプションも使用する必要があります。警告してください!このオプションの使用は危険であり、システムが不整合な状態になる可能性があります。
結論
このチュートリアルでは、useradd、usermod、およびuserdelシステムユーティリティを使用して、ユーザーアカウントをそれぞれ作成、変更、削除する方法を見ました。いくつかの例とユースケースを確認しました。これらのユーティリティで使用できるすべてのオプションの完全な概要については、それらのマニュアルを参照してください。
