The CentOS Logo Vertical Version With Registered Trademark

こんにちは、じょえずです。

仮想化環境のCentOSマシンを使って、Linux系OSの操作に馴染んでいくシリーズの続きです。
前回のlsコマンドで表示させたパーミッション(許可属性)について掘り下げていきます。
これまでの経緯はこちらからご覧ください。

ファイルの種類

前回のlsコマンドでの表示結果の1文字目には「ファイルの種類」が表示されています。

cent0018
その詳細は以下の通りです。

表示意味
-普通のファイル
dディレクトリ
lシンボリックリンク
cキャラクタデバイスファイル
bブロックデバイスファイル

デバイスファイル

/dev配下に配置されているファイル群で、デバイスを操作するインターフェースとして用意されたファイルです。プログラム上からそのファイルに対するI/Oを記述をすることでデバイスドライバにアクセスできます。

ファイルインターフェースですのでシーケンスにアクセスするものあればランダムにアクセスするものもあり、前者にはキーボードやマウス,シリアル・インタフェースなどが該当しキャラクタデバイスと呼びます。

後者はメモリーやハード・ディスクなどでブロックデバイスと呼びます。

パーミッション(許可属性)

ファイルやディレクトリのアクセス権を「パーミッション(許可属性)」と呼び、前回のlsコマンドでのファイルの種類に続く「r」「w」「x」「-」などの羅列でそれを表しています。

その構造は「3文字のアルファベット×3組」となっています。

cent0019
パーミッションには「読み出しの許可」「書き込みの許可」「実行の許可」の3種類があり、それぞれアルファベット「r」「w」「x」で表しており、該当する許可がない場合は「-」で表示されます。

例えば「rwx」ならば読み出し、書き込み、実行の全てが可能であり、「r--」だと読み出しのみ可能で、書き込みや実行はできません。

「3組」それぞれの意味は「所有者」「グループ」「他人(所有者でも所有グループでもない人)」に該当しており、パーミッションが「rwxr-x---」ならば、所有者は読み書き実行が全て可能で、グループは読み出しと実行が可能、それ以外の人は全ての操作が不可という事を表しています。

ちなみにディレクトリのパーミッションは
読み出し(r)は「ファイル一覧の表示」、書き込みは(w)「ファイルの追加」、実行(x)は「cdコマンド」でそのディレクトリに入れるかどうかを意味しています。

数値で表すパーミッション

パーミッションは“3桁の数字”で表現されることもあります。「読み出し可能(r)」を4、「書き込み可能(w)」を2、「実行可能(x)」を1で表し、 読み出しと実行が可能な場合は「4+1」で「5」、読み出しと書き込みが可能な場合は「4+2」で「6」、全ての操作が可能な場合は「4+2+1」で「7」、全ての操作が不可の場合は「0」になります。

この数値を所有者、グループ、他人(所有者でも所有グループでもない人)の順に並べ、3桁の数字で表します。

r4読み出し可能
w2書き込み可能
x1実行可能
-0許可がない

これらパーミッションの0~7の数値は、2進数のビット列で管理されているもので、「r」「w」「x」の順番で許可を1不可を0で表現した場合、書き込み許可は「100」で表現されます。それを10進数で表すと4になります。

同様に「書き込み可能(w)=1」「実行可能(x)=1」を2進数で表現すると「010」「001」となり、「6(4+2)」なら「110」だし、「7(4+2+1)」は「111」となります。

パーミッションの変更を行うchmodコマンドでは対象のファイルのアクセス権を指定するのに、770とか775、440なんて数値をよく見かけるかもしれませんが、これは

770所有者と所有グループは読み書き実行ができるけど他人は何もできないとか、
775所有者と所有グループは読み書き実行ができ他人は実行ができないとか、
440所有者と所有グループは読み出しだけで他人は何もできない
みたいなことですね。

ここまでのまとめ

  • lsコマンドで表示されるファイルの種類には「-」「d」「l」「c」「b」の4種類がある
  • デバイスドライバにアクセスできるデバイスファイルというものがある
  • パーミッションには「r」「w」「x」の3種類がある
  • そのrwxを2進数のビット列に置き換えて10進数の数値で表現することもできる
なんかだんだんLinux系OSが見えてきましたね。次回はディレクトリ構造について紐解きます。それでは!