はじめに
Linux は複数のユーザーが同時に作業できるマルチユーザーオペレーティングシステムです。異なるユーザーアカウント間を移動する方法を理解することは、システム管理者や Linux ユーザーにとって基本的なスキルです。この実験では、su(ユーザー切り替え)コマンドを使用して Linux でのユーザー切り替えについて紹介します。
この実験では、新しいユーザーを作成する方法、ユーザー間を切り替える方法、異なるユーザーとして操作を実行する方法、および元のユーザーアカウントに戻る方法を学びます。これらのスキルは、システム管理タスク、セキュリティ対策、および Linux 環境でのユーザー権限の理解に不可欠です。
Linux ユーザーの理解と新しいユーザーの作成
Linux では、各ユーザーには特定の権限とホームディレクトリを持つ独自のアカウントがあります。ユーザー間を切り替える前に、2 つ目のユーザーアカウントを作成する必要があります。
新しいユーザーの作成
adduser コマンドを使用して、apprentice という名前の新しいユーザーを作成しましょう。このコマンドには管理者権限が必要なので、sudo を使用して権限を昇格させて実行します。
sudo adduser apprentice
このコマンドを実行すると、新しいユーザーのパスワードを設定するように求められ、いくつかのオプション情報を入力することも求められます。この実験では、パスワードを password123 に設定し、オプション情報のフィールドは Enter キーを押してスキップしましょう。
Adding user `apprentice' ...
Adding new group `apprentice' (1001) ...
Adding new user `apprentice' (1001) with group `apprentice' ...
Creating home directory `/home/apprentice' ...
Copying files from `/etc/skel' ...
New password: password123
Retype new password: password123
passwd: password updated successfully
Changing the user information for apprentice
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
sudo 権限の付与
次に、apprentice ユーザーに sudo 権限を付与して、管理者タスクを実行できるようにしましょう。
sudo usermod -aG sudo apprentice
このコマンドは、apprentice ユーザーを sudo グループに追加します。コマンドが正常に実行されると、何も出力されません。
ユーザーの存在確認
新しいユーザーが正常に作成されたことを確認するために、/home ディレクトリの内容を一覧表示できます。
ls -l /home
apprentice ユーザーのディレクトリが表示されるはずです。
total 8
drwxr-xr-x 5 apprentice apprentice 4096 Oct 15 12:34 apprentice
drwxr-xr-x 5 labex labex 4096 Oct 15 12:00 labex
また、/etc/passwd ファイルを表示することで、システム内のユーザーの一覧を確認することもできます。
grep apprentice /etc/passwd
これにより、apprentice ユーザーに関する情報が表示されるはずです。
apprentice:x:1001:1001:,,,:/home/apprentice:/bin/bash
su コマンドでユーザーを切り替える
これで apprentice ユーザーを作成したので、su コマンドを使ってこのユーザーに切り替える方法を学びましょう。
su コマンドの理解
su(ユーザー切り替え)コマンドを使うと、ログインセッション中に別のユーザーアカウントに切り替えることができます。su コマンドの一般的な使い方は 2 つあります。
su username- 指定したユーザーに切り替えますが、現在の環境変数は保持します。su - username- 指定したユーザーに切り替え、そのユーザーの環境も読み込みます。
ハイフン (-) を付けた 2 番目のオプションを使うのが一般的に推奨されます。これにより完全な環境切り替えが行われ、実際にそのユーザーとしてログインしているような感覚になります。
apprentice ユーザーに切り替える
完全な環境切り替えを伴って apprentice ユーザーに切り替えましょう。
su - apprentice
apprentice ユーザーのパスワードを求められます。ユーザー作成時に設定したパスワード (password123) を入力します。
Password: password123
認証に成功すると、コマンドプロンプトが変わり、現在 apprentice ユーザーとしてログインしていることがわかります。プロンプトは次のようになるかもしれません。
apprentice@ubuntu:~$
ユーザー切り替えの確認
現在 apprentice ユーザーとして操作していることを確認するには、whoami コマンドを実行します。
whoami
出力は次のようになるはずです。
apprentice
また、pwd コマンドで現在の作業ディレクトリを確認することもできます。
pwd
出力は、現在 apprentice ユーザーのホームディレクトリにいることを示すはずです。
/home/apprentice
apprentice ユーザーとしてファイルを作成する
これで apprentice ユーザーとしてログインしたので、いくつかのファイルを作成して、このセッションで行われるアクションが apprentice ユーザーの権限で実行されることを示しましょう。
ディレクトリの作成
まず、apprentice ユーザーのホームディレクトリにプロジェクトディレクトリを作成しましょう。
mkdir -p ~/project
-p フラグは、ディレクトリが既に存在する場合にコマンドがエラーを出さないようにします。コマンドが正常に実行されると、何も出力されません。
テキストファイルの作成
次に、プロジェクトディレクトリにテキストファイルを作成しましょう。
echo "This is my first file as the apprentice user." > ~/project/apprentice-journal.txt
このコマンドを実行するときには何も出力されませんが、指定された内容のファイルが作成されます。
ファイル内容の表示
先ほど作成したファイルの内容を確認しましょう。
cat ~/project/apprentice-journal.txt
出力は次のようになるはずです。
This is my first file as the apprentice user.
ファイルの所有者確認
ファイルが apprentice ユーザーによって所有されていることも確認できます。
ls -l ~/project/apprentice-journal.txt
出力は次のようになるはずです。
-rw-rw-r-- 1 apprentice apprentice 44 Oct 15 13:45 /home/apprentice/project/apprentice-journal.txt
ファイルのユーザー所有者とグループ所有者がどちらも apprentice に設定されていることに注意してください。これにより、ファイルが apprentice ユーザーの権限で作成されたことが確認できます。
元のユーザーに切り戻す
apprentice ユーザーとしてのタスクを完了したら、元のユーザーアカウントに切り替える時です。一時的に別のユーザーとしてアクションを実行し、その後にメインのアカウントに戻る場合、これは一般的な操作です。
apprentice ユーザーセッションを終了する
元のユーザーセッションに戻るには、単に exit と入力するか、Ctrl+D を押します。
exit
コマンドプロンプトが元のユーザーのプロンプトに戻っているのが見えるはずです。これは次のようになるかもしれません。
labex@ubuntu:~/project$
ユーザー切り替えの確認
元のユーザーアカウントに正常に切り替えたことを確認するには、whoami コマンドを実行します。
whoami
出力は次のようになるはずです。
labex
他のユーザーが作成したファイルへのアクセス
元のユーザーに切り替えたとしても、適切な権限があれば、apprentice ユーザーが作成したファイルにアクセスすることができます。
cat /home/apprentice/project/apprentice-journal.txt
出力にはファイルの内容が表示されるはずです。
This is my first file as the apprentice user.
ユーザーコンテキストの比較
これでユーザー間の切り替えを体験したので、ホームディレクトリのパスを確認することで、ユーザーコンテキストの違いを示しましょう。
echo "My home directory is: $HOME"
出力には元のユーザーのホームディレクトリが表示されるはずです。
My home directory is: /home/labex
もし apprentice ユーザーに切り替えて同じコマンドを実行すると、出力は異なります。
su - apprentice ## (今はこれを実行しないでください、説明用です)
echo "My home directory is: $HOME" ## 表示される内容: My home directory is: /home/apprentice
これは、- オプション付きの su コマンドが、$HOME のような環境変数を含むユーザー環境を完全に切り替えることを示しています。
まとめ
この実験では、重要な Linux ユーザー管理スキルを学びました。
adduserコマンドを使用して新しいユーザーアカウントを作成するusermodコマンドを使用してユーザーに sudo 権限を付与するsuコマンドを使用してユーザー間を切り替える- 別のユーザーとしてファイルを作成する
whoamiなどのコマンドでユーザーコンテキストを確認し、環境変数をチェックするexitコマンドを使用して元のユーザーに切り替える
これらのスキルは、Linux システム管理やマルチユーザー環境での日常の操作において基本的なものです。ユーザーの切り替えにより、管理者は異なる権限レベルでタスクを実行でき、root アカウントの常時使用を避けることで適切なセキュリティ対策を維持できます。
Linux のユーザー管理を理解することで、以下のことができます。
- 適切なユーザー権限を使用してシステムのセキュリティを維持する
- 権限関連の問題をトラブルシューティングする
- 異なるユーザーの視点からアプリケーションや設定をテストする
- マルチユーザーシステムを効果的に管理する
Linux の学習を続けるにつれて、これらのスキルはより高度なシステム管理タスクの基礎となります。



