umask とは何か?

umask(ユーザーファイル作成モードマスク)は、新しく作成されたファイルとディレクトリに割り当てられるデフォルトのパーミッションを制御する Linux および Unix の設定です。パーミッションを直接設定する代わりに、umask は新しいファイルまたはディレクトリが作成されるときにシステムのデフォルトから削除すべきパーミッションビットを定義します。

システムはファイルの場合 666(すべてのユーザーに読み取りと書き込み)、ディレクトリの場合 777(すべてのユーザーに読み取り、書き込み、実行)のベースパーミッションで開始します。その後、umask は論理 AND-NOT 演算を使用してこれらのデフォルトからビット単位で減算され、最終的なパーミッションが生成されます。たとえば、umask が 022 の場合、新しいファイルは 644、新しいディレクトリは 755 になります。

各 umask の桁はパーミッションクラスに対応します。最初の桁は所有者に、2 番目の桁はグループに、3 番目の桁はその他に影響します。0 の桁はパーミッションがマスクされないことを意味し、7 はそのクラスのすべてのパーミッションを削除します。

ツールの説明

Linux umask 計算機は、umask 値とベースパーミッションを 8 進数表記とシンボル表記の両方で結果的に有効なパーミッションに変換します。また、正確な umask シェルコマンドを生成し、システム管理者、開発者、DevOps エンジニアがシェル、スクリプト、またはシステム設定に適用する前に umask の結果をプレビューするのに役立ちます。

Umask ベース 結果の 8 進数 シンボル表記
022 666 644 rw-r--r--
022 777 755 rwxr-xr-x
077 666 600 rw-------
027 777 750 rwxr-x---
002 666 664 rw-rw-r--

機能

  • 任意の umask から結果の 8 進数およびシンボルパーミッションを計算
  • 3 桁および 4 桁(先頭のスティッキー/setuid ビット付き)の umask 値に対応
  • 一般的な umask プリセット(022、027、077、002、007、000)
  • ファイル(666)およびディレクトリ(777)のベースパーミッションプリセット
  • すぐに使用できる umask シェルコマンドを生成

ユースケース

  • サーバーのセキュリティ強化: /etc/profile またはユーザーのシェル設定に追加する前に、077 などのより厳密な umask をプレビューして、新しいファイルがプライベートであることを確認します。
  • 共有開発環境: 002 または 007 がコラボレーティブプロジェクトディレクトリのグループ書き込み可能なファイルを生成することを確認します。
  • デプロイメントスクリプト: CI/CD パイプラインまたはコンテナエントリポイントで使用される umask が、アプリケーションログとアップロードされたアセットに対して予想されるファイルパーミッションを生成することを確認します。

仕組み

最終的なパーミッションは、各クラス(所有者、グループ、その他)に対して次の式を使用して計算されます。

final = base AND (NOT umask)

各 8 進数の桁は独立して処理されます。umask の桁が 2(バイナリ 010)でベースの桁が 6(バイナリ 110)の場合、結果は 110 AND NOT 010 = 100 となり、4(読み取り専用)に等しくなります。4 桁の umask の先頭の桁は特殊ビット(setuid、setgid、スティッキー)を制御し、標準的なパーミッション計算では無視されます。

ヒント

  • ベースとして 666 を使用して新しいファイルのパーミッションを確認し、777 を新しいディレクトリに使用します。
  • umask が 000 の場合、パーミッションは削除されません。これは厳密に制御された隔離された環境でのみ有用です。
  • umask を永続的にするには、生成されたコマンドを ~/.bashrc~/.profile、または /etc/profile に追加します。これは、必要なスコープによって異なります。