こんにちは!「リナックス先生」です。第2回で、Linuxのディレクトリ構造が一本の大きな木(ツリー)であることを学んだわね。
さて、ここからが本番よ。Linuxは「マルチユーザー」を前提としたOS。つまり、一つのシステムを大勢で使うのが当たり前なの。もし誰でも自由に他人のファイルを消せたり、OSの設定を書き換えられたりしたら、サーバーは一瞬で崩壊してしまうわ。それを防ぐための最強の仕組みが「パーミッション(権限)」よ。
先生!さっそく `/etc` の中のファイルを書き換えようとしたら、『Permission denied』って怒られちゃいました。Windowsなら『管理者として実行』が出るはずなのに、何もさせてくれないんです。これじゃ何も進まないですよ!
ふふ、それがLinuxの洗礼ね、コウ君。でもそれは、Linuxがあなたを「間違った操作」から守ってくれた証拠よ。今日は、どうすれば安全に権限を使い分けられるのか、そしてあの謎の記号 `rwxr-xr-x` の読み方を完璧にマスターしてもらうわよ!
WindowsユーザーのためのLinux最短学習カリキュラム(全8回)
- 第1回:マウスからの脱却!Linuxの基本思想と「黒い画面」の環境構築
- 第2回:もう迷子にならない!ディレクトリ構造の理解とファイル操作
- 【今回】第3回:Windowsにはない壁!「ユーザー権限」と「パーミッション」を攻略
- 第4回:エクスプローラーより100倍速い!ファイル検索とテキスト閲覧
- 第5回:メモ帳は捨てなさい!最強エディタ「Vim」サバイバルガイド
- 第6回:ソフトの追加とネットワークの基礎!Webサーバーを立ち上げよう
- 第7回:Linux最大の魔法!「パイプ」と「リダイレクト」でコマンドを繋ぐ
- 第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(閲覧用)」を基本に考えてね。
Linux教科書 LPICレベル1 Version5.0対応 (EXAMPRESS) [ 中島 能和 ] 価格:4180円 |
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」
技術スキルを活かす
「ITエンジニア転職」

コメント