はじめに
この実験では、Linux システムにおける基本的なユーザーアカウント管理操作について解説します。ユーザーアカウントの作成、変更、削除の方法に加え、パスワードの設定や変更方法についても学びます。これらは Linux システム管理における不可欠なスキルです。Linux が初めての方でも、ステップバイステップで説明しますので、安心して進めてください。
新規ユーザーの作成
まずは、「joker」という名前の新しいユーザーアカウントを作成することから始めましょう。
- ターミナルを開きます。Linux において、ターミナルはコマンドを入力するためのテキストインターフェースです。
- 以下のコマンドを入力して、Enter キーを押します。
sudo useradd joker
このコマンドの内容を詳しく見てみましょう。
sudoは、一時的にスーパーユーザー(管理者)権限を付与するコマンドです。新しいユーザーの作成には高い権限が必要なため、これを使用します。useraddは、新しいユーザーを作成するためのコマンドです。jokerは、作成するユーザー名です。
注意:sudo を付けずにこのコマンドを実行しようとすると、「permission denied(許可がありません)」というエラーが表示されます。これは、一般ユーザーには新しいアカウントを作成する権限がなく、システム管理者専用のタスクであるためです。
これは、スーパーユーザーと一般ユーザーの違いを明確に示しています。一般ユーザーとして新しいアカウントを作成することはできませんが、sudo を使用することで、管理タスクを実行するために一時的に権限を昇格させることができます。
- ユーザーが正しく作成されたか確認するために、
/etc/passwdファイルを調べます。
sudo grep -w 'joker' /etc/passwd
/etc/passwd ファイルは、ユーザーアカウントの電話帳のようなものです。各行が 1 つのユーザーアカウントを表し、コロン(:)で区切られたさまざまな情報が含まれています。
以下のような出力が表示されるはずです。
joker:x:5001:5001::/home/joker:/bin/sh
この行の意味は以下の通りです。
- ユーザー名:joker
- パスワード:x(実際のパスワードは別の安全な場所に保存されています)
- ユーザーID:5001
- グループ ID:5001
- ホームディレクトリ:
/home/joker(ただし、まだ作成はされていません) - デフォルトシェル:
/bin/sh
ホームディレクトリ付きのユーザー作成
次に、「bob」という名前の別のユーザーを作成し、同時にホームディレクトリも作成してみましょう。
- 以下のコマンドを実行します。
sudo useradd -m bob
-m オプションは、ユーザーのためにホームディレクトリを作成するようシステムに指示します。ホームディレクトリは、ユーザーが自分のファイルや設定を保存できる個人用フォルダのようなものです。
- ホームディレクトリが作成されたか確認しましょう。
sudo ls -ld /home/bob
以下のような出力が表示されるはずです。
drwxr-x--- 2 bob bob 57 Jan 19 13:33 /home/bob
この出力の見方は以下の通りです。
- 先頭の
dは、それがディレクトリであることを示します。 rwxr-x---は、このディレクトリに対して誰が読み取り、書き込み、実行ができるかを示します。- 2 つの
bobという表記は、このディレクトリの所有ユーザーと所有グループがどちらも bob であることを示します。 57はディレクトリのサイズ(バイト単位)です。Jan 19 13:33はディレクトリが作成された日時です。/home/bobはディレクトリの場所です。
ユーザーパスワードの設定
作成した新しいユーザーにパスワードを設定する必要があります。ここでは「joker」のパスワードを設定しましょう。
- 以下のコマンドを実行します。
sudo passwd joker
- 新しいパスワードを 2 回入力するよう求められます。この実験では、「password123」のような簡単なパスワードを使用してください。
重要: 入力中、パスワードは画面に表示されません。これは、入力しているパスワードを他人に盗み見られないようにするための Linux のセキュリティ機能です。誤って入力した場合は、やり直すことができます。 重要: このパスワードを忘れないでください!後のステップで使用します。
- 成功すると、「passwd: password updated successfully」というメッセージが表示されます。
注意:実際の運用環境では、常に強力でユニークなパスワードを使用するようにしてください。
舞台裏では、Linux は暗号化されたパスワードを /etc/shadow という安全なファイルに保存しています。これは、誰でも閲覧できる /etc/passwd ファイルに保存するよりもはるかに安全です。
ユーザー属性の変更
Linux では、作成後のユーザーアカウントに対してさまざまな設定を変更できます。例として、joker のホームディレクトリを変更してみましょう。
- 以下のコマンドを実行します。
sudo usermod -d /home/wayne joker
このコマンドの動作は以下の通りです。
usermodは、ユーザーアカウントの設定を変更するためのコマンドです。-d /home/wayneは、新しいホームディレクトリを指定しています。jokerは、変更対象のユーザーです。
- 変更を確認します。
sudo grep -w 'joker' /etc/passwd
-w は単語全体に一致させるためのオプションで、grep はファイル内から特定の文字列を検索するために使用します。出力結果で、joker のホームディレクトリが更新されていることが確認できるはずです。
ユーザーシェルの変更
もう一つの重要な設定項目は、ユーザーのデフォルトシェルです。シェルは、ターミナルに入力したコマンドを解釈して実行するプログラムのことです。
デフォルトでは、ユーザー「joker」は /bin/sh をシェルとして使用しています。sh(Bourne Shell)はほとんどの Unix 系システムに存在する基本的なシェルですが、bash(Bourne Again Shell)の方が機能が豊富で、一般的にユーザーフレンドリーです。
joker のシェルを bash に変更すると、以下のような利点があります。
- より直感的なコマンドラインインターフェース
- 強化されたスクリプト機能
- ユーザー環境のカスタマイズオプションの充実
変更手順は以下の通りです。
- joker のデフォルトシェルを bash に変更します。
sudo usermod -s /bin/bash joker
- 変更を確認します。
sudo grep -w 'joker' /etc/passwd
joker の項目の末尾に /bin/bash と表示されているはずです。これで、bash が joker のデフォルトシェルになりました。
この変更により、joker がログインしたり新しいターミナルセッションを開いたりするたびに、より多機能な bash 環境を利用できるようになります。
ユーザーのグループへの追加
Linux では、ユーザーを整理し権限を管理するために「グループ」を使用します。重要なグループの一つに sudo グループがあります。このグループに属するユーザーには管理権限が与えられます。例として、joker を sudo グループに追加してみましょう。
なぜユーザーを sudo グループに追加するのでしょうか?
- システム管理:sudo グループのユーザーは、システム全体に関わる管理タスクを実行できます。
- ソフトウェアのインストール:ソフトウェアパッケージのインストールや更新が可能です。
- 設定の変更:システム設定ファイルを変更できます。
- ユーザー管理:他のユーザーアカウントの作成、変更、削除が可能です。
「常に 'sudo' コマンドを使えるなら、なぜわざわざグループに追加するのか?」と疑問に思うかもしれません。理由は以下の通りです。
- 利便性:sudo グループのユーザーは、root(最高管理者)のパスワードを知らなくても、自分のパスワードを使って sudo を利用できます。
- きめ細かな制御:システム管理者は、特定のユーザーに対して特定のコマンドのみを特権実行できるように sudo を設定できます。
- 責任の明確化:root パスワードを共有するのとは異なり、sudo は「誰がどのコマンドを実行したか」をログに記録するため、セキュリティと追跡可能性が向上します。
- セキュリティ:複数の管理者に root パスワードを教えるよりも、個別の個人アカウントに sudo 権限を与える方が一般的に安全です。
実務において、以下のような場合にユーザーを sudo グループに追加するのが一般的です。
- 定期的なメンテナンス作業を行うシステム管理者や IT スタッフ。
- 業務のために特定のソフトウェアのインストールやシステム変更が必要な開発者。
- 特定のタスクで昇格した権限が必要だが、root パスワードを教えたくないパワーユーザー。
ユーザーを sudo グループに追加することは、そのユーザーにシステムに対する大きな権限を与えることを意味します。そのため、慎重に、かつ必要な場合にのみ行うようにしてください。
それでは、joker を sudo グループに追加しましょう。
- 以下のコマンドを実行します。
sudo usermod -aG sudo joker
このコマンドの動作は以下の通りです。
usermodは、ユーザーアカウントを変更するコマンドです。-aGは「append to Group(グループに追加)」を意味し、既存のグループから脱退させることなく新しいグループに追加します。sudoは、追加先のグループ名です。jokerは、変更対象のユーザーです。
- 変更を確認します。
groups joker
joker の所属グループの中に sudo が含まれているはずです。
- この変更の効果を確認するために、joker ユーザーに切り替えて、sudo 権限が必要なコマンドを試してみましょう。
su - joker
このコマンドは、現在のユーザー(labex)から joker ユーザーに切り替えます。joker のパスワードを求められるので、先ほど設定したパスワード(password123)を入力してください。入力中、画面には何も表示されませんが、これはセキュリティ上の仕様です。
- joker としてログインしたら、通常は root 権限が必要なファイルを表示してみます。
sudo cat /etc/shadow
再度パスワードを求められたら、joker のパスワードを入力してください。通常は root しかアクセスできない /etc/shadow ファイルの内容が表示されるはずです。これで、joker が sudo 権限を持っていることが確認できました。
- 確認が終わったら、
exitと入力して元のユーザーアカウント(labex)に戻ります。
注意:本番環境では、誰を sudo グループに追加するかについて非常に慎重になる必要があります。「大きな力には大きな責任が伴う」ことを忘れないでください。
ユーザーアカウントのロックとロック解除
アカウントを削除せずに、一時的に無効化したい場合があります。
- joker アカウントをロックします。
sudo passwd -l joker
-l オプションはパスワードをロック(lock)します。
- joker ユーザーへの切り替えを試みます。
su - joker
パスワードを求められます。先ほど設定したパスワード("password123")を入力してください。
「authentication failure(認証失敗)」というメッセージが表示されるはずです。これはアカウントが正常にロックされていることを意味します。
- 次に、アカウントのロックを解除します。
sudo passwd -u joker
-u オプションはパスワードのロックを解除(unlock)します。
- 再度、joker ユーザーへの切り替えを試みます。
su - joker
パスワードを入力します。今度は正常に joker ユーザーに切り替えられるはずです。
次のステップに進む前に、exit と入力して元のユーザーアカウントに戻ってください。
ユーザーの削除
最後に、ユーザーの削除方法を学びましょう。先ほど作成した「bob」ユーザーを削除します。
- bob とそのホームディレクトリを削除します。
sudo userdel -r bob
userdel コマンドはユーザーアカウントを削除します。-r オプションを付けると、ユーザーのホームディレクトリとメールスプールも一緒に削除されます。
- ユーザーが削除されたことを確認します。
sudo grep -w 'bob' /etc/passwd
sudo ls -ld /home/bob
どちらのコマンドも結果を返さないはずです。これは、ユーザーとそのホームディレクトリが正常に削除されたことを示しています。
まとめ
お疲れ様でした!Linux ユーザーアカウント管理の実験を完了しました。この実験では以下の内容を学習しました。
- 新しいユーザーアカウントの作成
- ユーザーパスワードの設定
- ホームディレクトリやデフォルトシェルなどのユーザー属性の変更
- ユーザーのグループへの追加
- ユーザーアカウントのロックとロック解除
- ユーザーアカウントの削除
また、/etc/passwd ファイル、ホームディレクトリ、シェル、ユーザーグループといった Linux の重要な概念についても触れました。これらは Linux システム管理における基礎となるスキルです。実際の現場では、組織のセキュリティポリシーに従って適切にユーザー管理を行うことを常に心がけてください。



