Linuxで新しくファイルやディレクトリを作成すると、自動的にパーミッション(アクセス権)が設定されます。
この「初期のアクセス権」はどのように決まっているのでしょうか?
その仕組みに関係しているのが、umask
(ユー・マスク)というコマンドです。
umask
は、ユーザーがファイルやディレクトリを作成する際に、どのパーミッションを制限するかを設定するコマンドです。
本記事では、umask
の基本的な使い方から、実際の設定例、確認方法、注意点までわかりやすく解説します。
初心者の方でもすぐに理解できる内容にしていますので、ぜひ最後までご覧ください。
umaskとは?仕組みと役割を解説
Linuxでは、ファイルやディレクトリを作成する際に「デフォルトパーミッション」という初期値が存在します。
この初期値に対して「差し引く形」でアクセス権を制限するのが、umask
の役割です。
具体的には、以下のような流れでパーミッションが決定されます。
- ファイル作成時のデフォルトパーミッション:
666
- ディレクトリ作成時のデフォルトパーミッション:
777
- 実際のパーミッション = デフォルトパーミッション - umask値
たとえば、umaskが022
の場合:
- ファイル:
666 - 022 = 644
→rw-r--r--
- ディレクトリ:
777 - 022 = 755
→rwxr-xr-x
このように、umaskはセキュリティや作業効率に関わる重要な設定の一つです。
現在のumask値を確認する方法
自分のシステムでどのようなumaskが設定されているかは、以下のコマンドで確認できます。
umask
実行結果は通常、数字3桁または4桁(先頭が0)の形式で表示されます。
例:
$ umask
0022
この場合、umask値は「022」と解釈されます。
4桁の場合、先頭の「0」は特別な意味(setuid、setgid、stickyビットの制御)を持つこともありますが、通常は3桁として考えて問題ありません。
umaskの変更方法(一時的・恒久的)
一時的にumaskを変更する
コマンドライン上でumaskを変更する場合は、以下のようにします。
umask 077
この設定では、新規ファイルのパーミッションは600
(rw——-)
新規ディレクトリのパーミッションは700
(rwx——)となります。
ただし、この変更はログアウトすると元に戻ります。
恒久的にumaskを変更する
恒久的に設定したい場合は、以下のようなシェルの設定ファイルに記述します。
- bashの場合:
~/.bashrc
または~/.bash_profile
- zshの場合:
~/.zshrc
- システム全体に適用する場合:
/etc/profile
や/etc/bash.bashrc
例(bashの場合):
echo "umask 027" >> ~/.bashrc
source ~/.bashrc
この設定では、新しいファイルは640
、新しいディレクトリは750
になります。
umaskの具体例と解説
umask 022(デフォルトで多い設定)
- ファイル:
644
(rw-r–r–) - ディレクトリ:
755
(rwxr-xr-x)
→ 他ユーザーに読み取り権限を与える一般的な設定。
umask 077(セキュリティ重視)
- ファイル:
600
(rw——-) - ディレクトリ:
700
(rwx——)
→ 他人に見せたくない機密ファイルや個人フォルダ向け。
umask 002(グループでの共同作業向け)
- ファイル:
664
(rw-rw-r–) - ディレクトリ:
775
(rwxrwxr-x)
→ グループメンバーとファイルを共有する場合に便利。
umaskの注意点と落とし穴
実行権限が自動で付かない?
ファイルのデフォルトパーミッションは666
なので、umaskで実行権限を与えることはできません。
たとえばスクリプトを作成しても、chmod +x
で明示的に実行権限を付与する必要があります。
touch script.sh
chmod +x script.sh
アプリケーションが独自にumaskを変更している場合がある
アプリによっては、自動的にumaskを設定し直すものもあります。
cronやsystemdなどで実行されるプロセスでは、別途umaskを設定する必要がある場合があります。
例:systemdサービスファイル内で指定
[Service]
UMask=0077
umaskの8進数と2進数の関係
umask値は「8進数」で表現されていますが、実際には「2進数(ビット)」として処理されます。
以下のような対応になります:
権限ビット | 2進数 | 8進数 |
---|---|---|
rwx | 111 | 7 |
rw- | 110 | 6 |
r– | 100 | 4 |
— | 000 | 0 |
umask値を2進数に変換して考えると、どのビットがマスク(無効)されるのかが理解しやすくなります。
たとえば umask 022 は、
- 所有者:000(制限なし)
- グループ:010(書き込み不可)
- その他:010(書き込み不可)
となり、結果としてファイルはrw-r--r--
になります。
まとめ:umaskを理解して安全で快適な環境を構築しよう
umask
は一見地味な存在ですが、ファイルやディレクトリのセキュリティと利便性に大きく影響します。
特に複数人で作業するサーバーや業務環境では、適切なumask設定がトラブル防止に繋がります。
本記事のポイント
umask
は、ファイルやディレクトリ作成時のパーミッションを制限する仕組み。umask
の値を変更することで、デフォルトのアクセス権をコントロールできる。- 一時的変更はコマンドで、恒久的変更は設定ファイルに記述。
- セキュリティ重視・グループ共有など、用途に合わせて設定を使い分ける。
あなたの環境に合ったumask
値を見直すことで、より安全でスムーズなLinuxライフを送りましょう。