1. システムでの自分は誰? コマンド whoami
Linuxの各ユーザーは特定のアカウントで操作しており、そのアカウントには独自の権限、制限、およびグループ所属があります。この講義では、どのアカウントで操作しているか、どのような権限を持っているか、どのグループに属しているかを確認する方法を学びます。現行ユーザーのパラメータを知ることは、日常業務、セキュリティ、管理、デバッグの際に重要です。
Linuxシステムを操作する際、現在どのアカウントで作業しているのかを知ることは便利です。例えば、誤ってrootユーザーなどの権限の高いアカウントでシステムに入っていると、システムファイルに致命的な変更を加えてしまう可能性があります。こうした状況を避けるために、whoamiコマンドがあります。
構文
whoami
このコマンドの動作は?
whoamiコマンドは、システムで作業している現在のユーザー名を出力します。このコマンドは、「今の自分は誰?」という重要な質問に答えます。
例
$ whoami
student
この場合、出力されたstudentは、ユーザーがstudentという名前のアカウントでシステムにログインしていることを示しています。もし、権限の高いユーザー(例えばroot)のアカウントで作業していた場合、出力は以下のようになります:
$ whoami
root
なぜこれが重要なのか?
例えば、あるディレクトリのすべてのファイルを削除するコマンド(例: rm -rf /important_directory)を使用している状況を想像してみてください。通常のユーザーアカウントでは、適切な権限がない場合、システムが制限をかけてくれます。しかしrootユーザーであれば、システムはためらいもなくコマンドを実行します。whoamiコマンドは、このような厄介な状況を回避するのに役立ちます。
2. ユーザー情報の詳細確認: コマンド id
自分のユーザー名を知るのは良いけど、システム内での権限や特権について深く理解するにはそれだけじゃ足りないよね。そこで、もっと詳細な情報を得るためにidコマンドが存在する。
構文
id [ユーザー名]
もしユーザー名を指定しない場合、コマンドidは現在のユーザーの情報を表示するよ。他のユーザーの名前を指定すれば、そのアカウントの詳細を確認することも可能。
コマンド id が表示するものは?
- UID (User ID) — ユーザーのユニークな識別子。
- GID (Group ID) — ユーザーのメイングループのユニークな識別子。
- グループリスト — ユーザーが所属している全てのグループ(メイングループを含む)。
例
$ id
uid=1001(student) gid=1001(student) グループ=1001(student),27(sudo),1002(developers)
- UID=1001: これが現在のユーザー(student)のユニークな識別子だよ。Linuxシステムでは、ユーザー
rootのUIDは常に0だ。 - GID=1001: これがユーザー(student)のメイングループの識別子。
- グループ=1001(student), 27(sudo), 1002(developers): ここには、ユーザーが所属している追加のグループが一覧表示されている。例えば、
sudoグループに所属していることで、studentは特権ユーザーとしてコマンドを実行できる。
もし他のユーザーに対してコマンドを実行した場合:
$ id user2
uid=1002(user2) gid=1002(user2) グループ=1002(user2),1001(developers)
ユーザーuser2がdevelopersグループに所属していることがわかる。
3. 実務でのUIDとGIDの使用
各ユーザーとグループには、独自の数値識別子 (それぞれUIDとGID) が割り当てられています。これらはシステム内で非常に重要な役割を果たし、しばしばユーザー名やグループ名の代わりに使われます。それってどういう意味?
- 一部のシステムプロセスは効率性のために直接数値識別子を使用します。
- ファイルやフォルダへのアクセス権は、ユーザー名やグループ名ではなく、それらのUIDとGIDで決まります。
- 設定ファイルやログ (例えば、
/etc/passwd) では、ユーザー名ではなくUIDが記載されていることがあります。
4. groupsでグループを調査する
さらに、現在のユーザーが属しているグループを知るためにgroupsコマンドを使用できます。
構文
groups [ユーザー名]
ユーザー名を省略すると、現在のアカウントのグループ一覧が表示されます。ユーザー名を指定すると、そのユーザーに関連するグループがわかります。
例:
$ groups
student developers sudo
$ groups user2
user2 developers
5. コマンドの使用
さて、学んだことを固定するために少し練習してみよう。
現在のアカウント確認
- ターミナルを開く。
次のコマンドを実行する:
whoami自分のユーザー名を確認する。
sudo suコマンドを実行する(パスワードを求められるので入力する)、その後再びwhoamiを実行し、自分がどのアカウントで作業しているかを確認する。
ユーザー情報の確認
次のコマンドを実行する:
id自分のユーザーUID、GID、および所属しているグループを確認する。
新しいユーザーを追加する(
sudoコマンドを使う権限がある場合):sudo adduser testuserその後、次を実行する:
id testuser
グループ所属の分析
次を実行する:
groups自分のユーザーがどのグループに属しているか注意する。
現在のユーザーを新しいグループに追加する:
sudo groupadd testgroup sudo usermod -aG testgroup $(whoami)結果を確認する:
groups
6. よくあるミスと注意ポイント
初心者は
whoamiとidをよく混同しちゃう。覚えておいてね:whoamiは現在のユーザー名だけを表示するけど、idはもっと詳しく権限やグループの情報を教えてくれる。もし管理者権限(
sudoへのアクセス)を持っていなければ、ユーザーをグループに追加したり設定を変更したりできない場合があるよ。その場合はシステム管理者に相談してみて。存在しないユーザーを指定して
idコマンドを実行するとエラーが出るよ:$ id nonexistinguser id: ‘nonexistinguser’: no such user
これで、どのユーザーが現在アクティブで、どんな権限やアクセスを持っているかを確認する方法がわかったよね。whoamiとidはシンプルに見えるけど、Linuxでのユーザーとアクセス権限のシステムを理解する上でとても重要な役割を果たすんだ。実際の作業で、問題の診断や権限の確認、ユーザー設定のためにこれらをよく使うことになるよ。
GO TO FULL VERSION