Johnman.md

プログラミングのことや個人的なことを書きます。たぶん。

ふつうのLinuxプログラミング【第1部】で残しておきたいとこ

低レイヤーのことをちょっと学ぶ機運(低レイヤーの定義はおいといて)が高まったので、会社の夏休みを利用して「ふつうのLinuxプログラミング」を読んでみています。
最初はせっかく10連休あるんだからファイアーエムブレム 風花雪月を無限にプレイできるじゃん!なんて思ってたのだけど、よく考えたらそれだけだともったいない。

この一週間で読み終わるつもりではいるので、個人的に忘れたくないところをメモっていこうと思うよ。

ちなみに風花雪月めちゃくちゃ面白いです。
僕の場合50時間でやっと第二部に入りました。おすすめ。

注意
この記事は私が本を読んでメモしておきたいと思ったことを自分なりの理解で書きなぐったものです。
ここに書いてあることが正しいとは限りませんし、これを読んでも本の中身がわかるわけではないと思います。
詳しい内容を知りたい方はご自身で購入されることをおすすめします。

目次

Linuxは3つの軸で構成されている。

本書によると、Linux はざっとこいつらで構成されている。
ここでのストリームは本書独自の用語で、バイトストリームのこと。
プロセスからファイルやデバイスにアクセスする際はかならずストリームを介して行う。
他の本だと単に「ファイル」とかいう風に言われているらしい。

/etc/passwd

ユーザ名とユーザID、パスワードなんかが関連付けられているファイル。

以前セキュリティ関連の研修を受けた際、攻撃方法を学ぶ時に毎回「はい、これで /etc/passwd を表示できちゃうね」という終わり方をしていた。
そのときは「ほーん、なんか名前からして大事なファイルなんやろな」程度にしか思ってなかったのだけど、思ったよりシステムの根幹に近いファイルだった。

こいつを直接扱うのはやめたほうがいい。というかしちゃいけない。

もしこのファイルの中身を使いたかったら API 通して使おうね。

ちなみにグループとグループIDの関連付けは /etc/group にある。

端末もファイル

/dev/tty0 みたいな話。ttyはTeleTYpeの略だそう。知らなかった。
端末もファイルとして抽象化されているから、プロセスからアクセスしたいときは他のリソースと同じようにストリームを操作してアクセスできる。

所感

1部はわりと歴史的な話や、用語の解説が多めでした。
2部からコードを書くことが増えるっぽいから期待。