sharoa’s blog

ただいま勉強中。

lsコマンド / ロングフォーマットのファイルタイプとファイルモードとはなんぞや?

先日、lsコマンドの詳細をざっくり書きましたが、

今日はその中で ロングフォーマットのファイルタイプとファイルモードについて、

もう少し詳しい情報を書きたいと思います。


前回のブログ

lsコマンドを作るんだ。にて

(例)

drwxr-xr-x  14  name   staff  448  1  24  16:10  dir

上記の、drwxr-xr-xについて 改めて説明すると、

これはロングフォーマットと呼ばれるもので、

10桁で成り立っており、

1桁目はファイルタイプ、2桁目〜はファイルモードである。

ファイルタイプの種類は7つある。

ファイルモード

  • r:読み込み
  • w:書き込み
  • x:実行
  • -:権限なし

この中の3文字❌(カケル)以下の3組

  • 所有者
  • グループ
  • その他のユーザ

で表示される。

(例)のdrwxr-xr-xで考えると

1桁目がdなのでディレクトリで

2桁目〜が、rwx:所有者は読み込み・書き込み・実行の全てを許可、

r-x:グループは読み込み・実行を許可、

r-x:その他のユーザーも読み込み・実行を許可

という意味になる。

なお、ファイルモードを表す記号には前述のr w x -以外に、

特殊権限というものを表す記号もある。

  • スティッキービット:tまたはT:3組目の3文字目(その他のユーザの実行権限)
  • SGID:sまたはS:2組目の3文字目(グループの実行権限)
  • SUID:sまたはS:1組目の3文字目(所有者の実行権限)

そして、一つのファイルに同時に複数の特殊権限を付与することはできないそう🙅‍♀️

特殊権限の記号の小文字・大文字の違いは

それぞれの特殊権限が設定されていて、

併せてそれぞれの組(オーナーやグループやその他のユーザ)の実行権限を持つか持たないか、で

持つ場合は小文字、持たなければ大文字。

(例2)

drwxr-xr-t   2 name  staff         64  3 6 15:23 stickybit
drwxr-xr-T  2 name  staff         64  3 6 15:20 not_stickybit
-rwxrwsr--  1 name  staff         0  3 6 15:29 sgid
-rwxrwSr--  1 name  staff          0  3 6 15:27 not_sgid
-rwsr--r--  1 name  staff          0  3 6 15:22 suid
-rwSr--r--  1 name  staff          0  3 6 15:15 not_suid

以上がファイルモードとファイルタイプの詳細になる。

ただ、

ls -lを実行した時に(例)のdrwxr-xr-xと表示をしてくれるけど

このコマンドのプログラムとして考えた時に

(例)のような記号表記にするためには他にも必要なものがある。

そこで使うのは

File::Stat#modeこれ!!

File::Stat#○○でいくつかの情報が得られる。(modenlinkなど)

またこれについては次のブログで😀


ただのつぶやき

いつもブログを書くときに思う。

書くの、おそってw

Markdownにまだ慣れていない、というのもあるけど

まとめながら書くと、日報同様本当に遅いw

もうちょっとサラッと書けるようになりたいな。