umaskとは?新規ファイルのデフォルトパーミッション
umaskは、新しく作成されるファイルやディレクトリからデフォルトで取り除かれるパーミッションビットを決定する設定です。
プログラムがファイルを作成するとき、一連のパーミッションを要求しますが、umaskがそのうちのいくつかをマスクします。umaskは、作成したプログラムが広いパーミッションを要求しても、新しいファイルが通常は全ユーザー書き込み可能にならない理由です。CIでは、umaskがbuildの生成するファイルのパーミッションを静かに形作ります。
umaskとは何か
umaskは、プログラムがファイルを作成するときに要求するモードからパーミッションビットを差し引く、プロセスごとの設定です。一般的なumask 022は、グループとその他の書き込みパーミッションを取り除きます。
計算の仕組み
ファイルは通常モード666で、ディレクトリは777で要求されます。umaskが差し引かれ、umask 022ではファイルは644、ディレクトリは755になります。umaskはパーミッションを追加することはなく、取り除くだけです。
表示と設定
- 引数なしの
umaskは現在の値を表示します。 umask 077は新しいファイルを所有者専用にします。- 変更は現在のシェルとその子に適用されます。
umask対chmod
chmodは既存のファイルのパーミッションを変更し、umaskはまだ作成されていないファイルのデフォルトを変更します。両者は連携します。umaskがベースラインを設定し、chmodが後で個々のファイルを調整します。
CIにおけるumask
runnerのumaskは、生成されるファイルやartifactのデフォルトパーミッションを決定します。意外に緩いumaskはシークレットや出力を意図より開放してしまい、厳しすぎるものは共有ファイルを後続のステップから読めなくすることがあります。
マネージドrunnerでの妥当なデフォルト
Latchkeyのrunnerでは、デフォルトのumaskがbuild出力に妥当なファイルパーミッションを与えます。ステップが機密ファイルを書き込むときは、より厳しいumask (077など) を設定するか、後でchmodしてプライベートに保ってください。
重要なポイント
- umaskは、新しく作成されるファイルからデフォルトでパーミッションビットを取り除きます。
- umask 022では、新しいファイルは644、ディレクトリは755になります。
- CIでは、umaskが生成されるファイルやartifactのパーミッションを形作ります。