# Umask 組込みコマンド

Umask 組込みコマンドはシェルプロセスのファイルモード作成マスクを表示・設定します。

## 構文

- `umask マスク`

- `umask [-S]`

## 説明

オペランドが与えられていないとき、umask コマンドはシェルプロセスの現在のファイルモード作成マスクを標準出力に出力します。`-S` (`--symbolic`) オプションで出力の形式を指定できます。出力はオペランドとして再利用可能な形式になっています。

オペランドが与えられているとき、umask コマンドはシェルプロセスのファイルモード作成マスクを与えられたオペランドの値に設定します。

## オプション

`-S`
`--symbolic`

  このオプションが指定されているときは、記号形式でファイルモード作成マスクを出力します。このオプションが指定されていないときは、数値形式で出力します。

## オペランド

マスク

  このオペランドが与えられているときは、umask コマンドはファイルモード作成マスクをこの値に設定します。値は以下に述べる数値形式と記号形式のどちらかで与えます。

### 数値形式

数値形式は 0 以上の八進整数でマスクを指定します。これは以下の各モードを表す自然数のいくつかの和です。

0400

  ユーザの読み取り権限

0200

  ユーザの書き込み権限

0100

  ユーザの実行権限

0040

  グループの読み取り権限

0020

  グループの書き込み権限

0010

  グループの実行権限

0004

  その他の読み取り権限

0002

  その他の書き込み権限

0001

  その他の実行権限

### 記号形式

記号形式は以下のような書式の記号列でマスクしない権限を指定します。

記号列は一つ以上の節をカンマ (`,`) で区切ったものです。 節は対象の列と一つ以上の動作からなります。

対象には以下の記号をいくつでも指定できます。

`u`

  ユーザ

`g`

  グループ

`o`

  その他

`a`

  ユーザ・グループ・その他の全て

対象が一つも指定されていない場合は `a` が指定されているものとみなします。

動作は以下の演算子と権限の組み合わせです。 演算子は以下のどれかです。

`=`

  対象に対する設定を権限にします。

`+`

  対象に対する設定に権限を加えます。

`-`

  対象に対する設定から権限を除きます。

権限は以下のどれかです。

`r`

  読み取り権限

`w`

  書き込み権限

`x`

  実行権限

`X`

  実行権限 (元々実行権限が設定されていた場合のみ)

`s`

  Set-user-ID, Set-group-ID

`u`

  現在のユーザの値

`g`

  現在のグループの値

`o`

  現在のその他の値

`r`, `w`, `x`, `X`, `s` の記号同士は一度に組み合わせて指定できます。

例えば `umask u=rwx,go+r-w` を実行すると、ユーザの読み取り権限と書き込み権限と実行権限をマスクしないようにし、グループとその他の読み取り権限をマスクしないようにし、グループとその他の書き込み権限をマスクするようにします。

## 終了ステータス

ファイルモード作成マスクが正しく出力または設定できたときは、終了ステータスは 0 です。エラーがあると終了ステータスは非 0 です。

## 補足

Ulimit コマンドは​必須組込みコマンドです。

POSIX は `-S` オプションを指定しなかった場合の出力形式が必ずしも数値形式であるとは規定していません。