umask=22
がパーミッション755
になる理由は、実は「計算式」が存在します。この計算により、umaskの値からファイルやディレクトリのパーミッションが導かれます。
umaskの基本的な仕組み
まず、umaskはファイルやディレクトリの「パーミッションをマスク(除外)」する役割を持ち、デフォルトのパーミッションからumaskのビットで指定された部分を取り除いたものが最終的なパーミッションになります。
デフォルトのパーミッション
- ファイルのデフォルトパーミッションは
666
です(読み書き可能)。 - ディレクトリのデフォルトパーミッションは
777
です(読み書き実行可能)。
umaskの計算方法
umaskの値は、「削除する」パーミッションを表しており、666
または777
からumaskの値を引いた結果が、最終的なパーミッションになります。
実際の計算例
ディレクトリのパーミッションの計算
- ディレクトリのデフォルトのパーミッションは
777
です。 - ここからumaskの
22
を引きます。計算式は次のようになります:
777 - 022 = 755
7 - 0 = 7
(所有者のパーミッションはrwx
)7 - 2 = 5
(グループのパーミッションはr-x
)7 - 2 = 5
(その他のパーミッションはr-x
)
- したがって、ディレクトリのパーミッションは
755
(rwxr-xr-x
)になります。
ファイルのパーミッションの計算
- ファイルのデフォルトのパーミッションは
666
です。 - ここからumaskの
22
を引きます。計算式は次のようになります:
666 - 022 = 644
6 - 0 = 6
(所有者のパーミッションはrw-
)6 - 2 = 4
(グループのパーミッションはr--
)6 - 2 = 4
(その他のパーミッションはr--
)
- したがって、ファイルのパーミッションは
644
(rw-r--r--
)になります。
まとめ
umaskの計算は、「デフォルトパーミッション」から「umaskで指定したビット」を引くことで決定されます。umaskの各桁が0でなければ、それに応じたパーミッションがマスクされ、最終的なパーミッションが決まります。