umaskコマンドの使い方|パーミッション初期値の確認・変更と永続化コマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドU-Z, ユーザ・グループ管理コマンド > umaskコマンドの使い方|パーミッション初期値の確認・変更と永続化コマンド
「新規作成したファイルのパーミッションが思い通りにならない」
「なぜ644になるのか理由が分からない」
こうした疑問を解決するのが、umaskコマンドです。

この記事では、umaskの仕組みからパーミッション初期値の確認・変更方法、永続化の設定まで、実務で押さえておくべきポイントを解説します。
【この記事でわかること】
・umask はファイル・ディレクトリ新規作成時のパーミッション初期値を決める仕組み
・デフォルト umask 022 ではファイル=644、ディレクトリ=755 になる計算方法
・umask 002 でグループ書き込みを許可、umask 077 でセキュリティ強化
・設定を永続化するには ~/.bashrc または /etc/login.defs に記述する
・umask 000 は全員書き込み可能になるため本番環境では絶対に設定しない

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

umaskとは?パーミッションの初期値を決める仕組み

umask(ユーマスク)は、ファイルやディレクトリを新規作成したときに設定されるパーミッションの初期値を制御する仕組みです。

Linuxでは、ファイル作成時に付与できる最大のパーミッションが決まっています。

ファイル:666(rw-rw-rw-)
ディレクトリ:777(rwxrwxrwx)

この最大値からumask値を「引いた」値が、実際に設定されるパーミッションです。

たとえばumaskが 022 の場合:

・ファイル:666 - 022 = 644(rw-r--r--)
・ディレクトリ:777 - 022 = 755(rwxr-xr-x)

多くのLinuxディストリビューションでは、一般ユーザーのumaskは022がデフォルトです。

※ chmodは既存ファイルのパーミッションを変更するコマンド、umaskは新規作成時の初期値を設定する仕組みです。この違いを押さえておきましょう。

umaskコマンドの基本的な使い方

1. 現在のumask値を確認する

引数なしで実行すると、現在設定されているumask値を表示します。

$ umask 0022

4桁で表示されますが、先頭の0は特殊パーミッション(SUID/SGID/sticky bit)の部分なので、通常は下3桁の 022 を見てください。

2. umask値を変更する

umaskコマンドに値を指定すると、現在のシェルセッションのumask値が変更されます。

# umask値を002に変更する $ umask 002 # 確認する $ umask 0002 # ファイルを作って確認する $ touch test_002.txt $ ls -l test_002.txt -rw-rw-r-- 1 tanaka tanaka 0 3月 17 10:30 test_002.txt

umask 002 に変更したことで、ファイルのパーミッションが 664(rw-rw-r--)になりました。グループにも書き込み権限が付いています。

3. umask値とパーミッションの対応表

よく使うumask値と、その結果のパーミッションをまとめます。
umask値 ファイル ディレクトリ 用途
022 644 (rw-r--r--) 755 (rwxr-xr-x) 一般的なデフォルト
002 664 (rw-rw-r--) 775 (rwxrwxr-x) グループでの共同作業
077 600 (rw-------) 700 (rwx------) セキュリティ重視
027 640 (rw-r-----) 750 (rwxr-x---) グループ読み取りのみ許可

4. 記号形式で確認する(-Sオプション)

-S オプションを付けると、umask値を記号(シンボリック)形式で表示します。

$ umask -S u=rwx,g=rx,o=rx

これは「umask適用後にファイル/ディレクトリに許可されるパーミッション」を表しています。
上の例では、所有者(u)はrwx、グループ(g)はrx、その他(o)はrxが許可されます。

実務で使えるumask活用テクニック

5. umask値を永続化する

umaskコマンドで設定した値は、現在のシェルセッションが終了すると元に戻ります。永続化するには設定ファイルに記述します。

個人の設定:~/.bashrc に記述する

# ~/.bashrc に追記する $ echo "umask 002" >> ~/.bashrc # 設定を反映する $ source ~/.bashrc

システム全体の設定:/etc/profile または /etc/login.defs に記述する

# /etc/login.defs のUMASK設定を確認する $ grep UMASK /etc/login.defs UMASK 022

/etc/login.defs の UMASK はuseraddでユーザーを作成したときのデフォルト値に影響します。

6. 共有ディレクトリでグループ書き込みを許可する

チームで共有するディレクトリでは、umask 002 と SGID(Set Group ID)を組み合わせるのが定番です。

# 共有ディレクトリを作成する $ sudo mkdir /var/shared $ sudo chown :developers /var/shared $ sudo chmod 2775 /var/shared # 各ユーザーのumaskを002にしておく $ umask 002 # ファイルを作成すると、グループにも書き込み権限が付く $ touch /var/shared/report.txt $ ls -l /var/shared/report.txt -rw-rw-r-- 1 tanaka developers 0 3月 17 10:30 report.txt

SGIDを設定すると、そのディレクトリ内に作成されたファイルは親ディレクトリのグループを自動で引き継ぎます。

7. セキュリティを強化する(umask 077)

他のユーザーに一切アクセスさせたくない場合は、umask 077 を設定します。

$ umask 077 $ touch secret.txt $ ls -l secret.txt -rw------- 1 tanaka tanaka 0 3月 17 10:30 secret.txt

rootユーザーや、機密情報を扱うサービスアカウントでは umask 077 を設定するのがセキュリティのベストプラクティスです。

umaskのトラブルシュートとよくあるミス

umask値を変更したのに反映されない場合

umaskを変更したのに新しいファイルのパーミッションが変わらない場合、以下を確認してください。

別のシェルセッションで作業していないか:umaskの変更は現在のシェルにしか反映されません。新しいターミナルを開いた場合は設定ファイルに書かれた値に戻ります
アプリケーションが独自にパーミッションを設定していないか:一部のアプリケーション(Apache、MySQL等)は、設定ファイルで独自のumask値を持っています

# 現在のumask値を確認する $ umask # どの設定ファイルでumaskが設定されているか調べる $ grep -r "umask" /etc/profile /etc/bashrc ~/.bashrc ~/.bash_profile 2>/dev/null

【重要】umask 000 の危険性

umask 000 は「マスクなし」、つまりファイルは666(誰でも読み書き可能)、ディレクトリは777(誰でもフルアクセス可能)で作成されます。

これは重大なセキュリティリスクです。本番サーバーでは絶対に umask 000 を設定しないでください。

もし誤って設定してしまった場合は、すぐにumask値を戻し、意図しないパーミッションで作成されたファイルがないか確認しましょう。

# 誰でも書き込めるファイルを検索する $ find /var/www -perm -o+w -type f

本記事のまとめ

やりたいこと コマンド
現在のumask値を確認する umask
記号形式で確認する umask -S
umask値を変更する umask 002
セキュリティを強化する umask 077
永続化する(個人) echo "umask 002" >> ~/.bashrc
システムのデフォルトを確認する grep UMASK /etc/login.defs
誰でも書き込めるファイルを検索する find /パス -perm -o+w -type f

新規ファイルのパーミッションが意図どおりに設定できていますか?

コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。