なぜWebサーバソフトウェアであるApacheやNginx等にmrubyを組み込もうと思ったのかを整理しておきたいと思いました。
思ったこと
プロジェクトやチームにおいて自由な中にも秩序が必要(スケジューラやI/Oのアーキテクチャで例えてみた)
この話は、学生時代や入社当初は全然気づかなくて、会社でプロジェクトを管理したりチームで何かを取り組んだりしていく上で思うようになったことです。
Linuxエンジニアを辞めて大学院に入学しました
昨日の記事が1日で多くの方に見て頂けているようでとてもうれしいです。
今回は元々、今日このタイミングで記事にしたいと思っていた内容があったのでそれを書きたいと思います。僕は去年の9月に会社をやめて、今年の4月から大学院に入学しました。「Linuxエンジニアを目指して入社1年目で役に立ったと思う事を書いた本人が、実はLinuxエンジニアをやめていた事を知ると、昨日のはなんだったの?」と思う人もいるかもし れません。なので、少しタイミングが悪いかもしれませんが、とりあえず書こうと思います。話は小学校までさかのぼるので長くなるかもしれません。暇つぶしに読んでやろうか、ぐらいで読んで頂ければと思います。
Linux Capabilityに関するまとめと更なる疑問
Capabilityのビットの種類
プロセスに関するLinux Capabilityには4種類のビットがあり、それぞれ役割が異なる。
[note]
P: Permitted
E: Effective
I: Inherited
B: Bounding
[/note]
この中で、プロセスがCapabilityを必要とする操作をOSに対して要求した際、評価されるのはEビットである。しかし、Eビットを決定する過程で他のビットも利用される。
Linux Capabilityに関する疑問
Capabilityをセットする際、セットしたいCapability *以外* のCapabilityを落としすことでCapability機能を実現している。その *落とした* Capabilityを再度同じプロセスにセットし直せない様な仕様になっているのは、どういうリスクを想定しているのだろうか。
もう少し踏み込んでみよう。
例えば、あるプロセスにあるCapabilityのみをセットした状態にし、それ以外のCapabilityは落とした状態とする。
そこで、
「プロセスにセットしてあるCapabilityを一旦落とした後、再度、直前までセットしていたCapability *のみ* をセットし直すことは可能だ」
という仕様を許可することは、リスク的にどういったものが考えられるのだろうか?