Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今更喋るのも申し訳ないパーミッションの話

 今更喋るのも申し訳ないパーミッションの話

すごい広島 IT初心者の会 [78]でのLT資料です。

https://pycon-hiroshima.connpass.com/event/295174/

Satoshi Kaneyasu

September 24, 2023
Tweet

More Decks by Satoshi Kaneyasu

Other Decks in Programming

Transcript

  1. リストコマンドからパーミッションを読み解く ls –l total 36 -rwxr-xr-x 1 ec2-user ec2-user 11754

    Sep 24 04:31 file_A.txt -rwxrw-rw- 1 ec2-user ec2-user 23508 Sep 24 04:31 file_B.txt drwxrwxr-x 2 ec2-user ec2-user 6 Sep 24 04:35 sub_dir
  2. 記号表記のパーミッション ⽂字の位置 説明 例 1 ファイルタイプ - 通常のファイル、dディレクトリ 2 所有者の読み込みパーミッション

    r 読み込み可、- 読み込み不可 3 所有者の書込パーミッション w 書込可、- 書込不可 4 所有者の実⾏パーミッション x 実⾏可、- 実⾏不可 5 グループの読み込みパーミッション r 読み込み可、- 読み込み不可 6 グループの書込パーミッション w 書込可、- 書込不可 7 グループの実⾏パーミッション x 実⾏可、- 実⾏不可 8 その他のユーザーの読み込みパーミッション r 読み込み可、- 読み込み不可 9 その他のユーザーの書込パーミッション w 書込可、- 書込不可 10 その他のユーザーの実⾏パーミッション x 実⾏可、- 実⾏不可 -rwxr-xr-x -rwxrw-rw- drwxrwxr-x
  3. 読み解いた結果 項⽬ ファイルの タイプ 所有者 (読取) 所有者 (書込) 所有者 (実⾏)

    グループ (読取) グループ (書込) グループ (実⾏) その他 (読取) その他 (書込) その他 (実⾏) file_A.txt 通常のファイル あり あり あり あり なし あり あり なし あり file_B.txt 通常のファイル あり あり あり あり あり なし あり あり なし sub_dir ディレクトリ あり あり あり あり あり あり あり なし あり ls –l total 36 -rwxr-xr-x 1 ec2-user ec2-user 11754 Sep 24 04:31 file_A.txt -rwxrw-rw- 1 ec2-user ec2-user 23508 Sep 24 04:31 file_B.txt drwxrwxr-x 2 ec2-user ec2-user 6 Sep 24 04:35 sub_dir
  4. ユーザーとグループ ls –l total 36 -rwxr-xr-x 1 ec2-user ec2-user 11754

    Sep 24 04:31 file_A.txt -rwxrw-rw- 1 ec2-user ec2-user 23508 Sep 24 04:31 file_B.txt -rw-r--r-- 1 kaneyasu ec2-user 0 Sep 24 05:13 file_C.txt drwxrwxr-x 2 ec2-user ec2-user 6 Sep 24 04:35 sub_dir 所有者 グループ -rw-r--r̶なので所有者しか編集できない
  5. ユーザーとグループ sudo chmod 764 file_C.txt ls -l file_C.txt -rwxrw-r-- 1

    kaneyasu ec2-user 0 Sep 24 05:13 file_C.txt 所有者 グループ -rw-rw-r̶なのでグループ編集可能
  6. ディレクトリのパーミッション ls –l total 36 -rwxr-xr-x 1 ec2-user ec2-user 11754

    Sep 24 04:31 file_A.txt -rwxrw-rw- 1 ec2-user ec2-user 23508 Sep 24 04:31 file_B.txt -rw-r--r-- 1 kaneyasu ec2-user 0 Sep 24 05:13 file_C.txt drwxrwxr-x 2 ec2-user ec2-user 6 Sep 24 04:35 sub_dir
  7. ディレクトリのパーミッション • 読取権限 (`r`) • ディレクトリ内のアイテム名のリストを表⽰することができる。 • ファイルを開けるかどうかはファイル側のパーミッションに依存。 • ファイルだけに読取があってディレクトリにない場合、

    直接参照は可能だが、リスト表⽰はできない。 • 書込権限 (`w`) • ディレクトリ内でのファイルやサブディレクトリの作成、削除、名前変更ができる。 • ファイルを編集できるかどうかはファイル側のパーミッションに依存。 • ディレクトリに書込権限がなく、ファイルだけにある場合、 ファイルの編集はできるが、ファイルの作成、削除、名前の変更はできない。 • 実⾏権限 (`x`) • ディレクトリ内の特定のファイルへのアクセス(存在確認など)や、 サブディレクトリへの移動などができる。 • ファイルを実⾏できるかどうかはファイル側のパーミッションに依存。
  8. パーミッションの数字表記 数字 記号表記 2進数表⽰ 計算 説明 0 --- 000 0×4

    + 0×2 + 0×1 = 0 何もできない 1 --x 001 0×4 + 0×2 + 1×1 = 1 実⾏のみ可能 2 -w- 010 0×4 + 1×2 + 0×1 = 2 書込のみ可能 3 -wx 011 0×4 + 1×2 + 1×1 = 3 書込と実⾏が可能 4 r-- 100 1×4 + 0×2 + 0×1 = 4 読取のみ可能 5 r-x 101 1×4 + 0×2 + 1×1 = 5 読取と実⾏が可能 6 rw- 110 1×4 + 1×2 + 0×1 = 6 読取と書込が可能 7 rwx 111 1×4 + 1×2 + 1×1 = 7 読取と書込と実⾏が可能 数字が⼤きければ強いとも ⾔い切れない
  9. よくあるパーミッション 種類 パーミッション 数字表 記 記号表記 説明 静的HTMLファイル 読取専⽤ 644

    rw-r--r-- Apacheはファイルの内容を読むだけで、 変更する必要はないため。他のユーザーは 変更を加えるべきではない。 PHPや実⾏可能スクリプト 実⾏可能 744 rwxr--r-- Apacheはファイルを読んで実⾏する必要 があるが、他のユーザーは変更や実⾏をす るべきではない。 ディレクトリ 読取・実⾏ 755 rwxr-xr-x Apacheはディレクトリ内のファイルにア クセスするために実⾏権限が必要。他の ユーザーはファイルを追加・削除するべき ではない。 全権限(⾮推奨) 全権限 777 rwxrwxr wx すべてのユーザーが全ての操作を⾏えるが、 セキュリティ上のリスクが⾼いため通常は 推奨されない。
  10. cronとPHPによる例 */5 * * * * echo "Some text to

    add" >> temp_file.txt temp_file.txt PHPファイル cron Apache ①ファイル作成 ②追記・・・できない︕
  11. cronとPHPによる例 */5 * * * * sudo -u apache bash

    -c 'echo "Some text to add" >> temp_file.txt' temp_file.txt PHPファイル cron Apache ①ファイル作成 ②追記・・・できる︕ この⼿法、結構重要です。 これを知らないとパーミッションをしっかり設定すると、 全然動かなくなるから嫌だという感覚に陥りかねません。