デフォルトのアクセス権
Linuxシステムにおいて、ファイルやディレクトリのアクセス権は、セキュリティとシステム管理の基本的な要素です。ユーザーが新しいファイルやディレクトリを作成する際、システムは自動的にデフォルトのアクセス権を適用します。このデフォルトのアクセス権は、ファイルやディレクトリが作成された瞬間から、誰がそのリソースに対して何を行えるかを決定します。
デフォルトのアクセス権は、主にumask
(ユーザーマスク)と呼ばれるシステム設定によって制御されます。umask
は、ファイルやディレクトリに適用される初期のアクセス権を制限するための値であり、ユーザーが明示的にアクセス権を設定しない限り、この値が適用されます。適切なデフォルトのアクセス権設定は、システムのセキュリティを確保し、無許可のアクセスを防ぐために非常に重要です。
デフォルトのアクセス権の概要
ファイルやディレクトリには作成された時点でアクセス権が設定されます。この初期設定のアクセス権を「デフォルトのアクセス権」と呼びます。デフォルトのアクセス権は、通常は以下のように設定されています。
- ファイルのデフォルトのアクセス権: 0666
- ディレクトリのデフォルトのアクセス権: 0777
ユーザーがファイルやディレクトリを作成する際、シェルは初期アクセス権をそのまま適用するのではなく、初期のアクセス権からumask値を引いた値をデフォルトのアクセス権として設定します。
デフォルトのアクセス権の詳細
アクセス権の種類 | デフォルトの値 | 説明 |
---|---|---|
ファイル | 0666 | ユーザー、グループ、その他のすべてに読み取り(r)と書き込み(w)の権限が与えられます。 |
ディレクトリ | 0777 | ユーザー、グループ、その他のすべてに読み取り(r)、書き込み(w)、実行(x)の権限が与えられます。 |
先頭の数字の意味
ファイルやディレクトリのアクセス権は4桁の8進数で表されます。例えば、アクセス権が「0755」や「0644」のように表示されることがあります。これらの数字の意味を解説します。
- 最初の桁(先頭の数字): 特殊ビット (Setuid、Setgid、Sticky bit)
- 残りの3桁: 権限ビット (ユーザー、グループ、その他)
先頭の数字(特殊ビット)
特殊ビット | 説明 |
---|---|
4 (Setuid bit) | ファイルが実行されたときに、実行者がそのファイルの所有者の権限を得ることを示します。一般的に実行ファイルに設定され、プログラムが所有者の権限で動作するようにします。 |
2 (Setgid bit) | ファイルが実行されたときに、そのファイルのグループの権限を実行者が得ることを示します。また、ディレクトリに設定された場合、そのディレクトリ内で作成された新しいファイルやディレクトリは親ディレクトリのグループを継承します。 |
1 (Sticky bit) | ディレクトリに設定された場合、そのディレクトリ内のファイルは所有者しか削除できないことを示します。/tmpディレクトリなどに設定されることが多いです。 |
umask値
ユーザーがファイルやディレクトリを作成する際、シェルはこれらの初期アクセス権に「umask」値を適用します。umaskは、デフォルトのアクセス権から引かれる値です。umaskの値は、ファイルやディレクトリの最終的なアクセス権を決定するために使用されます。
umaskの計算方法
- デフォルトのアクセス権からumask値を引く。
- 引き算の結果が最終的なアクセス権となる。
例: umask値が0002の場合
例えば、umask値が0002の場合の計算例を示します。
ディレクトリのデフォルトのアクセス権
- 初期アクセス権: 0777 (rwxrwxrwx)
- umask値: 0002 (——-w-)
- デフォルトのアクセス権: 0777 – 0002 = 0775 (rwxrwxr-x)
ファイルのデフォルトのアクセス権
- 初期アクセス権: 0666 (rw-rw-rw-)
- umask値: 0002 (——-w-)
- デフォルトのアクセス権: 0666 – 0002 = 0664 (rw-rw-r–)
項目 | ディレクトリ | ファイル |
---|---|---|
初期アクセス権 | 0777 (rwxrwxrwx) | 0666 (rw-rw-rw-) |
umask値を引く | 0002 (——-w-) | 0002 (——-w-) |
デフォルトのアクセス権 | 0775 (rwxrwxr-x) | 0664 (rw-rw-r–) |
初期のアクセス権
ユーザーは初期のアクセス権を直接指定することはできませんが、umask値を変更することでデフォルトのアクセス権を間接的に制御することができます。umask値を設定することで、新しいファイルやディレクトリのデフォルトのアクセス権を適切なものに変更することが可能です。
初期のアクセス権の設定例
umask値を「0027」に設定することで、次のようなデフォルトのアクセス権が適用されます。
ディレクトリ作成時
- 初期アクセス権: 0777 (rwxrwxrwx)
- umask値: 0027 (—–rwx)
- デフォルトのアクセス権: 0777 – 0027 = 0750 (rwxr-x—)
ファイル作成時
- 初期アクセス権: 0666 (rw-rw-rw-)
- umask値: 0027 (—–rwx)
- デフォルトのアクセス権: 0666 – 0027 = 0640 (rw-r—–)※引き算するとマイナスの値になってしまう場合は0とみなされます。
このように、umask値を「0027」に設定することで、ディレクトリはグループメンバーが読み取りと実行ができ、その他のユーザーにはアクセス権が与えられない設定になります。一方、ファイルはグループメンバーが読み取り可能で、その他のユーザーにはアクセス権が与えられない設定になります。
まとめ
umask値を適用することで、システムは自動的に新しいファイルやディレクトリの適切なアクセス権を設定します。umask値を調整することで、デフォルトのアクセス権を適宜変更することが可能です。