LESSON 30分

ストーリー

あなた
ファイルに権限ってあるんですよね?
先輩
そう。誰が読めて、誰が書けて、誰が実行できるかを制御しているんだ
あなた
ls -l で見える謎の文字列ですか?
先輩
そう!rwxr-xr-- みたいなやつ。今日はその意味を解説するよ

権限とは

Linuxでは、すべてのファイルとディレクトリにアクセス権限が設定されています。

  • 誰が(ユーザー)
  • 何を(読み/書き/実行)できるか

を制御します。


権限を確認する

ls -l

出力例:

-rw-r--r-- 1 user group 1234 Jan 27 10:00 file.txt
drwxr-xr-x 2 user group 4096 Jan 27 10:00 directory

権限表記の読み方

-rw-r--r--

この10文字を分解すると:

位置文字意味
1文字目-ファイルの種類
2-4文字目rw-所有者の権限
5-7文字目r--グループの権限
8-10文字目r--その他のユーザーの権限

ファイルの種類(1文字目)

記号意味
-通常のファイル
dディレクトリ
lシンボリックリンク

権限の種類(r, w, x)

ファイルの場合

記号意味説明
rRead(読み取り)ファイルの内容を読める
wWrite(書き込み)ファイルの内容を変更できる
xExecute(実行)ファイルをプログラムとして実行できる
-権限なしその操作ができない

ディレクトリの場合

記号意味説明
rReadディレクトリ内のファイル一覧を見られる
wWriteディレクトリ内にファイルを作成/削除できる
xExecuteディレクトリに入れる(cdできる)

3種類のユーザー

種類英語説明
所有者User (u)ファイルを作った人
グループGroup (g)所有者が属するグループ
その他Other (o)上記以外の全員

準備: サンプルファイルを作る

cd ~
mkdir permission-practice
cd permission-practice

# 通常のファイル
echo "Hello World" > hello.txt

# 実行可能なスクリプト
cat > script.sh << 'EOF'
#!/bin/bash
echo "This is a script"
EOF

# 権限を確認
ls -l

権限を読んでみよう

例1: -rw-r--r--

graph LR
    Type["-<br/>通常のファイル"]
    Owner["rw-<br/>所有者<br/>読み書き可能"]
    Group["r--<br/>グループ<br/>読み取りのみ"]
    Other["r--<br/>その他<br/>読み取りのみ"]

    Type --> Owner --> Group --> Other

    style Type fill:#f3f4f6,stroke:#6b7280,color:#374151
    style Owner fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af
    style Group fill:#d1fae5,stroke:#059669,color:#064e3b
    style Other fill:#fef3c7,stroke:#d97706,color:#92400e

意味: 所有者は読み書きできる。グループとその他は読み取りのみ。

例2: drwxr-xr-x

graph LR
    Type["d<br/>ディレクトリ"]
    Owner["rwx<br/>所有者<br/>すべて可能"]
    Group["r-x<br/>グループ<br/>読み取りと実行"]
    Other["r-x<br/>その他<br/>読み取りと実行"]

    Type --> Owner --> Group --> Other

    style Type fill:#e0e7ff,stroke:#4f46e5,color:#312e81
    style Owner fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af
    style Group fill:#d1fae5,stroke:#059669,color:#064e3b
    style Other fill:#fef3c7,stroke:#d97706,color:#92400e

意味: 誰でもこのディレクトリに入れて中身を見られる。ただし、ファイルの追加/削除は所有者のみ。

例3: -rwx------

graph LR
    Type["-<br/>通常のファイル"]
    Owner["rwx<br/>所有者<br/>すべて可能"]
    Group["---<br/>グループ<br/>権限なし"]
    Other["---<br/>その他<br/>権限なし"]

    Type --> Owner --> Group --> Other

    style Type fill:#f3f4f6,stroke:#6b7280,color:#374151
    style Owner fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af
    style Group fill:#fee2e2,stroke:#dc2626,color:#991b1b
    style Other fill:#fee2e2,stroke:#dc2626,color:#991b1b

意味: 所有者だけが読み書き実行できる。他の人はアクセス不可。


数字での表記

権限は数字でも表せます(後で chmod で使います)。

権限数字計算
---00+0+0
--x10+0+1
-w-20+2+0
-wx30+2+1
r--44+0+0
r-x54+0+1
rw-64+2+0
rwx74+2+1

権限数字表記
-rw-r--r--644
-rwxr-xr-x755
-rwx------700
drwxr-xr-x755

計算方法:

  • rw- = 4 + 2 + 0 = 6
  • r-- = 4 + 0 + 0 = 4
  • r-- = 4 + 0 + 0 = 4
  • 合わせて 644

よく使われる権限

数字権限用途
644rw-r--r--通常のファイル(テキスト、設定など)
755rwxr-xr-x実行可能ファイル、ディレクトリ
700rwx------プライベートなスクリプト
600rw-------秘密の設定ファイル(SSH鍵など)

ハンズオン

# 1. 権限を確認
ls -l

# 2. 各ファイルの権限を読み取る
# hello.txt の権限は?
# script.sh の権限は?

# 3. ホームディレクトリの権限を確認
ls -ld ~

# 4. /etc/passwd の権限を確認(重要なシステムファイル)
ls -l /etc/passwd

# 5. /etc/shadow の権限を確認(パスワードハッシュ)
ls -l /etc/shadow

権限エラーの例

読み取り権限がない

# 他のユーザーのプライベートファイルを読もうとすると
cat /root/secret.txt
# Permission denied

書き込み権限がない

# システムファイルを変更しようとすると
echo "test" >> /etc/hosts
# Permission denied

実行権限がない

# 実行権限のないスクリプトを実行しようとすると
./script.sh
# Permission denied

まとめ

概念説明
r (read)読み取り権限
w (write)書き込み権限
x (execute)実行権限
User (u)ファイル所有者
Group (g)所有者のグループ
Other (o)その他のユーザー

覚え方

graph TD
    Perm["-rwxr-xr-x = 755"]

    subgraph Owner["所有者 = 7"]
        OR["r=4"]
        OW["w=2"]
        OX["x=1"]
    end

    subgraph GroupP["グループ = 5"]
        GR["r=4"]
        GW["-=0"]
        GX["x=1"]
    end

    subgraph OtherP["その他 = 5"]
        OTR["r=4"]
        OTW["-=0"]
        OTX["x=1"]
    end

    Perm --> Owner
    Perm --> GroupP
    Perm --> OtherP

    style Perm fill:#1e293b,stroke:#475569,color:#e2e8f0,stroke-width:2px
    style Owner fill:#dbeafe,stroke:#2563eb,color:#1e40af
    style GroupP fill:#d1fae5,stroke:#059669,color:#064e3b
    style OtherP fill:#fef3c7,stroke:#d97706,color:#92400e

チェックリスト

  • ls -l で権限を確認できた
  • rwx の意味を理解した
  • 所有者/グループ/その他の違いを理解した
  • 数字表記(644, 755など)を理解した

次のステップへ

権限の基本を理解できましたか?

次のセクションでは chmod コマンドを学びます。ファイルの権限を変更する方法をマスターしましょう!


推定読了時間: 30分