
ファイルとディレクトリのパーミッション、ちゃんと理解してる?umaskをマスターして、セキュリティもバッチリな開発環境を構築しよう!
umaskとは?ファイルとディレクトリのパーミッションの基本
umask(ユーマスク)は、Unix系オペレーティングシステム(Linux、macOSなど)において、新規に作成されるファイルやディレクトリのデフォルトのパーミッション(アクセス権)を制御するためのコマンド、およびその設定値を指します。簡単に言うと、ファイルやディレクトリが作成されたときに、誰がそのファイル/ディレクトリに対してどんな操作(読み込み、書き込み、実行)ができるかを決定する、初期設定のようなものです。
パーミッションは、所有者(user)、グループ(group)、その他(others)の3つのカテゴリに対して、読み込み(read: r)、書き込み(write: w)、実行(execute: x)の権限を付与または拒否することで設定されます。これらの権限は通常、chmodコマンドで変更できます。
umaskは、これらのパーミッションのデフォルト値を設定するために使われます。umaskの値は、chmodで使用する数値モード(例: 777, 644)と関連しています。umaskの値は、許可される権限を「マスク」する(取り除く)役割を果たします。
umaskの数値表現と意味
umaskは通常、3桁または4桁の8進数で表現されます。例えば、022
や0022
などです。各桁は、所有者、グループ、その他の順に対応し、各桁の数値は、取り除くべき権限の組み合わせを表します。
数値の意味は以下の通りです。
* 0: 権限を取り除かない (許可)
* 1: 実行権限 (x) を取り除く
* 2: 書き込み権限 (w) を取り除く
* 4: 読み込み権限 (r) を取り除く
これらの値を組み合わせることで、複数の権限を同時に取り除くことができます。
例えば:
* 0
: 全ての権限を許可 (rwx)
* 1
: 実行権限を拒否 (-rw)
* 2
: 書き込み権限を拒否 (r-x)
* 3
: 書き込みと実行権限を拒否 (r–)
* 4
: 読み込み権限を拒否 (-wx)
* 6
: 読み込みと書き込み権限を拒否 (–x)
* 7
: 全ての権限を拒否 (—)
一般的に、ファイルには実行権限は不要なことが多いため、ファイルに対するumaskは022や0022がよく使われます。ディレクトリはアクセスするために実行権限が必要なので、umaskが022の場合、新規ディレクトリのパーミッションは755になります。
umaskの値と実際のパーミッションの関係は、次の計算式で求められます。
* ファイル: 666 – umask
* ディレクトリ: 777 – umask
例えば、umaskが022の場合:
* ファイル: 666 – 022 = 644 (-rw-r–r–)
* ディレクトリ: 777 – 022 = 755 (drwxr-xr-x)
umaskコマンドの使い方
umaskコマンドは、現在のumaskの値を確認したり、一時的に変更したりするために使用します。
現在のumask値の確認:
umask
このコマンドを実行すると、現在のumask値が表示されます。
umask値の変更:
umask 027
このコマンドは、現在のシェル環境において、umask値を027に変更します。この変更は、現在のシェルセッションの間のみ有効です。
永続的なumask値の変更:
umask値を永続的に変更するには、.bashrc
、.zshrc
などのシェル設定ファイルにumask
コマンドを記述します。これにより、新しいシェルセッションが開始されるたびに、指定したumask値が適用されます。
# 例: ~/.bashrcに以下を追記
umask 022
設定ファイルを変更した後は、source ~/.bashrc
コマンドなどで設定を読み込み直す必要があります。
注意点:
umask値を変更すると、その後のファイルやディレクトリの作成に影響するため、変更には注意が必要です。特に、重要なファイルやディレクトリに不適切なパーミッションが設定されることのないように、十分に理解した上で設定してください。
umask設定の例と具体的なパーミッション
いくつか具体的なumaskの設定例と、その結果として作成されるファイルとディレクトリのパーミッションを示します。
umask 000:
最も緩い設定です。新規ファイルは666 (-rw-rw-rw-)、新規ディレクトリは777 (drwxrwxrwx) で作成されます。
umask 022:
一般的な設定です。新規ファイルは644 (-rw-r–r–)、新規ディレクトリは755 (drwxr-xr-x) で作成されます。
umask 027:
やや厳しい設定です。グループとその他のユーザーに書き込み権限を与えません。新規ファイルは640 (-rw-r—–)、新規ディレクトリは750 (drwxr-x—) で作成されます。
umask 077:
最も厳しい設定の一つです。所有者のみがアクセスできます。新規ファイルは600 (-rw——-)、新規ディレクトリは700 (drwx——) で作成されます。
これらの例を参考に、セキュリティ要件や共有の必要性に応じて、適切なumask値を設定してください。
umaskとセキュリティ
umaskは、システムのセキュリティを維持するために重要な役割を果たします。適切なumask値を設定することで、意図しないユーザーによるファイルへのアクセスを防ぐことができます。
例えば、Webサーバーの設定ファイルやデータベースの接続情報など、機密性の高い情報を保存したファイルは、umask 077などで作成し、所有者のみが読み書きできるように制限することが推奨されます。
また、共有サーバー環境では、ユーザー間のファイルアクセスを制限するために、より厳しいumask値を設定することが一般的です。
しかし、過度に厳しいumask値を設定すると、必要なファイル共有が妨げられる可能性があるため、バランスを考慮する必要があります。
参考リンク
まとめ
umaskは、新規ファイルやディレクトリのデフォルトパーミッションを制御するための重要なツールです。適切なumask値を設定することで、セキュリティを強化し、意図しないファイルアクセスを防ぐことができます。umaskの数値表現、コマンドの使い方、セキュリティへの影響などを理解し、状況に応じて最適な設定を行いましょう。