Linuxユーザー管理の基本:useradd / usermod / userdel コマンド徹底解説
Linuxシステムを運用する上で、ユーザー管理はセキュリティと運用の両面から非常に重要なタスクです。この記事では、新しいユーザーアカウントの作成、既存ユーザーの設定変更、そして不要なユーザーアカウントの削除まで、一連のユーザー管理に必要な useraddusermoduserdel の3つの基本コマンドを詳しく解説します。
この記事でわかること
  • 新しいユーザーを作成するuseraddコマンドの基本的な使い方
  • 既存ユーザーの設定を変更するusermodコマンドの活用方法
  • 不要なユーザーを安全に削除するuserdelコマンドの注意点
  • ユーザー情報が保存されるファイルの仕組み
  • 実際の運用で役立つ「困ったときの対処法」

はじめに知っておきたいこと:Linuxユーザーの仕組み

Linuxでは、各ユーザーは一意のユーザーID (UID)グループID (GID) を持ちます。これらのIDは、ファイルやディレクトリへのアクセス権限を制御するために使用されます。ユーザー情報は主に以下のファイルに保存されています。

  • /etc/passwd: ユーザーアカウントの基本情報(ユーザー名、UID、GID、ホームディレクトリ、シェルなど)
  • /etc/shadow: ユーザーのパスワードハッシュ情報(セキュリティのため直接編集は推奨されません)
  • /etc/group: グループ情報と、各グループに所属するユーザー一覧

/etc/passwd ファイルの例:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
youruser:x:1000:1000:Your Name,,,:/home/youruser:/bin/bash

この例では、youruserはUIDが1000、GIDが1000、ホームディレクトリが/home/youruser、ログインシェルが/bin/bashであることを示しています。

/etc/group ファイルの例:

root:x:0:
sudo:x:27:youruser
youruser:x:1000:
docker:x:999:youruser

この例では、yourusersudoグループとdockerグループに所属していることがわかります。


新規ユーザーを追加する:useradd

useraddコマンドは、Linuxシステムに新しいユーザーアカウントを追加するために使用されます。このコマンドを実行すると、ユーザーのホームディレクトリ、シェル、グループ設定など、ユーザーアカウントに必要な情報が自動的に作成されます。

よく使う useradd オプション
オプション 説明
-m ホームディレクトリを作成します。 ユーザーの作業スペースとして必須です。 useradd -m newuser
-s <シェル> ユーザーのログインシェルを指定します。デフォルトは/bin/bashが一般的です。 useradd -m -s /bin/sh newuser
-g <グループ名> ユーザーのプライマリグループを指定します。 useradd -m -g users newuser
-G <グループ名>,<グループ名>... ユーザーを追加のグループに所属させます。 useradd -m -G sudo,developers newuser
-u <UID> ユーザーID (UID) を指定します。通常は自動で割り振られます。 useradd -m -u 1005 newuser
-c <コメント> ユーザーに関するコメント(氏名など)を追加します。 useradd -m -c "John Doe" newuser
コマンド例とその意味

例1:基本的なユーザー作成

sudo useradd -m testuser

意味: ホームディレクトリ (-m) を作成し、testuserという名前の新しいユーザーアカウントを追加します。このコマンドの後、必ずsudo passwd testuserでパスワードを設定してください。設定しないとログインできません。

例2:ログインを許可しないユーザーを作成

sudo useradd -m -s /usr/sbin/nologin guestuser

意味: ホームディレクトリを作成し、ログインシェルを/usr/sbin/nologin(ログインを許可しない)に設定したguestuserを追加します。/bin/falseも同様の目的で使われますが、/usr/sbin/nologinはログイン時に「このアカウントは現在利用できません。」のようなメッセージを表示します(パスはディストリビューションによって異なる場合があります)。これは、FTP専用ユーザーなど、シェルの操作をさせたくない場合に便利です。

例3:複数のグループに所属するユーザーを作成

sudo useradd -m -G sudo,docker developer

意味: developerというユーザーを作成し、デフォルトのプライマリグループに加えて、sudoグループとdockerグループにも所属させます。これにより、developerユーザーはsudoコマンドやDocker関連の操作を実行できるようになります。

