umaskの意味を例で理解する

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を扱ううえで避けて通れない基本概念です。

数字の引き算の意味が腹落ちしたら、、だいたいいけます!(たぶん笑)

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次