読者です 読者をやめる 読者になる 読者になる

広告代理店出身インフラエンジニアの備忘録

WebデザイナーからのWebプログラマー、ミドルウェアも管理するようになり、気付けばインフラエンジニアになっていました。

意外と奥が深いLinuxのACL

ブログタイトルに相応しい内容なんて何ヶ月ぶりでしょうか。
ずっと意識していなかったけど、LinuxACLの仕組みについて調べてみた。
 
ACLとは、Access Control Listの略称で
日本語に直すと"アクセス制御リスト"となる。
その名の通り、ユーザやグループからのフォルダやファイルに対するアクセスを制御する仕組みだ。
 

 

r w xの3文字で表しますが、それぞれ
Read
Write
eXecute
から取っている。
 
そのまま訳せば意味が通るので詳しい説明は割愛しますが
権限X(eXecute)の仕組みが実に興味深かったのでまとめてみる。
 

■権限"eXecute"を持っている場合の挙動

 
1. ユーザ「これ実行して!"./hoge.ksh"」
2. OS「どれどれ、中身は何で書かれているんだい?」
3. OS「#!/bin/ksh...おー。kshか。それじゃkshの実行モジュールよ、頼んだ」
4. OS「"ksh hoge.ksh"っと。」
5. ksh「おk」
 
 
■権限"eXecute"を持たない場合の挙動
1. ユーザ「これ実行して!"./hoge.ksh"」
2. OS「ほぅ…どれどれ。中身は何だ?見てみよう」
3. OS「おやおや…君は実行権限を持ってないのぉ。悪いが実行はさせぬ。」
4. OS「Permission denied.」
 
そう。実は"x"とは読み取り権限と同じなのだ。
何で書かれたシェルなのか判別するために読み取ることが出来る権利である。
 
つまり、シェルという機能そのものを実行出来るユーザならば
個々のシェルに割り当てられた権限とか関係なく
どんなシェルでも実行出来てしまう。
実行の仕方はこう。
 
 
そう。
権限"x"を持っていた場所、OSが変わって実行してくれるコマンドだ。
 
単純だけど奥が深いですね。