Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今更喋るのも申し訳ないパーミッションの話
Search
Satoshi Kaneyasu
September 24, 2023
Programming
0
160
今更喋るのも申し訳ないパーミッションの話
すごい広島 IT初心者の会 [78]でのLT資料です。
https://pycon-hiroshima.connpass.com/event/295174/
Satoshi Kaneyasu
September 24, 2023
Tweet
Share
More Decks by Satoshi Kaneyasu
See All by Satoshi Kaneyasu
フルリモートで社内にどうやって自分の居場所を作るのか?
satoshi256kbyte
10
17k
プロジェクトマネージャーがGitHub Copilotのエージェンモードを使い始めました
satoshi256kbyte
1
170
そもそもAWS Configの設定変えられたらどうするの?Amazon EventBridgeでマネコンの操作を監視する
satoshi256kbyte
1
130
変化の激しい時代における、こだわりのないエンジニアの強さ
satoshi256kbyte
1
1.6k
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
1
280
【PHP】破壊的バージョンアップと戦った話〜決断と説得
satoshi256kbyte
0
280
今更聞けないセキュリティ用語の基礎知識 2025新春
satoshi256kbyte
0
190
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
330
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
620
Other Decks in Programming
See All in Programming
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
980
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
5
1.4k
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
710
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
160
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
3
470
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
1
6.7k
顧客の画像データをテラバイト単位で配信する 画像サーバを WebP にした際に起こった課題と その対応策 ~継続的な取り組みを添えて~
takutakahashi
1
310
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
570
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
280
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
20k
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
340
Porting a visionOS App to Android XR
akkeylab
0
660
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
KATA
mclloyd
30
14k
How to Ace a Technical Interview
jacobian
278
23k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Facilitating Awesome Meetings
lara
54
6.5k
Being A Developer After 40
akosma
90
590k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Practical Orchestrator
shlominoach
189
11k
Visualization
eitanlees
146
16k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Bash Introduction
62gerente
613
210k
Transcript
今更喋るのも申し訳ない LINUXのパーミッションの話 2023.09.27 SATOSHI KANEYASU
⾃⼰紹介 ⽒名︓兼安 聡 職種︓クラウドエンジニア 最近のお仕事︓DevOpsの推進 趣味︓サックス、筋トレ、CS ゲーム 資格︓ X(Twitter)︓@satoshi256kbyte など
はじめに • Linuxのパーミッション、使いこなしていますか︖ • 難しくはありますが、全⼒で避けるほどではありません。 今回はパーミッションの話をさせてください。
念の為 • 本資料の内容はAmazon Linux 2023で動作確認しています。
リストコマンドからパーミッションを読み解く 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
記号表記のパーミッション ⽂字の位置 説明 例 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
読み解いた結果 項⽬ ファイルの タイプ 所有者 (読取) 所有者 (書込) 所有者 (実⾏)
グループ (読取) グループ (書込) グループ (実⾏) その他 (読取) その他 (書込) その他 (実⾏) 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
ユーザーとグループ 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̶なので所有者しか編集できない
ユーザーとグループ 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̶なのでグループ編集可能
ディレクトリのパーミッション 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
ディレクトリのパーミッション • 読取権限 (`r`) • ディレクトリ内のアイテム名のリストを表⽰することができる。 • ファイルを開けるかどうかはファイル側のパーミッションに依存。 • ファイルだけに読取があってディレクトリにない場合、
直接参照は可能だが、リスト表⽰はできない。 • 書込権限 (`w`) • ディレクトリ内でのファイルやサブディレクトリの作成、削除、名前変更ができる。 • ファイルを編集できるかどうかはファイル側のパーミッションに依存。 • ディレクトリに書込権限がなく、ファイルだけにある場合、 ファイルの編集はできるが、ファイルの作成、削除、名前の変更はできない。 • 実⾏権限 (`x`) • ディレクトリ内の特定のファイルへのアクセス(存在確認など)や、 サブディレクトリへの移動などができる。 • ファイルを実⾏できるかどうかはファイル側のパーミッションに依存。
パーミッションの数字表記 数字 記号表記 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 読取と書込と実⾏が可能 数字が⼤きければ強いとも ⾔い切れない
よくあるパーミッション 種類 パーミッション 数字表 記 記号表記 説明 静的HTMLファイル 読取専⽤ 644
rw-r--r-- Apacheはファイルの内容を読むだけで、 変更する必要はないため。他のユーザーは 変更を加えるべきではない。 PHPや実⾏可能スクリプト 実⾏可能 744 rwxr--r-- Apacheはファイルを読んで実⾏する必要 があるが、他のユーザーは変更や実⾏をす るべきではない。 ディレクトリ 読取・実⾏ 755 rwxr-xr-x Apacheはディレクトリ内のファイルにア クセスするために実⾏権限が必要。他の ユーザーはファイルを追加・削除するべき ではない。 全権限(⾮推奨) 全権限 777 rwxrwxr wx すべてのユーザーが全ての操作を⾏えるが、 セキュリティ上のリスクが⾼いため通常は 推奨されない。
ファイルの所有者は、作成したユーザーで決まる 多くのLinuxディストリビューションのデフォルト設定では、 ファイルは作成時に所有者のみが編集権限を持つ(644)ことが⼀般的です。 例えば、`kaneyasu`ユーザーでファイルを作成すると、 ファイルの所有者は`kaneyasu`になります。 -rw-r--r-- 1 kaneyasu ec2-user 0
Sep 24 05:13 file_C.txt
所有者以外で編集可能にする⼿段 1. ファイルのグループのパーミッションを書込可能にした上で、 他のユーザーを所有者と同じグループに⼊れる。 2. 所有者になって編集する `sudo -u kaneyasu vi
file_C.txt` 3. ファイルの所有者を変更する `sudo chown userA file_C.txt` 4. 全員を編集可能にする `sudo chmod 777 file_C.txt`
cronとPHPによる例 */5 * * * * echo "Some text to
add" >> temp_file.txt temp_file.txt PHPファイル cron Apache ①ファイル作成 ②追記・・・できない︕
cronとPHPによる例 */5 * * * * sudo -u apache bash
-c 'echo "Some text to add" >> temp_file.txt' temp_file.txt PHPファイル cron Apache ①ファイル作成 ②追記・・・できる︕ この⼿法、結構重要です。 これを知らないとパーミッションをしっかり設定すると、 全然動かなくなるから嫌だという感覚に陥りかねません。
最後に Linuxのパーミッションシステムは⻑年にわたり実績を積み重ねており、 多くのシステムやアプリケーションで参考や再利⽤がされています。 押さえておくと、きっと応⽤の幅が広がると思います。