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