Ubuntuでumaskを変え、新規ファイルの権限がどう変わるか確かめる

Linux・CLI・DevOpsカテゴリを表すパンダのイラスト Linux・CLI・DevOps

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Linuxのファイル権限とumaskの公開仕様を確認し、一時ディレクトリで安全に差を観察しながら、サービス運用での意味まで整理しています。

検証ステータス:📘 仕様確認済み・実行未検証

umask 022077 は暗記しがちですが、重要なのは新しく作るファイルやディレクトリに、最初からどの権限を与えないかを決める仕組みだということです。

まず試す

d=$(mktemp -d)
cd "$d"

umask 022
touch a.txt
stat -c '%a %n' a.txt

一般的には次のようになります。

644 a.txt

次に変更します。

umask 077
touch b.txt
stat -c '%a %n' b.txt

今度は通常、

600 b.txt

になります。

「666 – 022」と単純な引き算ではない

説明で 666 - 022 = 644 と書かれることがありますが、umaskの本質は算術の引き算ではなく、許可ビットからマスクされたビットを落とすことです。

通常ファイルは実行ビットを最初から付けないため基準は主に 666、ディレクトリは 777 が基準になります。

flowchart LR
A[作成時の基準mode] --> B[umaskで禁止bitを落とす]
B --> C[実際の初期mode]

ディレクトリでは結果が違う

umask 022
mkdir dir022

umask 077
mkdir dir077

stat -c '%a %n' dir022 dir077

一般的には 755700 の差を観察できます。

つまりumaskは、通常ファイルだけでなく新規ディレクトリにも効きます。

chmodとの違い

  • umask: これから新規作成するものの初期権限に影響

  • chmod: すでに存在するもののmodeを変更

umask 077 に変えても、既存の 644 ファイルが自動で 600 にはなりません。

仕事でどう使えるか

特に有効なのは、アプリやバッチが秘密を含むファイルを生成するケースです。

  • バックアップファイル

  • 一時ファイル

  • APIレスポンスの保存

  • 秘密鍵や設定ファイル

  • バッチの出力ログ

  • サービスが生成する作業ファイル

たとえば処理開始時に umask 077 を明示すれば、そのプロセスから作るファイルを他ユーザーから読みにくい初期状態にできます。

shellで確認したumaskとサービスのumaskは同じとは限らない

systemdサービス、cron、コンテナ、アプリケーション自身が別のumaskを設定している場合があります。

「自分のSSHセッションでは077だからサービスも077だろう」と考えず、実際にどの実行コンテキストでファイルを作っているかを確認します。

systemdではユニット設定の UMask= で明示できるケースがあります。

注意点

umaskを厳しくすれば常に良いわけではありません。複数ユーザーやグループで共有するファイルを 077 で作ると、必要な共同作業まで妨げることがあります。

実務では、

  1. 誰が読む必要があるか

  2. 誰が書く必要があるか

  3. 新規作成時から制限すべきか

  4. group共有が必要か

を決めてから値を選びます。

後始末

cd /
rm -rf "$d"

まとめ

  • umaskは新規作成時の初期権限を制御する

  • chmodとは役割が違う

  • 通常ファイルとディレクトリでは基準modeが違う

  • サービスではshellとは別のumaskになる場合がある

  • 秘密を含む生成物では明示的なumaskが事故防止に役立つ

公式情報・一次情報

文書情報

記事タイトル
Ubuntuでumaskを変え、新規ファイルの権限がどう変わるか確かめる
作成日
更新日
Source URL
https://papanda925.com/?p=15386

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました