umask 新しく作るファイルの標準の権限を決める値を表示・設定する
umask [-S] [マスク]試してみる
umask今のマスク値を表示します。
umask -S-S を付けると、許可される権限を記号の形式で表示します。
touch file022 && mkdir dir022 && ls -ld file022 dir022マスクが 0022 のとき、ファイルは 644、ディレクトリは 755 で作られます。
umask 077マスクを 077 に変更します。グループとその他の権限をすべて取り除く設定です。
touch file077 && mkdir dir077 && ls -ld file077 dir077ファイルは 600、ディレクトリは 700 で作られます。
umask 022 && umask元の値に戻します。
主なオプション
-S | マスクではなく、許可される権限を u=rwx,g=rx,o=rx のような記号で表示する |
|---|---|
マスク | 8進数で指定する(例 022)。指定したビットの権限が取り除かれる |
解説
マスクの意味
umask は、新しく作るファイルやディレクトリの権限から「取り除く権限」を表す値です。基本の権限から、マスクで指定した分を除いたものが実際の権限になります。
- ファイルの基本の権限は 666(実行権限は付けない)
- ディレクトリの基本の権限は 777
マスクが 022 のとき、ファイルは 666 から 022 を除いた 644、ディレクトリは 777 から 022 を除いた 755 になります。マスクが 077 なら、ファイルは 600、ディレクトリは 700 です。
引き算ではなくビットの除去
実際には、数値の引き算ではなく、マスクのビットが立っている権限を取り除く動作です。ファイルの基本が 666 なので、マスクが 002 でもファイルは 664 になり、実行権限は決して付きません。
設定の範囲と永続化
umask は、そのシェル(とそこから起動するプロセス)だけに有効です。ログインのたびに適用したいときは、~/.bashrc や /etc/profile などに umask 022 のように書きます。
シェルの組み込みコマンド
umask は bash の組み込みコマンドです。type umask で、組み込みであることを確認できます。