= Umask 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Umask 組込みコマンド

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

[[syntax]]
== 構文

- +umask {{マスク}}+
- +umask [-S]+

[[description]]
== 説明

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

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

[[options]]
== オプション

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

[[operands]]
== オペランド

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

=== 数値形式

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

0400:: ユーザの読み取り権限
0200:: ユーザの書き込み権限
0100:: ユーザの実行権限
0040:: グループの読み取り権限
0020:: グループの書き込み権限
0010:: グループの実行権限
0004:: その他の読み取り権限
0002:: その他の書き込み権限
0001:: その他の実行権限

=== 記号形式

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

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

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

+u+:: ユーザ
+g+:: グループ
+o+:: その他
+a+:: ユーザ・グループ・その他の全て

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

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

+=+:: {{対象}}に対する設定を{{権限}}にします。
+&#43;+:: {{対象}}に対する設定に{{権限}}を加えます。
+-+:: {{対象}}に対する設定から{{権限}}を除きます。

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

+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+ を実行すると、ユーザの読み取り権限と書き込み権限と実行権限をマスクしないようにし、グループとその他の読み取り権限をマスクしないようにし、グループとその他の書き込み権限をマスクするようにします。

[[exitstatus]]
== 終了ステータス

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

[[notes]]
== 補足

Ulimit コマンドは{zwsp}link:builtin.html#types[準特殊組込みコマンド]です。

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

// vim: set filetype=asciidoc expandtab:
