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#○○
でいくつかの情報が得られる。(mode
やnlink
など)
またこれについては次のブログで😀
ただのつぶやき
いつもブログを書くときに思う。
書くの、おそってw
Markdownにまだ慣れていない、というのもあるけど
まとめながら書くと、日報同様本当に遅いw
もうちょっとサラッと書けるようになりたいな。