🎓 レベル:基礎 | 重要度:A(必須)
📎 前提:第2章 Linux運用の基礎 目次 | 関連:プロセスとサービス管理(systemd)・パッケージとユーザー・SSH
要点(BLUF)
- シェルは「コマンドを組み合わせる接着剤」。小さな道具を**パイプ(
|)でつなぎ、入出力をリダイレクト(><)**で付け替える。これがUNIXの組み合わせ哲学。 - ファイル権限は rwx(読み・書き・実行)× 3者(所有者・グループ・その他)。
chmod 644のような数値表現で一発設定する。 - 運用事故の典型は「権限の付けすぎ」。
777は全員に全権限=危険。最小権限が原則。
概念 ── シェルは道具をつなぐ接着剤
Linux のコマンドは「1つのことをうまくやる」小さな道具の集まりです。シェルはそれらをつなげて大きな仕事にします。鍵は3つ。
- パイプ
|:左の出力を右の入力へ流す。ログを出す → 絞り込む → 数えるを一行で。 - リダイレクト
>>><:出力をファイルへ、ファイルを入力へ付け替える。 - 標準入出力:すべてのコマンドは「標準入力から読み、標準出力へ書く」のが基本。だからつなげる。
# 例:アクセスログから 500 エラーだけ数える(道具を3つつなぐ)
cat access.log | grep " 500 " | wc -l
# ↑出す ↑絞る ↑数える
# 出力をファイルへ保存(追記は >>)
grep " 500 " access.log > errors.txt
仕組み ── ファイル権限の読み方
ls -l の左端が権限です。読めれば事故が激減します。
$ ls -l app.sh
-rwxr-xr-- 1 alice devs 1024 Jun 28 10:00 app.sh
# │└┬┘└┬┘└┬┘ └─┬─┘ └┬─┘
# │ │ │ │ 所有者 グループ
# │ │ │ └ その他の権限: r--(読みのみ)
# │ │ └ グループの権限: r-x(読み+実行)
# │ └ 所有者の権限: rwx(読み書き実行)
# └ 種別:- は通常ファイル、d はディレクトリ
rwx はそれぞれ数値に対応:読み r=4・書き w=2・実行 x=1。3者ぶんを足して3桁で表します。
flowchart LR
subgraph perm["chmod 750 の意味"]
owner["所有者:7 = 4+2+1 = rwx"]
group["グループ:5 = 4+0+1 = r-x"]
other["その他:0 = --- (権限なし)"]
end
| よく使う値 | 意味 | 典型用途 |
|---|---|---|
644 | 所有者rw・他はr | 普通のファイル |
755 | 所有者rwx・他はr-x | スクリプト・ディレクトリ |
600 | 所有者rwのみ | 秘密鍵・認証情報 |
750 | 所有者rwx・グループr-x・他なし | グループ内ツール |
動く例 ── 権限を設定して確かめる
# 実行権を付ける(所有者・グループ・他に x を追加)
chmod +x deploy.sh
# 数値で一発指定:所有者rwx・グループr-x・他なし
chmod 750 deploy.sh
# 所有者とグループを変える(root権限が要る場合は sudo)
chown alice:devs deploy.sh
# 秘密鍵は 600 が鉄則(他人に読めると SSH が拒否する)
chmod 600 ~/.ssh/id_ed25519
ディレクトリの x は「中に入れる(cd できる)」権限を意味します(読みではない)。ここを誤ると「ファイルはあるのに開けない」が起きます。
なぜ最小権限なのか
- 被害を局所化するため:権限を絞れば、アカウント1つが乗っ取られても触れる範囲が限られる。
777は誰でも書き換え・実行可能で、改ざんの温床。 - 意図を表すため:
600の鍵は「これは秘密」と権限自体が語る。権限は仕様書でもある。 - セキュリティの深掘り(権限分離・SELinux等)は サイバーセキュリティ へ。ここは「日々の運用で事故らない」最小核。
⚠️ よくある誤解・落とし穴
- 「動かないからとりあえず
chmod 777」→ 全員に全権限を渡す最悪手。まず誰に何が必要かを考え、最小の権限で。 - 「
>で追記したつもりが上書き」→>は上書き、追記は>>。大事なファイルを一瞬で空にする事故の定番。 - 「実行権がないスクリプトが動かない」→
chmod +xを忘れている。またはbash script.shで明示実行。 - 「ディレクトリに r があれば入れる」→ 入る(cd する)には
xが要る。読み(中身一覧)と入場は別。 - 「
rm -rfをうろ覚えのパスで」→ 取り返しがつかない。変数展開・ワイルドカードは実行前にechoで確認。
対応ラボ
cloud-infra-study/labs/02-01_permissions_demo.sh(権限の付け外しと、読めない/入れないを実際に再現して観察する最小スクリプト)。
関連
- 動いているプログラム(プロセス)の管理は プロセスとサービス管理(systemd)
- ユーザー・sudo・鍵の権限は パッケージとユーザー・SSH
- コンテナはこの権限・名前空間の上に立つ コンテナとは(名前空間・cgroups)