useradd
、usermod
、userdel
の3つの基本コマンドを詳しく解説します。- 新しいユーザーを作成する
useradd
コマンドの基本的な使い方 - 既存ユーザーの設定を変更する
usermod
コマンドの活用方法 - 不要なユーザーを安全に削除する
userdel
コマンドの注意点 - ユーザー情報が保存されるファイルの仕組み
- 実際の運用で役立つ「困ったときの対処法」
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
この例では、youruser
がsudo
グループと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
コマンドを実行します。
この記事で解説したuseradd
、usermod
、userdel
は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ユーザー管理の一助となれば幸いです。
ご覧いただきありがとうございました。