Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
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グループに所属していることがわかります。
useradduseraddコマンドは、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関連の操作を実行できるようになります。
useraddコマンドはユーザーアカウントを作成するだけで、パスワードは設定しません。必ず sudo passwd ユーザー名 コマンドを実行してパスワードを設定してください。/etc/groupファイルをcatコマンドで表示するか、getent groupコマンドを使用すると、既存のグループ一覧を確認できます。usermodusermodコマンドは、既に存在するユーザーアカウントの属性を変更するために使用されます。ユーザー名、ホームディレクトリ、シェル、グループ、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オプションがポイントで、これがないと既存の追加グループが上書きされてしまいます。
usermod -Gを使ったら、以前所属していたグループから外れてしまった!usermod -Gは指定したグループにユーザーを所属させますが、同時に既存の追加グループはすべて解除されます。既存の追加グループを保持しつつ新しいグループを追加したい場合は、必ず -aGオプション を使用してください。sudo usermod -d /home/newuser -m newuser newuserのように、ホームディレクトリも合わせて変更することを検討してください。userdeluserdelコマンドは、Linuxシステムからユーザーアカウントを削除するために使用されます。ユーザーの削除は、セキュリティの観点からも、システムリソースの管理の観点からも重要な作業です。
userdel オプション| オプション | 説明 | 例 |
|---|---|---|
-r |
ユーザーのホームディレクトリとメールスプールも同時に削除します。 通常はこのオプションを使用します。 | userdel -r olduser |
例1:ユーザーアカウントのみを削除する(ホームディレクトリは残す)
sudo userdel olduser
意味: olduserというユーザーアカウントをシステムから削除します。ただし、このコマンドではホームディレクトリやメールスプールは削除されず、システム上に残ります。これは、将来的にそのユーザーのデータが必要になる可能性がある場合や、手動でクリーンアップしたい場合に選択されます。
例2:ユーザーアカウントと関連ファイルをすべて削除する
sudo userdel -r unuseduser
意味:
unuseduserというユーザーアカウントをシステムから完全に削除します。-rオプションを付けることで、/home/unuseduserのようなホームディレクトリや、/var/mail/unuseduserのようなメールスプールも同時に削除されます。ほとんどの場合、このオプションを使用するのが推奨されます。
-rオプションを付けずにuserdelを実行した場合、ホームディレクトリは削除されません。残っている場合は、sudo rm -rf /home/削除したユーザー名のように手動で削除する必要があります。ただし、rm -rfは非常に強力なコマンドなので、誤って必要なファイルを削除しないよう細心の注意を払ってください。
また、ユーザーを削除すると、そのユーザーが所有していたファイルやディレクトリは、所有者がUIDの数字で表示される「孤児ファイル」として残ることがあります。これらのファイルを見つけるには、sudo find / -uid <削除したユーザーのUID>コマンドが役立ちます。userdelはエラーを返すことがあります。
まず、whoコマンドやps -u ユーザー名(例: ps -u deleteduser)コマンドでユーザーのログイン状況や実行中のプロセスを確認します。
必要であれば、sudo skill -KILL -u ユーザー名やsudo pkill -u ユーザー名コマンドでそのユーザーのプロセスを強制終了させます。これは最終手段であり、データ損失のリスクがあるため、慎重に行ってください。
その後、再度userdelコマンドを実行します。この記事で解説したuseradd、usermod、userdelはLinuxシステムにおける基本的なユーザー管理コマンドですが、ディストリビューションによってはより高レベルなツールやスクリプトが提供されています。
adduserスクリプト: Debian/Ubuntu系のディストリビューションでは、useraddのラッパーとしてadduserスクリプトが提供されています。これは対話形式でユーザー作成をガイドし、よりユーザーフレンドリーな操作が可能です。※注意:コマンドの互換性とディストリビューション依存性
各コマンドやオプションの挙動は、Linuxディストリビューション(例: Ubuntu, CentOS,
Fedoraなど)やそのバージョンによって若干異なる場合があります。例えば、useraddで作成されるデフォルトのプライマリグループや、skeletonディレクトリ(新規ユーザーのホームディレクトリにコピーされるファイル群)の場所などは、ディストリビューションごとに違いが見られます。
常に最新かつ正確な情報を得るためには、ご自身のシステムでman コマンド名を実行するか、各ディストリビューションの公式ドキュメントを参照することをおすすめします。
Linuxのユーザー管理は、useradd での新規作成、usermod での柔軟な設定変更、そして userdel での安全な削除という一連のプロセスで成り立っています。それぞれのコマンドのオプションや注意点を理解し、適切な場面で使いこなすことで、Linuxシステムをセキュアかつ効率的に運用できるようになります。特に、-rオプションの有無による影響や、usermod -Gと-aGの違いなど、細かな点に注意を払うことが重要です。
この記事が、皆さまのLinuxユーザー管理の一助となれば幸いです。
ご覧いただきありがとうございました。