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
84
今更喋るのも申し訳ないパーミッションの話
すごい広島 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
Amazon Aurora Serverless v2が意外と高かった話と、AWS Database Migration Serviceの話
satoshi256kbyte
1
110
AWS App Runnerで気軽にAPIを作ってみるーそして、これはどんな人向けなのか?ー
satoshi256kbyte
2
96
Backlog GitとAWS CodePipelineの連携作戦 - 途中報告
satoshi256kbyte
1
51
Amazon Bedrock超入門を読んで用語整理してみた
satoshi256kbyte
3
120
初めての社外登壇と、初めての事例取材
satoshi256kbyte
1
48
コンピュータサイエンスにおけるキューとスタックの解説
satoshi256kbyte
0
350
非フロントエンジニア観点でのMPA・SPA・SSR・SSGの違い
satoshi256kbyte
1
450
OSSツールのTrivyでSBOM出力と脆弱性検査をしてみた
satoshi256kbyte
0
180
たまにはExcel VBAを書いてみよう
satoshi256kbyte
0
84
Other Decks in Programming
See All in Programming
The Cutting Edge Of Versioning (LambdaConf 2024)
chriskrycho
0
250
The grand strategy of Ruby Parser
yui_knk
4
190
dbtのドメイン分割による データ基盤の改善とDigdagとの連携
sakama
0
500
Namespace, What and Why
tagomoris
3
590
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
510
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
100
戦略的DDDは重いのか? / Is strategic DDD heavy?
pictiny
3
2k
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
12
4.3k
freeeのエンジニアが 就活で出そうな コーディングテストを 解説してみる
freee
0
140
AmperとFleetを使ったAndroidアプリ
yoppie
0
300
欠陥を早期に発見するための Software Engineer in Test とその重要性 / What is Software Engineer in Test and How they works
orgachem
PRO
16
2k
Webアプリをできるだけコードを手書きしないで作ってみる
tomokusaba
2
230
Featured
See All Featured
Creatively Recalculating Your Daily Design Routine
revolveconf
211
11k
Designing for Performance
lara
601
67k
Atom: Resistance is Futile
akmur
260
25k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
How GitHub (no longer) Works
holman
305
140k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
What's in a price? How to price your products and services
michaelherold
238
11k
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のパーミッションシステムは⻑年にわたり実績を積み重ねており、 多くのシステムやアプリケーションで参考や再利⽤がされています。 押さえておくと、きっと応⽤の幅が広がると思います。