linux上でファイルやディレクトリを確認するコマンド「ls」のオプション「-l」でみるとファイルのモードというものをみることができます。
「drwxr-xr-x」のように見えるものです。
これは分解すると「d rwx r-x r-x」の4セクションに分かれており、
このファイルがディレクトリで、ユーザは読み・書き・移動可、グループは読み・移動可、それ以外のユーザは読み・移動可という意味になります。
以下で詳しく紹介していきます。
目次
ファイルのモードとは?
ファイルのモードはそのファイルの
- 種類(ファイルなのか?ディレクトリなのか?)
- パーミッション(リードオンリーか?書き込み可能なのか?)
を表記したものです。
全部で10桁ありますが、それぞれの桁数の位置に意味があります。「-」にも意味があります。
d rwx r-x r-x
10桁は「1, 3, 3, 3」の区切りで別れていて、最初の1桁ファイルの種別、残りはファイルの権限を意味します。
- 先頭の1桁:ファイルの種類
- 2~4桁:ユーザーに対する権限
- 5~7桁:グループに対する権限
- 8~10桁:それ以外に対する権限
です。
先頭1桁はファイルかディレクトリか?
最初の一桁目には「-」「d」「l」などが来ます。
- 「-」ファイルを意味
- 「d」ディレクトリ(フォルダ)を意味
- 「l」ショートカット(シンボリックリンクファイル)
です。
drwxr-xr-xは「d」なのでディレクトリということがわかります。
ファイルの場合は-rwxr-xr-xとなります。
パーミッションとは?
ユーザーに対する権限、グループに対する権限などファイルへのアクセスに関してユーザーやグループに対してファイルへの利用を制限することができます。
2~4桁の3つ分は先頭からr:読み取り、w:書き込み、x:実行を意味します。
rwxと書かれていればユーザに対して読み書き実行を許可していることになります。
r-xであれば読み取りと実行は許可されていますが、書き込みは不可になっています。
読み取り、書き込み、実行はファイルとディレクトリでは若干意味が異なります。
ファイル | ディレクトリ | |
読み取り | ファイルを読み込んで表示 catコマンド等 | ディレクトリの内容を表示 lsコマンド等 |
書き込み | ファイルに追記 viで上書き | ディレクトリを作成、mkdirコマンド |
実行 | スクリプトファイルなど実行 sourceコマンド | ディレクトリへの移動 cdコマンド |
umask値
ファイルやディレクトリを作成したときに設定されるパーミッションはumask値によって決められます。
umask値は4桁の数字で下3桁がパーミッションの決定にかかわっています。ファイルの権限は666、ディレクトリは777を基準として、umask値を差し引いたものがデフォルトのパーミッションの値です。つまり、umask値が111である時、作成したファイルの権限は666-111=555となり、ディレクトリの場合は777-111=666となります。
現在設定されているumask値は$umaskで、設定は$umask 022というように設定できます。
$ umask
0000
$ touch permi
$ ls -al
-rw-rw-rw- permi →666-000=666