こんにちは、小島です。
今回はパーミッションについて書かせていただきます。
私は最初に数字だけを見てしまうとumask
は “引き算” の考え方でいいのかと思っていました。
umask
新規作成する際にファイルとディレクトリのデフォルトのパーミッションを設定するコマンド。
デフォルト値はディレクトリが 777
、ファイルが 666
設定されており、 umask 000
の形で数値を差し引く(差し引くが表現として一番わかりやすいです)
結論からいうとパーミッションは数字ビット演算(2進数)で行われている。でした。
「パーミッション ビット演算」とかで調べると詳しい解説がたくさん出てきます。
下記の表記のように記号と数値が減っていくことで権限が変わるのは”引き算”になっていると勘違いしていました。
左から「所有者」「グループ」「その他のユーザー」
記号表現「r」(読み)「w」(書き)「x」(実行)
数値表現「4」(読み)「2」(書き)「1」(実行)
rwxrwxrwx(777) ディレクトリ
ーーーーwーーwー(022) umask 022
rwxrーxrーx(755) 設定値
では umask
コマンドで umask 077
とした際に引き算であれば、ディレクトリは 700
、ファイルは 589
、1桁ずつでも「6、-1、-1」となってしまいます。(マイナス数値は無いです)
これをビット演算で見てみると以下になります。
rwxrwxrwx(777) ディレクトリ
111111111
ーーーrwxrwx(077) umask 077
000111111
rwxーーーーーー(700) 設定値
111000000
rw-rw-rw-(666) ファイル
110110110
ーーーrwxrwx(077) umask 077
000111111
rwーーーーーー(600) 設定値
110000000
正解としてはディレクトリは 700
、ファイルは 600
になります。
なんとなくわかるといった感じですね。
正直ビット演算をそこまで私は学習していない為、引き算ではあるが引かれた数値がマイナスになったら0になるんだな~ぐらいで考えるようにしました。
See you next time👉