PHPでは、 UMASK()関数を使用して、ファイルとディレクトリを作成するときにデフォルトの許可マスクを設定します。簡単に言えば、 Umaskは、システム内の新しく作成されたファイルまたはディレクトリの権限を制御します。これは、LinuxやMacOSなどのUNIXやUNIXのようなシステムで広く使用されているツールであり、開発者がファイルのセキュリティとアクセシビリティをより詳細に制御するのに役立ちます。
UNIXシステムでは、ファイル許可は、ユーザー(所有者)、ユーザーグループ(グループ)、およびその他のユーザー(その他)の3つのセットの数字で表されます。各許可のセットは、read(r)、write(w)、および実行(x)権限で構成され、通常はoctal数で表されます。たとえば、:
7 =読み取り、書き込み、およびアクセス許可(RWX)
6 =読み取りおよび書き込み許可(rw-)
5 =読み取りと実行許可(RX)
4 =許可を読む(r--)
3 = Permissions(wx-)を書き込み、実行する
2 =書き込み許可(W--)
1 =実行許可(x--)
0 =許可なし(---)
umask()関数を使用する場合、マスク値を渡すと、システムのデフォルトの許可設定に影響します。
PHPでは、 umask()関数の関数は、現在のファイル作成マスクを設定または取得することです。作成マスクは、PHPが新しいファイルまたはディレクトリを作成すると、デフォルトの許可値が「ビットごと)(および)操作であり、それにより最終ファイルアクセス許可を取得することを決定します。
たとえば、オペレーティングシステムのデフォルトの権限は777 (つまり、すべてのユーザーが許可を読み取り、書き込み、実行している)であり、 umask()が022に設定されている場合、作成された新しいファイルまたはディレクトリのアクセス許可は755になります(つまり、ユーザーは読み取り、書き込み、実行を実行します。
<span><span><span class="hljs-title function_ invoke__">umask</span></span><span>([</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$mask</span></span><span>]);
</span></span>
$ MASK :設定するファイル許可マスクを表すオプションの整数値です。引数が渡されない場合、 umask()は現在のマスク値を返します。
ファイルを作成するときに許可をいくつかのルールに従う必要がある場合は、 umask()を使用して設定できます。たとえば、ファイルの作成を設定する場合、ファイル所有者のみが許可を読み取り、書き込み、実行することが許可されますが、他のユーザーはファイルを読み取ることができます。マスクを0770に設定できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0770</span></span><span>);
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"example.txt"</span></span><span>, </span><span><span class="hljs-string">"w"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">"This is a test."</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この例では、作成されたファイルはユーザーグループや他のユーザーが許可を書き込むことはなく、ファイルの所有者のみが書き込み操作を行うことができます。
現在のシステムのファイルマスク設定を表示する場合は、パラメーターを渡すことなくumask()を呼び出すことができます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$current_umask</span></span><span> = </span><span><span class="hljs-title function_ invoke__">umask</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Current umask: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">sprintf</span></span><span>(</span><span><span class="hljs-string">"%04o"</span></span><span>, </span><span><span class="hljs-variable">$current_umask</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ここでは、 %04oを使用して、octal形式でumask値を出力します。
Umask()によって設定された許可マスクは、現在のPHPプロセスに効果的であり、PHPを介して作成された後続のファイルとディレクトリにのみ影響します。
プロセスが終了するか、PHPスクリプトの実行が完了すると、 umask()の設定が失われます。プロセスが終了すると、 umask()の設定がシステムのデフォルト値に復元されます。
umask()関数は、既存のファイルやディレクトリに影響を与えず、新しく作成されたファイルとディレクトリにのみ影響します。
セキュリティ制御:適切なUMASKを設定することにより、無関係な担当者はファイルの書き込み操作を防ぎ、機密データのセキュリティを保護できます。
ログファイル管理:ログファイルのより厳しい許可を設定して、特定のユーザーまたはプロセスのみがアクセスできるようにします。
一時的なファイルの作成:一時的なファイルを作成する場合、他のプロセスまたはユーザーがこれらのファイルにアクセスするリスクを減らすために適切なUMASKを設定します。
umask()は、ファイルやディレクトリを作成するときにPHP開発者が許可設定をカスタマイズするのに役立つ強力な機能です。 UMASKを適切に構成することにより、ファイルシステムのセキュリティと管理性を改善できます。開発環境では、 UMASK()の合理的な使用は、許可の問題を効果的に軽減し、潜在的なセキュリティリスクを回避できます。