WindowsユーザーのためのLinux入門 第3回:最強の守護神「パーミッション」とrootユーザーの真実

こんにちは!「リナックス先生」です。第2回で、Linuxのディレクトリ構造が一本の大きな木(ツリー)であることを学んだわね。

さて、ここからが本番よ。Linuxは「マルチユーザー」を前提としたOS。つまり、一つのシステムを大勢で使うのが当たり前なの。もし誰でも自由に他人のファイルを消せたり、OSの設定を書き換えられたりしたら、サーバーは一瞬で崩壊してしまうわ。それを防ぐための最強の仕組みが「パーミッション(権限)」よ。

コウ君

先生!さっそく `/etc` の中のファイルを書き換えようとしたら、『Permission denied』って怒られちゃいました。Windowsなら『管理者として実行』が出るはずなのに、何もさせてくれないんです。これじゃ何も進まないですよ!

リナックス先生

ふふ、それがLinuxの洗礼ね、コウ君。でもそれは、Linuxがあなたを「間違った操作」から守ってくれた証拠よ。今日は、どうすれば安全に権限を使い分けられるのか、そしてあの謎の記号 `rwxr-xr-x` の読み方を完璧にマスターしてもらうわよ!

WindowsユーザーのためのLinux最短学習カリキュラム(全8回)

  1. 第1回:マウスからの脱却!Linuxの基本思想と「黒い画面」の環境構築
  2. 第2回:もう迷子にならない!ディレクトリ構造の理解とファイル操作
  3. 【今回】第3回:Windowsにはない壁!「ユーザー権限」と「パーミッション」を攻略
  4. 第4回:エクスプローラーより100倍速い!ファイル検索とテキスト閲覧
  5. 第5回:メモ帳は捨てなさい!最強エディタ「Vim」サバイバルガイド
  6. 第6回:ソフトの追加とネットワークの基礎!Webサーバーを立ち上げよう
  7. 第7回:Linux最大の魔法!「パイプ」と「リダイレクト」でコマンドを繋ぐ
  8. 第8回:手作業からの卒業!「シェルスクリプト」でサーバー構築を全自動化

1. Linuxの階層社会:一般ユーザーと全能の神「root」

① 概念と背景(Why)

Windowsでは、自分のPCを自分一人で使うのが一般的だから、あまりユーザーの区別を意識しないわよね。でも、Linuxサーバーの現場では「Webサーバーを動かす専用ユーザー」「データベースを管理する専用ユーザー」「新人エンジニアのコウ君」といった具合に、役割ごとにユーザーを細かく分けるの。

そして、そのピラミッドの頂点に君臨するのが「root(ルート)」ユーザーよ。rootは文字通り、システムの「全能の神」。どんなファイルでも見られるし、どんな設定でも変えられる。Windowsの「Administrator」以上に強力で、システムそのものを消去するコマンドだって、rootなら躊躇なく実行できてしまう。だからこそ、普段は「一般ユーザー」という制限された身分で作業し、本当に必要な時だけrootの力を借りる、というのがLinuxの絶対的なルールなのよ。この「最小権限の原則」が、ハッキング被害や操作ミスによる致命的なダメージを最小限に抑えてくれるの。

② 実践手順と完全なコード(How)

まずは、今の自分が「神(root)」なのか「人間(一般ユーザー)」なのかを確認する術を覚えましょう。第1回でも少し触れたけれど、今回は「表示の変化」にも注目してね。

# 1. 自分が誰かを確認
whoami

# 2. ユーザーIDなどの詳細を確認
id

# 3. プロンプトの最後を確認してみて
# 一般ユーザーなら「$」、rootユーザーなら「#」になっているはずよ
[kou@localhost ~]$   # ← これは一般ユーザー
[root@localhost ~]#  # ← これはrootユーザー

③ プロによるコードの「1行・1オプション」徹底解説

  • whoami:現在の実行ユーザー名を表示するわ。
  • id:ユーザーの背番号(UID)や所属グループ(GID)を表示するコマンドよ。Linux内部では名前よりもこの「数字」で誰かを判別しているの。
  • $(ドル記号):標準的なプロンプト。あなたは今、安全な「制限されたユーザー」としてログインしていることを示しているわ。
  • #(シャープ):**【警告】**これは、あなたが全能の権限を持っているという印。一文字の間違いがサーバーの死に直結する、緊張感のある状態よ。

④ 現場のリアル(失敗談とノウハウ)

