はじめに
この実験では、Linux システムにおける基本的なユーザーアカウント管理操作について解説します。ユーザーアカウントの作成、変更、削除の方法に加え、パスワードの設定や変更方法についても学びます。これらは Linux システム管理における不可欠なスキルです。Linux が初めての方でも、ステップバイステップで説明しますので、安心して進めてください。
この実験では、Linux システムにおける基本的なユーザーアカウント管理操作について解説します。ユーザーアカウントの作成、変更、削除の方法に加え、パスワードの設定や変更方法についても学びます。これらは Linux システム管理における不可欠なスキルです。Linux が初めての方でも、ステップバイステップで説明しますので、安心して進めてください。
まずは、「joker」という名前の新しいユーザーアカウントを作成することから始めましょう。
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
この行の意味は以下の通りです。
/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--- は、このディレクトリに対して誰が読み取り、書き込み、実行ができるかを示します。bob という表記は、このディレクトリの所有ユーザーと所有グループがどちらも bob であることを示します。57 はディレクトリのサイズ(バイト単位)です。Jan 19 13:33 はディレクトリが作成された日時です。/home/bob はディレクトリの場所です。作成した新しいユーザーにパスワードを設定する必要があります。ここでは「joker」のパスワードを設定しましょう。
sudo passwd joker
重要: 入力中、パスワードは画面に表示されません。これは、入力しているパスワードを他人に盗み見られないようにするための Linux のセキュリティ機能です。誤って入力した場合は、やり直すことができます。
重要: このパスワードを忘れないでください!後のステップで使用します。
注意:実際の運用環境では、常に強力でユニークなパスワードを使用するようにしてください。
舞台裏では、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 に変更すると、以下のような利点があります。
変更手順は以下の通りです。
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 グループに追加することは、そのユーザーにシステムに対する大きな権限を与えることを意味します。そのため、慎重に、かつ必要な場合にのみ行うようにしてください。
それでは、joker を sudo グループに追加しましょう。
sudo usermod -aG sudo joker
このコマンドの動作は以下の通りです。
usermod は、ユーザーアカウントを変更するコマンドです。-aG は「append to Group(グループに追加)」を意味し、既存のグループから脱退させることなく新しいグループに追加します。sudo は、追加先のグループ名です。joker は、変更対象のユーザーです。groups joker
joker の所属グループの中に sudo が含まれているはずです。
su - joker
このコマンドは、現在のユーザー(labex)から joker ユーザーに切り替えます。joker のパスワードを求められるので、先ほど設定したパスワード(password123)を入力してください。入力中、画面には何も表示されませんが、これはセキュリティ上の仕様です。
sudo cat /etc/shadow
再度パスワードを求められたら、joker のパスワードを入力してください。通常は root しかアクセスできない /etc/shadow ファイルの内容が表示されるはずです。これで、joker が sudo 権限を持っていることが確認できました。
exit と入力して元のユーザーアカウント(labex)に戻ります。注意:本番環境では、誰を sudo グループに追加するかについて非常に慎重になる必要があります。「大きな力には大きな責任が伴う」ことを忘れないでください。
アカウントを削除せずに、一時的に無効化したい場合があります。
sudo passwd -l joker
-l オプションはパスワードをロック(lock)します。
su - joker
パスワードを求められます。先ほど設定したパスワード("password123")を入力してください。
「authentication failure(認証失敗)」というメッセージが表示されるはずです。これはアカウントが正常にロックされていることを意味します。
sudo passwd -u joker
-u オプションはパスワードのロックを解除(unlock)します。
su - joker
パスワードを入力します。今度は正常に joker ユーザーに切り替えられるはずです。
次のステップに進む前に、exit と入力して元のユーザーアカウントに戻ってください。
最後に、ユーザーの削除方法を学びましょう。先ほど作成した「bob」ユーザーを削除します。
sudo userdel -r bob
userdel コマンドはユーザーアカウントを削除します。-r オプションを付けると、ユーザーのホームディレクトリとメールスプールも一緒に削除されます。
sudo grep -w 'bob' /etc/passwd
sudo ls -ld /home/bob
どちらのコマンドも結果を返さないはずです。これは、ユーザーとそのホームディレクトリが正常に削除されたことを示しています。
お疲れ様でした!Linux ユーザーアカウント管理の実験を完了しました。この実験では以下の内容を学習しました。
また、/etc/passwd ファイル、ホームディレクトリ、シェル、ユーザーグループといった Linux の重要な概念についても触れました。これらは Linux システム管理における基礎となるスキルです。実際の現場では、組織のセキュリティポリシーに従って適切にユーザー管理を行うことを常に心がけてください。