困ったときの対処法
Q.
ユーザーを作成したのにログインできない!
A.
useraddコマンドはユーザーアカウントを作成するだけで、パスワードは設定しません。必ず sudo passwd ユーザー名 コマンドを実行してパスワードを設定してください。
Q.
既存のグループにユーザーを追加したいが、どのグループがあるかわからない!
A.
/etc/groupファイルをcatコマンドで表示するか、getent groupコマンドを使用すると、既存のグループ一覧を確認できます。

既存ユーザーを変更する:usermod

usermodコマンドは、既に存在するユーザーアカウントの属性を変更するために使用されます。ユーザー名、ホームディレクトリ、シェル、グループ、UIDなど、多岐にわたる設定を変更できます。

よく使う usermod オプション
オプション 説明
-l <新しいユーザー名> ユーザー名を変更します。 関連ファイルも変更される場合があります。 usermod -l newname oldname
-d <新しいホームディレクトリ> ホームディレクトリのパスを変更します。-mと併用して内容も移動できます。 usermod -d /home/newdir user1
-m -dと併用し、既存のホームディレクトリの内容を新しいパスに移動します。 usermod -d /home/newdir -m user1
-s <新しいシェル> ユーザーのログインシェルを変更します。 usermod -s /bin/zsh user1
-g <新しいプライマリグループ> ユーザーのプライマリグループを変更します。 usermod -g developers user1
-G <追加グループ>,<追加グループ>... ユーザーを追加のグループに所属させます(既存の追加グループは上書きされます)。 usermod -G sudo,docker user1
-aG <追加グループ>,<追加グループ>... ユーザーを既存の追加グループに追加します(既存の追加グループは保持されます)。 usermod -aG admin user1
-u <新しいUID> ユーザーID (UID) を変更します。注意が必要です。 usermod -u 10001 user1
コマンド例とその意味

例1:ユーザー名を変更する

sudo usermod -l newuser olduser

意味: olduserというユーザー名をnewuserに変更します。このコマンドはユーザー名だけでなく、関連するパスなども更新しようとしますが、ホームディレクトリの名前は自動的に変更されない場合があります。その場合は、別途sudo mv /home/olduser /home/newuserのように手動でホームディレクトリの名前も変更する必要があります。

例2:ホームディレクトリの場所と内容を変更する

sudo usermod -d /mnt/data/myuser -m myuser

意味: myuserのホームディレクトリを/home/myuserから/mnt/data/myuserに変更し、既存のホームディレクトリ内のファイルやディレクトリも新しい場所に移動 (-m) します。

例3:既存のグループに追加する

sudo usermod -aG webdev,databaseuser alice

意味: aliceユーザーを、既存の追加グループに加えてwebdevグループとdatabaseuserグループにも追加します。-aオプションがポイントで、これがないと既存の追加グループが上書きされてしまいます。

困ったときの対処法
Q.
usermod -Gを使ったら、以前所属していたグループから外れてしまった!
A.
usermod -Gは指定したグループにユーザーを所属させますが、同時に既存の追加グループはすべて解除されます。既存の追加グループを保持しつつ新しいグループを追加したい場合は、必ず -aGオプション を使用してください。
Q.
ユーザー名を変更したら、ログインできなくなった!
A.
ユーザー名を変更した場合、SSHの公開鍵認証など、古いユーザー名に依存する設定が残っているとログインできなくなることがあります。また、ホームディレクトリの名前が変更されていない可能性もあります。sudo usermod -d /home/newuser -m newuser newuserのように、ホームディレクトリも合わせて変更することを検討してください。

不要なユーザーを削除する:userdel

userdelコマンドは、Linuxシステムからユーザーアカウントを削除するために使用されます。ユーザーの削除は、セキュリティの観点からも、システムリソースの管理の観点からも重要な作業です。

よく使う userdel オプション
オプション 説明
-r ユーザーのホームディレクトリとメールスプールも同時に削除します。 通常はこのオプションを使用します。 userdel -r olduser
コマンド例とその意味

例1:ユーザーアカウントのみを削除する(ホームディレクトリは残す)

sudo userdel olduser