現場で一番やっちゃいけないのが「rootでログインしたまま放置すること」よ。ちょっと席を立った隙に、誰かがキーボードを触って大変なことになる……なんていうのはドラマの話じゃないわ。プロは作業が終わったらすぐに `exit` コマンドでrootから抜けるか、そもそも直接rootでログインすることを禁止(PermitRootLogin no)設定にするの。コウ君も、黒い画面の右端が「#」になっていたら、常に背筋を伸ばして作業する癖をつけてね!


2. 暗号を解読せよ!rwx(パーミッション)の読み方と計算

① 概念と背景(Why)

第2回で `ls -l` を打った時、左側に `-rw-r–r–` みたいな謎の文字列が出てきたのを覚えてる?これがLinuxの「パーミッション」という暗号よ。Windowsのエクスプローラーだと「右クリック→プロパティ→セキュリティ」と辿って見る複雑な権限設定が、Linuxではたった10文字で表現されているの。

この10文字を読み解けるようになると、そのファイルが「誰に対して」「何を許可しているのか」が一瞬で判断できるようになるわ。これはエンジニア同士の会話でも「そのファイルの権限、ナナゴーゴー(755)に変えといて」みたいに数字でやり取りされるほど重要な共通言語。この暗号を解読するスキルは、Linuxを使う上での「九九」のようなものね。一度覚えてしまえば、一生使える武器になるわよ。

② 実践手順と完全なコード(How)

まずは `ls -l` の結果をどう分解するか見てみましょう。10文字を「1 + 3 + 3 + 3」に分けるのがコツよ。

# 例:-rwxr-xr--
# 最初の 1文字:ファイル種別( - はファイル、 d はディレクトリ)
# 次の 3文字:所有者(自分)の権限
# 次の 3文字:グループ(仲間)の権限
# 最後の 3文字:その他(他人)の権限

# シェルスクリプト作成の準備。実行権限(x)が付いているか確認してみよう
ls -l hello.sh
記号 名称 意味(ファイルの場合) 意味(ディレクトリの場合) 数値
r Read 中身を読める 中の一覧を見れる(lsできる) 4
w Write 中身を書き換えられる 中のファイルを作ったり消したりできる 2
x Execute プログラムとして実行できる そのディレクトリに「入れる」(cdできる) 1

③ プロによるコードの「1行・1オプション」徹底解説

  • rwx:4+2+1 = 7(読み・書き・実行すべてOK)。
  • r-x:4+0+1 = 5(読みと実行はOK、書き換えはダメ)。
  • r–:4+0+0 = 4(読むだけOK、あとは全部ダメ)。
  • 数字での表現:例えば `rwxr-xr-x` なら、所有者=7、グループ=5、他人=5 なので「755」と呼ぶわ。

④ 現場のリアル(失敗談とノウハウ)

新人がよくやる「究極のダメ設定」が **『777(rwxrwxrwx)』** よ。何かが動かない時、よく分からずに `chmod 777` と打って「よし、動いた!」と喜ぶのは、プロから見れば自分の家のドアをすべて取り払って「誰でも入っていいよ!」と言っているのと同じ。セキュリティ事故の元よ!現場では「必要最小限の権限」をいかに設定するかが腕の見せ所。まずは「755(実行用)」か「644(閲覧用)」を基本に考えてね。

PR

3. 権限を操る三種の神器:chmod, chown, sudo

① 概念と背景(Why)

「権限が足りない」と分かった時、どうやって解決するか。これには3つのアプローチがあるわ。
1. **ファイルのルールを変える**(`chmod`):ドアに鍵をかけるか、開けるか決める。
2. **ファイルの持ち主を変える**(`chown`):家の名義を変更する。
3. **一時的に神(root)になる**(`sudo`):警察官にバッジを借りて捜査するようなもの。
これらを使いこなすことで、システムを壊さずに安全にメンテナンスができるようになるの。特に `sudo` は、現代のLinux運用において最も頻繁に使う超重要コマンドよ。Windowsでいう「許可が必要です」のダイアログに応答する感覚ね。

② 実践手順と完全なコード(How)

実際にコマンドを打って、権限を操作してみましょう。

# 1. ファイルに「実行権限」を与える
# スクリプトを実行可能にする時によく使うわ
chmod +x hello.sh

# 2. ファイルの持ち主を変更する(root権限が必要)
sudo chown kou:kou test.txt

# 3. 管理者としてコマンドを実行する
# 設定ファイルを編集する時などは必ずこれをつけるわ
sudo vi /etc/hosts

