こんにちは。ナミレリです。今回はLinuxやMacなどのUnix系OSの「パーミッションを極める」をテーマにした2回目の記事でumaskについて詳しく紹介していきます。
前回の記事ではパーミッションの概要やよく記号と数字によるパーミッションの設定方法などを紹介しています。パーミッションについてイチから詳しく知りたい方は先にこちらをご覧ください。

この記事はこんな人にオススメ
- umaskは知ってるけど、002とか022とかなに?という方
- なんとなくコピペでumaskを設定している方
- パーミッション、umaskをしっかり理解したい方
例えば、ApacheでWEBサーバを構築した後に多くの担当者がSSHやSFTP等でファイルをアップロードしたり、すでにアップロードされているファイルを別の担当者が更新する時などに、どのようにパーミッションを設定しておくかセキュリティ観点でとても重要です。
この記事でわかること
- umaskのビットマスク演算
- umask 022の意味
- umask 002の意味
- umaskコマンドの使い方

パーミッションはとっつきにくく難解なイメージもありますが、一度理解してしまえばファイルやディレクトリを安全に扱うことが出来ますのでこれを機会にぜひパーミッションを極めてみましょう。
目次
umaskとは?
umaskとは、user maskの略でファイルやディレクトリを作成する際に、パーミッションを決定するための値です。
全てのファイルやフォルダにはパーミッションが設定されていますが、新しいファイルやフォルダを作成する際に、このumask に基づいてパーミッションが決定します。
umaskがどのようにパーミッションに影響するか説明していきます。
umaskをちゃんと理解する
ファイルの場合、最もパーミッションが緩い設定が666です。(下の表参照)
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 1 | 1 | 0 | 110 | 6 |
その他全て | 1 | 1 | 0 | 110 | 6 |
この最も緩いパーミッションに対して、umaskで許可しない権限を指定します。(下の表参照)
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 1 | 許可しない! | 0 | 100 | 4 |
その他全て | 1 | 許可しない! | 0 | 100 | 4 |
表のイメージのようにumaskで許可しない権限を指定します。ちなみにこの場合umaskは022です。(なぜ022なのかはこの後説明します)
ビットマスクで許可しない権限のビットを指定しますが、用語としてのビットマスクは下記引用の通りです。
論理演算の分野で、特定のビットをオンにしたりオフにしたりするために用いられるビットパターンを「ビットマスク」(bit mask)あるいは略してマスクという。
https://e-words.jp/w/マスク.html
ビットマスクの演算
ビットマスクの演算は以下のように行われます。デフォルトのパーミッションとumaskの否定との論理積です。
決定されるバーミッション = デフォルトのパーミッション & umaskの否定
AND(論理積)
NOT(否定)
ざっくりまとめ
少し小難しいですがざっくりまとめると、umaskは許可しないビットなので、まったく逆のビットが新しく作成されるパーミッションということになります。
下記サイトを参考にさせていただきました。
umaskの具体例
では下の式に従って良く使うパターンをみていきましょう。
決定されるバーミッション = デフォルトのパーミッション & umaskの否定
デフォルト777(ディレクトリ)でumaskが022の場合

①と③の論理積は、①と③でどちらも1の時だけ1となり、それ以外では0です。
デフォルト777(ディレクトリ)でumaskが002の場合

①と③の論理積は、①と③でどちらも1の時だけ1となり、それ以外では0です。
デフォルト666(ファイル)でumaskが022の場合

①と③の論理積は、①と③でどちらも1の時だけ1となり、それ以外では0です。
デフォルト666(ファイル)でumaskが002の場合

①と③の論理積は、①と③でどちらも1の時だけ1となり、それ以外では0です。
umaskコマンドの使い方
現在のマスク値を確認する
umaskに何も引数を付けずに実行するとマスク値が8進数で表示されます。また-Sオプションを使うと、新しく作成したファイルに設定されるパーミッションが記号表記で表示されます。
umask
022
umask -S
u=rwx,g=rx,o=rx
umask
002
umask -S
u=rwx,g=rwx,o=rx
macOSは特殊なので別の機会にしますが、Linuxの場合は/etc/profileにデフォルトのマスク値が設定されています。AWSのEC2、AmazonLinuxで確認してみます。
cat /etc/profile
55 # By default, we want umask to get set. This sets it for login shell
56 # Current threshold for system reserved uid/gids is 200
57 # You could check uidgid reservation validity in
58 # /usr/share/doc/setup-*/uidgid file
59 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
60 umask 002
61 else
62 umask 022
63 fi
.zshrcにumaskを設定する
zshの場合は、.zshrcにumaskを設定することができます。下のようにシンプルに8進数で指定できます。
vi ~/.zshrc
・・中略
umask 022
・・中略
本気で学ぶ Linux実践入門 サーバ運用のための業務レベル管理術
最後に
最後まで読んでいただきありがとうございます。【Linux】パーミッションを極める(umask編)はいかがでしたでしょうか。ApacheでWEBサーバを構築した後に多くの担当者がSSHやSFTP等でファイルをアップロードしたり、すでにアップロードされているファイルを別の担当者が更新する時などに、どのようにパーミッションを設定しておくかわからない場合もあると思います。
パーミッションはとっつきにくく難解なイメージもありますが、一度理解してしまえばファイルやディレクトリを安全に扱うことが出来ますのでぜひ覚えてください。
MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。
Amazonの電子書籍読み放題サービス「Kindle Unlimited」でプライム会員を対象に、最初の3か月間を無料体験できるキャンペーンを実施中。マンガ、小説、ビジネス書、雑誌など500万冊から、好きな本を何冊でも読めるキャンペーンです。
初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。
