Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

umaskコマンド(アユーマスク)とは | 意味や読み方など丁寧でわかりやすい用語解説

umaskコマンド(アユーマスク)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ユーザーマスク (ユーザーマスク)

英語表記

umask command (ユーマスク コマンド)

用語解説

umaskコマンドは、LinuxやUnix系のオペレーティングシステムにおいて、新しくファイルやディレクトリを作成する際に適用されるデフォルトのパーミッション(アクセス権限)を制御するための重要なコマンドである。このコマンドは、ユーザーが意図しないアクセス権限を持つファイルやディレクトリが作成されることを防ぎ、システム全体のセキュリティを維持する上で不可欠な役割を果たす。システムエンジニアを目指す上で、ファイルパーミッションの概念とumaskの働きを正確に理解することは、基本的なシステム管理能力の基盤となる。

umaskは「ユーザーファイル作成モードマスク」の略であり、その名の通り、ファイルやディレクトリが作成される際に適用されるパーミッションを「マスク」する。具体的には、umask値によって「許可しない」権限が指定され、これにより最終的なパーミッションが決定される。パーミッションは通常、所有者(User)、グループ(Group)、その他(Other)の三つのカテゴリに対し、それぞれ読み込み(Read)、書き込み(Write)、実行(Execute)の権限が与えられるかどうかで表現される。これらはしばしば、8進数(例: 755や644)またはシンボリック(例: rwxr-xr-x)で表現される。

ファイルやディレクトリが作成される際、システムはまず最大パーミッションという概念で権限を設定しようとする。通常、ファイルに対しては「666」(rw-rw-rw-、すべてのユーザーに読み書きを許可)、ディレクトリに対しては「777」(rwxrwxrwx、すべてのユーザーに読み書き実行を許可)が初期の最大パーミッションとして想定される。この最大パーミッションから、umask値で指定された「許可しない」権限が差し引かれることで、最終的なパーミッションが計算される。ここで重要なのは、umask値は「与える権限」ではなく「取り除く権限」を指定するという点である。

umask値自体も8進数で表現され、通常は3桁または4桁の数値で表される。最も左の桁は特殊パーミッション(SetUID, SetGID, Sticky Bit)を制御するが、一般的なファイル作成においてはほとんど使用されないため、通常は無視されるか「0」が設定される。続く3桁がそれぞれ「所有者」「グループ」「その他」に対するマスク値を表す。例えば、「022」というumask値の場合、先頭の「0」は特殊パーミッションを意味し、次の「2」はグループ、最後の「2」はその他に対してそれぞれ「書き込み」権限(8進数で2は書き込みを意味する)を許可しないことを示す。

umask値から最終的なパーミッションを計算する方法は次の通りである。

  1. ファイルの場合: 最大パーミッション666 (rw-rw-rw-) からumask値で指定された「許可しない」権限を差し引く。
  2. ディレクトリの場合: 最大パーミッション777 (rwxrwxrwx) からumask値で指定された「許可しない」権限を差し引く。

例えば、umask値が「022」の場合を考える。

  • ファイル作成時:
    • ファイルに設定可能な最大パーミッションは666 (rw-rw-rw-)。
    • umask 022 は、グループの書き込み権限(2)とその他の書き込み権限(2)を許可しないと指定している。
    • したがって、666からグループとその他の書き込み権限が取り除かれ、ファイルのパーミッションは 644 (rw-r--r--) となる。これは所有者には読み書きを許可し、グループとその他には読み込みのみを許可することを意味する。
  • ディレクトリ作成時:
    • ディレクトリに設定可能な最大パーミッションは777 (rwxrwxrwx)。
    • umask 022 は、グループの書き込み権限(2)とその他の書き込み権限(2)を許可しないと指定している。
    • したがって、777からグループとその他の書き込み権限が取り除かれ、ディレクトリのパーミッションは 755 (rwxr-xr-x) となる。これは所有者には読み書き実行を許可し、グループとその他には読み込みと実行を許可することを意味する。

umaskコマンドを単独で実行すると、現在のumask値が表示される。例えば、umask と入力すると「0022」や「0002」といった値が返される。この値を変更するには、umask 022 のようにコマンドの後ろに設定したい8進数値を指定する。この変更は現在のシェルセッションにのみ適用されるため、永続的に設定を変更したい場合は、ユーザーのホームディレクトリにある.bashrc.profileといったシェル設定ファイル、あるいはシステム全体に適用する/etc/profile/etc/bashrc/etc/login.defsなどのファイルに記述する必要がある。

適切なumask値を設定することは、システムのセキュリティを確保する上で非常に重要である。例えば、共有サーバー環境でumaskが不適切に設定されていると、他のユーザーが意図せず重要なファイルの内容を読み取ったり、改変したりする可能性が生じる。逆に、あまりにも厳しすぎるumask値は、共同作業を妨げたり、アプリケーションの動作に支障をきたしたりする可能性がある。そのため、システムの利用目的やセキュリティポリシーに応じて、適切なumask値を選択することが求められる。

一般的なumask値としては、いくつかのパターンがよく用いられる。

  • 0022 (または 022): 最も一般的なデフォルト値であり、新しく作成されるファイルやディレクトリに対し、所有者には読み書き実行権限(ファイルの場合は読み書きのみ)、グループとその他には書き込み権限を与えない。これにより、ユーザー自身が作成したファイルが不用意に他のユーザーによって変更されることを防ぐ。
  • 0002 (または 002): 主に複数のユーザーが同じグループに属し、共同で作業を行う環境で用いられる。この値では、他のユーザー(グループメンバー以外)に書き込み権限を与えない。グループ内のメンバーには書き込み権限が許可されるため、共有作業がしやすくなる。
  • 0077 (または 077): 非常に厳格なセキュリティポリシーを持つ環境や、機密性の高いファイルを扱う場合に用いられる。所有者以外(グループ、その他)には一切の権限を与えないため、作成されたファイルは完全にプライベートなものとなる。

これらのumask値とパーミッションの関係を理解し、適切に設定する能力は、システムエンジニアとして安全で効率的なシステム運用を行う上で不可欠なスキルである。umaskは目に見えにくい設定だが、日々のファイル操作に常に影響を与えている基本的な仕組みの一つである。

関連コンテンツ