③ プロによるコードの「1行・1オプション」徹底解説

  • chmod +x:現在の権限に「実行権限(x)」を追加する、という便利な書き方よ。数字で指定するなら `chmod 755` と同じような効果ね。
  • chown kou:kou:ファイルの「所有ユーザー」と「所有グループ」を両方 `kou` に変えるわ。コロンで区切って指定するのがプロの書き方。
  • sudo:”superuser do” の略。コマンドの先頭に付けるだけで、そのコマンドだけを「管理者として」実行できるわ。パスワードを求められたら、**rootのパスワードではなく「自分自身のパスワード」**を打つのよ。ここ、Windowsユーザーがよく間違えるポイントね!

④ 現場のリアル(失敗談とノウハウ)

「ディレクトリの権限をまとめて変えたい!」と思って `sudo chmod -R 777 /` とか打ったら最後、システムが二度と立ち上がらなくなるわ(絶対にやらないでね!)。`-R`(Recursive:再帰的)オプションは、指定したフォルダの中身すべてに適用する魔法だけど、扱いを間違えると核兵器級の破壊力になる。プロは `-R` を使う前、必ず `ls -R` で対象を確認する慎重さを持っているわ。コウ君も、`sudo` を使う時は「今から自分は抜刀するんだ」という覚悟を持ってEnterを押してちょうだい!


4. 現場の流儀:なぜ「常にroot」で作業してはいけないのか?

① 概念と背景(Why)

ここまで読んで、「最初から最後まで root で作業すれば、いちいち `sudo` とか言われなくて楽じゃない?」と思ったかしら?もしそう思ったら、それは超危険な思考よ!

人間は必ずミスをする生き物。rootで作業している時に `rm -rf /`(全消去)というタイポ(打ち間違い)をしたら、システムは一瞬で消滅し、バックアップがない限り復旧は不可能。でも一般ユーザーなら「権限がありません」というエラーで止まってくれる。この「守り」があるからこそ、私たちは安心して作業ができるの。現場では、どんなベテランエンジニアでも 99% の作業は一般ユーザーで行うわ。rootになるのは、本当に設定ファイルを書き換える数秒間だけ。この「自制心」こそが、一流と三流を分ける決定的な差なのよ。

② 実践手順と完全なコード(How)

安全な作業のサイクルを身につけましょう。これがエンジニアの「ルーティン」よ。

# 1. まずは一般ユーザーでログイン

# 2. 権限が必要な時だけ sudo を使う
sudo systemctl restart nginx

# 3. もし多くの操作が必要なら、一時的に権限を昇格
sudo -i

# (ここで必要な作業を終わらせる)

# 4. 終わったら速攻で一般ユーザーに戻る
exit

③ プロによるコードの「1行・1オプション」徹底解説

  • sudo -i:ログインシェルとしてrootの環境に切り替えるコマンドよ。環境変数などもrootのものになるから、複雑なメンテナンスの時に使うわ。
  • exit:現在のシェルを終了するわ。rootから抜ける時は、まるで重い鎧を脱ぐような解放感があるはずよ。

④ 現場のリアル(失敗談とノウハウ)

新人が `sudo` のパスワード入力を面倒くさがって、`/etc/sudoers`(sudoの設定ファイル)を書き換えて「パスワードなしで何でもできるようにした!」なんて自慢げに話してきたら、私ならその場で厳重注意するわね。それは利便性と引き換えに、サーバーの鍵を道路に捨てたのと同じよ。また、`sudo` の履歴はすべて `/var/log/secure`(またはauth.log)に残るわ。誰がいつ、どんな「神の力」を使ったか、チーム全員に見られている。この透明性が、組織としてのセキュリティを高めているの。エンジニアは技術だけでなく、「信頼」を操作しているという自覚を持ってね!

コウ君

先生、パーミッションの暗号、やっと読めるようになりました!4-2-1で計算するんですね。`sudo` を使う時のドキドキ感、大切にします。でも先生、ファイルの中身を見たり探したりするの、もっと速くやる方法はないんですか?

リナックス先生

いい質問ね!次回は、エクスプローラーの検索機能なんて比べ物にならないくらい強力な**『ファイル検索とテキスト閲覧』**のテクニックを教えるわ。`grep` や `find` をマスターすれば、数万行のログからお目当ての一行を1秒で見つけ出せるようになるわよ。楽しみにしててね!

▼ サーバー構築・開発を学ぶならVPSで ▼

エンジニア必須の環境
「おすすめVPS」

VPSランキングを見る

技術スキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント