BETA

Linux標準教科書 第8~最後まで

投稿日:2019-10-04
最終更新:2019-10-04

はじめに

Linux標準教科書を使ってLinuxの復習をしている

8章 アクセス権

Linuxは、ファイル・ディレクトリをアクセス権限で管理している。
前回の7章で、ユーザ・グループにアクセス権限が与えられており、ファイルにも誰が触っていいのかが記載されている。

具体的には

・所有者
・所有者が所属するグループ
・その他

のユーザに対して

・読み込み
・書き込み
・実行

のどの操作を許可するか?をアクセス権限で明記している。
コマンドは覚える必要はないが、2進数で指定すると便利なので、そこだけ覚えとこう。

9章


Macではターミナルでコマンドを実行するが、ターミナルで行っているのは内部の仮想端末状で動くシェルから受け取った文字を描画するだけである。
つまり、ただのGUIである。

コマンドを解析するのはシェル(bash, fish)であり、それを解析したものを使用するのがカーネルである。

シェル変数と環境変数があるが、ここが分かりづらくつまづきやすい。
シェル変数は、シェルのプロセス内で利用される変数であり、シェルをForkして子プロセスを生成したとしても引き継がれない。
一方、環境変数では、変数は引き継がれる。

よくexportなどがQiita出でるが、あれは変数を環境変数として定義している。
ただし、毎回定義するのは面倒であるため、Bashが起動したときに変数の設定などをしに行く.bash_profileに書く。

シェルスクリプトはよくつかう変数・コマンドをまとめて実行できるスクリプト。
自分の場合はFishを最近は使っているのでフィッシュスクリプトの文法で書く、違う場合はフィッシュに直さないといけないので不便。

ネットワーク


あんま丁寧にやってない。

Linusの仕組み



Linuxのプロセスはプログラムという認識でよく、PIDという番号でカーネルが管理している。
必ずプロセスはなにか他のプロセスの子プロセスとしてFork,起動される。
ここで、最初のプロセスは?となるが、init.dという大元プロセスを確かさらに大元のBIOSらへんが起動して、すべてこのinit.dが親プロセスとして起動している。

ここで、プロセスは子プロセスをForkして、実行時にデータや変数を受け継ぐが
デーモンと呼ばれるサービスに関しては親プロセスを利用せず、すぐにinit.dに所有権が移される。
これによって、サービスが止まらなくなり、安定してミドルウェアを利用できる。

ファイル管理




Linuxはファイルシステムをカーネルではなく、ユーザランドとして利用できる。
このファイルシステムによって、効率的に名前・更新日などいわゆる普通のファイルディレクトリシステムを可能としてくれる。

マウントは、デバイスファイルをLinuxの1ディレクトリとして認識させて仮想的に繋げる仕組みである。
よって、i-nodeが異なるためハードリンクは貼れない。

i-node

i-nodeは、ファイルやディレクトリの識別子のためについている番号のようなもの。
ファイルの実態とは別に管理されていて、それをLinuxがうまく被覆して、同時にあるかのように見せてくれている。
辞書の索引と思うと楽。

ファイルシステム

ファイルシステムとして、i-nodeが実体を参照して、それをファイルシステムが描画している。

ハードリンクは同じi-nodeを持つファイルを複数用意できるものである。
これによって、片方のファイルを消しても、i-nodeの入次数$d_{in}>0$であればファイルの実体は消えないし、消したと思っても消えていない。

一方、シンボリックリンクは、実際にi-nodeから他のi-nodeの番号を参照することによって、コピーではなく
C++の参照&のようなリンクを貼ることができる。
これによって、仮想VMで生成したファイルにホストOSのファイルをマウントすることができる、嬉しい

シンボリックリンクは通常ディレクトリにディレクトリを貼ることが多い気がする。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

競プロなどをします。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!