意味: olduserというユーザーアカウントをシステムから削除します。ただし、このコマンドではホームディレクトリやメールスプールは削除されず、システム上に残ります。これは、将来的にそのユーザーのデータが必要になる可能性がある場合や、手動でクリーンアップしたい場合に選択されます。

例2:ユーザーアカウントと関連ファイルをすべて削除する

sudo userdel -r unuseduser

意味: unuseduserというユーザーアカウントをシステムから完全に削除します。-rオプションを付けることで、/home/unuseduserのようなホームディレクトリや、/var/mail/unuseduserのようなメールスプールも同時に削除されます。ほとんどの場合、このオプションを使用するのが推奨されます。

困ったときの対処法
Q.
ユーザーを削除したのに、そのユーザーが使っていたファイルが残っている!
A.
-rオプションを付けずにuserdelを実行した場合、ホームディレクトリは削除されません。残っている場合は、sudo rm -rf /home/削除したユーザー名のように手動で削除する必要があります。ただし、rm -rfは非常に強力なコマンドなので、誤って必要なファイルを削除しないよう細心の注意を払ってください。 また、ユーザーを削除すると、そのユーザーが所有していたファイルやディレクトリは、所有者がUIDの数字で表示される「孤児ファイル」として残ることがあります。これらのファイルを見つけるには、sudo find / -uid <削除したユーザーのUID>コマンドが役立ちます。
Q.
削除しようとしたユーザーがログイン中、またはプロセスを実行中と表示される!
A.
削除しようとしているユーザーが現在ログインしている、またはそのユーザーが所有するプロセスが実行中の場合、userdelはエラーを返すことがあります。 まず、whoコマンドやps -u ユーザー名(例: ps -u deleteduser)コマンドでユーザーのログイン状況や実行中のプロセスを確認します。 必要であれば、sudo skill -KILL -u ユーザー名sudo pkill -u ユーザー名コマンドでそのユーザーのプロセスを強制終了させます。これは最終手段であり、データ損失のリスクがあるため、慎重に行ってください。 その後、再度userdelコマンドを実行します。

その他のユーザー管理方法と互換性について

この記事で解説したuseraddusermoduserdelはLinuxシステムにおける基本的なユーザー管理コマンドですが、ディストリビューションによってはより高レベルなツールやスクリプトが提供されています。

  • adduserスクリプト: Debian/Ubuntu系のディストリビューションでは、useraddのラッパーとしてadduserスクリプトが提供されています。これは対話形式でユーザー作成をガイドし、よりユーザーフレンドリーな操作が可能です。
  • GUIツール: 一部のLinuxデスクトップ環境では、グラフィカルなユーザー管理ツールが提供されており、コマンドラインに不慣れなユーザーでも直感的に操作できます。

※注意:コマンドの互換性とディストリビューション依存性

各コマンドやオプションの挙動は、Linuxディストリビューション(例: Ubuntu, CentOS, Fedoraなど)やそのバージョンによって若干異なる場合があります。例えば、useraddで作成されるデフォルトのプライマリグループや、skeletonディレクトリ(新規ユーザーのホームディレクトリにコピーされるファイル群)の場所などは、ディストリビューションごとに違いが見られます。

常に最新かつ正確な情報を得るためには、ご自身のシステムでman コマンド名を実行するか、各ディストリビューションの公式ドキュメントを参照することをおすすめします。


まとめ

Linuxのユーザー管理は、useradd での新規作成、usermod での柔軟な設定変更、そして userdel での安全な削除という一連のプロセスで成り立っています。それぞれのコマンドのオプションや注意点を理解し、適切な場面で使いこなすことで、Linuxシステムをセキュアかつ効率的に運用できるようになります。特に、-rオプションの有無による影響や、usermod -G-aGの違いなど、細かな点に注意を払うことが重要です。

この記事が、皆さまのLinuxユーザー管理の一助となれば幸いです。
ご覧いただきありがとうございました。

私たちは、お客さまが私たちのウェブサイトをどのように使用するのかを理解し、お客さまの体験を改善するために Cookie を使用しています。 閲覧を続けると Cookie の使用に同意したことになります。
拒否した場合、このウェブサイトにアクセスしてもお客さまの情報は追跡されません。 情報を追跡しない設定を記憶するために、ウェブブラウザで 1 つだけ Cookie が使用されます。