umask コマンドは、新しく作成するファイルやディレクトリに適用されるデフォルトのパーミッションを制御する コマンドです。
ファイルやディレクトリの「不要な権限をマスクする(取り除く)」役割を持ち、セキュリティやアクセス制御において重要です。
構文(Syntax)
umask [オプション] [マスク値]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 現在の umask 値を表示 | umask |
-S | シンボリック形式で表示 | umask -S |
VALUE | umask 値を設定(8進数またはシンボリックモード) | umask 022 / umask u=rwx,g=rx,o=rx |
umask の仕組み
- Linux では通常、ファイル作成時の最大パーミッションは以下:
- ファイル:
666(rw-rw-rw-) - ディレクトリ:
777(rwxrwxrwx)
- ファイル:
umaskの値を 引き算(マスク) することで、実際のパーミッションが決定します。
例:
最大 666 (ファイル) - umask 022 = 644 (rw-r--r--)
最大 777 (ディレクトリ) - umask 022 = 755 (rwxr-xr-x)
実行例
現在の umask を確認
umask
出力例:
0022
シンボリック形式で確認
umask -S
出力例:
u=rwx,g=rx,o=rx
umask を一時的に変更
umask 077
touch secret.txt
ls -l secret.txt
出力例:
-rw------- 1 user user 0 Aug 21 12:00 secret.txt
(所有者以外アクセス不可)
ディレクトリ作成時の影響
umask 002
mkdir shared
ls -ld shared
出力例:
drwxrwxr-x 2 user user 4096 Aug 21 12:10 shared
(グループも書き込み可能)
シンボリック指定で設定
umask u=rwx,g=rx,o=
mkdir private
ls -ld private
出力例:
drwxr-x--- 2 user user 4096 Aug 21 12:15 private
エラー例(不正な値を指定)
umask 999
出力例:
bash: umask: 999: invalid symbolic mode operator
関連コマンド
chmod: 既存ファイル・ディレクトリの権限を変更chown: 所有者を変更install: コピー時に権限を直接指定可能
備考
umaskの設定はシェルのセッション単位で有効です。ログイン時の初期設定は/etc/profileや~/.bashrcなどで指定されることが多いです。- サーバー環境では、セキュリティのために
022または077が一般的に設定されます。 - ファイルとディレクトリで「最大パーミッション」が異なる点に注意が必要です。
参考
- manページ: man7.org umask(2)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント