LinuxやmacOSを触っていると、どこかのタイミングで「umask」という言葉に出会います。
ファイル作成時の権限に関係するらしい、ということはなんとなく知っているけれど、正直ピンと来ていない……という方も多いのではないでしょうか。
実際、umaskは少しだけ“引き算の発想”が必要なため、初心者の方がつまずきやすいポイントでもあります。
この記事では、umaskの意味を「数字の仕組み」から「実際のファイル権限との関係」まで、解説します。
読み終える頃には、「755って何?」「022って何を意味してるの?」といった疑問がある程度整理できるはずです。
umaskとは何か
ひとことで言うと

umaskとは、「新しく作るファイルやディレクトリのデフォルト権限から、どれだけ引くかを決める設定」です。
ポイントはここです。
umaskは「足す」のではなく、「引く」設定です。
少しわかりにくいので、例え話で考えてみます。
例え話で理解する
ファイルを新しく作るとき、システムは「とりあえず最大限ゆるい状態」をベースにします。
- ファイルの場合:666(rw-rw-rw-)
- ディレクトリの場合:777(rwxrwxrwx)
これは「全員が読み書き(+ディレクトリなら実行)できる状態」です。
しかし、そのままだと危険ですよね。
そこで「ここは許可しないで」というマスクをかけます。
この「許可しない部分」を表すのがumaskです。
つまり、
ベースの権限 − umask = 実際の権限
という関係になります。
ここが理解の最大のポイントです。
パーミッションの基本をおさらい
umaskを理解するには、まずパーミッションの仕組みを知っておく必要があります。
rwxの意味
Linuxのパーミッションは、3種類の権限で構成されています。
- r(read)読み取り
- w(write)書き込み
- x(execute)実行
これが、
- 所有者
- グループ
- その他ユーザー
の3セットで管理されます。
数字との対応
それぞれの権限は数字で表せます。
- r = 4
- w = 2
- x = 1
つまり、
- rwx = 7(4+2+1)
- rw- = 6(4+2)
- r-x = 5(4+1)
- r– = 4
となります。
だから「755」というのは、
- 所有者:7(rwx)
- グループ:5(r-x)
- その他:5(r-x)
という意味になります。
ここまでは大丈夫でしょうか。
umaskの計算方法

ここからが本題です。
デフォルトのベース権限
ファイル作成時のベースは 666
ディレクトリ作成時のベースは 777
です。
なぜファイルは666なのかというと、通常のファイルには実行権限が不要だからです。
例1:umask 022 の場合
よくある設定が 022 です。
これを計算してみましょう。
ファイルの場合:
666 − 022 = 644
つまり、
- 所有者:6(rw-)
- グループ:4(r–)
- その他:4(r–)
になります。
ディレクトリの場合:
777 − 022 = 755
- 所有者:7(rwx)
- グループ:5(r-x)
- その他:5(r-x)
これが、多くのLinux環境でよく見る 644 や 755 の正体です。
実は裏でumask 022が効いているだけなのです。
例2:umask 077 の場合
次に 077 を見てみます。
ファイル:
666 − 077 = 600
ディレクトリ:
777 − 077 = 700
これは「自分だけがアクセスできる」設定です。
セキュリティを強くしたいサーバーなどで使われることがあります。
なぜ「引き算」なのか
「なぜ最初から644で作らないの?」と思うかもしれません。
これは、Unixの思想に関係しています。
システムはまず「最大限許可できる状態」を用意し、
そこから「不要な権限を削る」という設計思想になっています。
umaskは「削るフィルター」のような存在です。
蛇口から水が最大量出る状態を基準にして、
バルブで絞るイメージを持つと理解しやすいでしょう。
umaskは「バルブの締め具合」です。
実務でどう役立つのか
ここが一番大事なポイントです。
チーム開発でのトラブル防止
たとえばWebアプリ開発で、ファイルが「600」で作られてしまうと、他のメンバーが読めません。
その原因はumask 077かもしれません。
逆に、機密ファイルが「644」で作られてしまうと、他ユーザーに読まれる可能性があります。
つまり、umaskは「セキュリティと利便性のバランス調整装置」なのです。
サーバー構築時の重要ポイント
Webサーバーで、
- アップロードしたファイルが表示されない
- 書き込みできない
といったトラブルの原因が、umaskであることは少なくありません。
アプリ側で権限を設定しているつもりでも、
裏でumaskによって削られている可能性があります。
そのため、
環境構築時にはumaskを確認する
というのは非常に重要です。
確認はこのコマンドだけでできます。
umask表示された数字が、現在の設定です。
よくある疑問を整理する
- umaskはどこで設定されている?
-
ログインシェルの設定ファイル(.bashrcや.profileなど)で設定されることが多いです。
環境によってはシステム全体設定がされている場合もあります。
- umaskはあとから変更できる?
-
可能です。シェル上で
umask 022のように設定できます。ただし、そのシェル内だけ有効です。
- chmodとの違いは?
-
chmodは「すでに存在するファイルの権限を変更するコマンド」。
umaskは「これから作るファイルの初期値を決める設定」です。
役割がまったく違います。
まとめ
umaskは、最初はとても分かりにくい概念です。
しかしポイントはシンプルです。
- ファイルのベースは666
- ディレクトリのベースは777
- umaskは「引き算」
- 実際の権限 = ベース − umask
この4つを覚えておけば、混乱することはほとんどありません。
そして実務では、
- チーム開発の権限トラブル回避
- セキュリティ強化
- サーバー設定の理解
といった場面で確実に役立ちます。
なんとなく数字を覚えるのではなく、
「なぜその権限になるのか」を理解しておくと、トラブル対応のスピードが大きく変わります。
umaskは地味な存在ですが、Linuxを扱ううえで避けて通れない基本概念です。
数字の引き算の意味が腹落ちしたら、、だいたいいけます!(たぶん笑)

