Linuxファイル権限の自動制御の要!umaskの実務設定と完全活用ガイド

概要

Linux環境において、新規作成されるファイルやディレクトリのデフォルトのアクセス権限を決定する umask の基本的な動作原理について解説します。8進数の計算方法から、共同作業ディレクトリの権限制御、シェルプロファイルを通じた恒久的な設定まで、実務ですぐに活用できる主要な管理手法をまとめます。

1. 現在のumaskの確認とデフォルトのファイル・ディレクトリ作成権限テスト

umask 設定および権限テスト用の実習ディレクトリを作成して移動するために、mkdir -p /tmp/umask-lab && cd /tmp/umask-lab コマンドを実行します。

mkdir -p /tmp/umask-lab && cd /tmp/umask-lab

umask コマンドは、新規作成されるファイルやディレクトリのデフォルトのアクセス権限を制限するマスク値を確認および設定します。
実行結果から、現在のセッションのデフォルトマスク値が 0022 に設定されていることが分かります。
⚙️ [主要オプション]

-S : マスク値を数値ではなく記号形式(u=rwx,g=rx,o=rx)の許可権限として分かりやすく出力します。
-p : 現在のマスク設定を再利用可能な umask コマンド形式の8進数で出力します。

umask

umask -S コマンドを実行すると、現在適用されているマスクに従ってユーザー(u)、グループ(g)、その他のユーザー(o)に実際に付与される許可権限を直感的な記号モードで確認できます。
出力された u=rwx,g=rx,o=rx は、所有者に読み取り・書き込み・実行権限が、グループおよびその他のユーザーには読み取り・実行権限がデフォルトで許可されていることを意味します。

umask -S

現在の umask 値(0022)が適用された状態でデフォルトの作成権限を確認するため、touch default_file.txt && mkdir default_dir コマンドで新規ファイルとディレクトリを作成します。

touch default_file.txt && mkdir default_dir

作成されたファイルとディレクトリの実際の権限を確認するために、ls -ld default_file.txt default_dir コマンドを実行します。
ディレクトリはデフォルトの最大権限 777 からマスク 022 が除外されて 755(drwxr-xr-x)で作成され、一般ファイルは実行権限が除外された最大デフォルト権限 666 からマスク 022 が除外されて 644(-rw-r--r--)で作成されていることが確認できます。

ls -ld default_file.txt default_dir

2. umask値の一時変更による新規ファイルの権限制御の実習

実習を行う専用の作業スペースを確認して移動するために、mkdir -p /tmp/umask-lab && cd /tmp/umask-lab コマンドを実行します。

mkdir -p /tmp/umask-lab && cd /tmp/umask-lab

umask 027 コマンドを実行して、現在のセッションのマスク値を 027 に一時的に変更します。
この設定は、グループユーザーに対する書き込み権限を制限し、その他のユーザー(他のユーザー)に対しては読み取り、書き込み、実行権限をすべて遮断するように指定します。

umask 027

変更された umask 値(027)が新規作成アイテムに正常に適用されるか確認するため、touch secure_file.txt && mkdir secure_dir コマンドでテスト用のファイルとディレクトリを作成します。

touch secure_file.txt && mkdir secure_dir

作成されたファイルとディレクトリの実際の権限を確認するために、ls -ld secure_file.txt secure_dir コマンドを実行します。
出力結果から、ディレクトリとファイルの詳細な権限状態および所有権情報を確認できます。

ls -ld secure_file.txt secure_dir

権限制御テストを終えた後、セッションのマスク設定を標準状態に戻すために umask 022 コマンドを実行してデフォルト値に復元します。

umask 022

3. チーム共同作業およびWebサーバー環境向け共有ディレクトリのumask設定

チームでの共同作業のための共有ディレクトリを作成し、作業パスへ移動するために mkdir -p /tmp/umask-lab/shared && cd /tmp/umask-lab コマンドを実行します。

mkdir -p /tmp/umask-lab/shared && cd /tmp/umask-lab

グループメンバー間での円滑な共同作業のためにグループ書き込み権限が維持されるよう、umask 002 コマンドを実行して現在のセッションのマスク値を変更します。
この設定は、デフォルト権限からその他のユーザーの書き込み権限のみを制限し、所有者とグループには読み取りおよび書き込み権限を両方許可するように指定します。

umask 002

変更された umask 値(002)が適用された状態で共同作業用ファイルとディレクトリを作成するために、touch shared/team_doc.txt && mkdir shared/team_project コマンドを実行します。

touch shared/team_doc.txt && mkdir shared/team_project

作成されたファイルとディレクトリの実際の権限を確認するために、ls -ld shared/team_doc.txt shared/team_project コマンドを実行します。
出力結果から、共有ディレクトリ内に作成された各アイテムの詳細な権限状態と所有権情報を確認できます。

ls -ld shared/team_doc.txt shared/team_project

共同作業環境のテストを終えた後、セッションのマスク設定を標準のセキュリティ状態に戻すために umask 022 コマンドを実行してデフォルト値に復元します。

umask 022

4. システム全体およびユーザー別のumask恒久適用方法

システム全体のデフォルト umask 設定値を確認するために、grep -n 'UMASK' /etc/login.defs コマンドを実行します。
出力結果から、151行目でシステムのデフォルト値として UMASK 022 が定義されていることが確認できます。

grep -n ‘UMASK’ /etc/login.defs

個別のユーザー設定であることを明示するコメントを追加するために、echo '# Custom user umask' >> ~/.bashrc コマンドを実行します。

echo ‘# Custom user umask’ » ~/.bashrc

新しいシェルセッションが開始されるたびにユーザーカスタム権限が自動適用されるよう、echo 'umask 027' >> ~/.bashrc コマンドを実行して設定を追加します。

echo ‘umask 027’ » ~/.bashrc

~/.bashrc ファイルの末尾に umask 関連の設定が正常に追加されたか確認するために、tail -n 2 ~/.bashrc コマンドを実行します。
出力結果から、コメントと umask 027 の設定がファイルの最後の2行に正しく反映されていることを確認できます。

tail -n 2 ~/.bashrc

編集した ~/.bashrc ファイルの設定を反映し、最終的なマスク値を確認するために bash -c 'source ~/.bashrc && umask' コマンドを実行します。
出力結果から、該当のシェル環境で適用されている現在のマスク状態を確認できます。

bash -c ‘source ~/.bashrc && umask’

ここまで、Linux環境でファイルおよびディレクトリの作成権限を自動制御する umask の基本概念と実務での設定方法について解説しました。
各自の運用環境やセキュリティポリシーに適した umask 値を適用し、安全で体系的なシステム管理を実現してみてください。